Comparer deux colonnes sur deux feuilles

0

J'ai une autre question, même si la dernière que j'ai posée est toujours en attente. J'ai une grande quantité de données de plus de 100 000 enregistrements. J'utilise le code ci-dessous pour parcourir les données de sorte que la couleur d'arrière-plan de tout enregistrement dupliqué devienne rouge. Le code fonctionne bien, mais le traitement prend actuellement beaucoup de temps (15 à 20 minutes). Ma question est la suivante: puis-je faire quelque chose pour accélérer le processus?

Le code:

Dim wks As Worksheet, wrkb As Worksheet
Dim rng As Range, rngNew As Range
Dim intCount As Integer, intCount1 As Integer
Dim i As Integer, im As Integer

'Sheet1
Set wks = Worksheets("sheet1")
wks.Range("B2").Activate

'sheet2
Set wksb = Worksheets("sheet2")

' Return current data region.

Set rng = wks.Range("B1").CurrentRegion
Set rngNew = wksb.Range("B1").CurrentRegion

intCount = rng.Rows.Count
intCount1 = rngNew.Rows.Count

For i = 2 To intCount
            im = 2
    For im = 2 To intCount1

        If (rng.Cells(im, 2).Value = rngNew.Cells(i, 2).Value) Then

            rng.Cells(i, 2).Interior.ColorIndex = 3

    Exit For
        End If

    Next im
Next 

Merci pour ton aide

ondo
la source

Réponses:

1

Au lieu d'utiliser VBA pour parcourir les données en boucle, vous pouvez utiliser une mise en forme conditionnelle qui colorera les cellules en un instant.

VBA n'est pas la meilleure solution, simplement parce que c'est du code. Certaines fonctions Excel intégrées sont beaucoup plus efficaces et beaucoup plus rapides que n’importe quel code VBA.

Décrivez la disposition de la ou des feuilles de calcul et la logique que vous souhaitez appliquer aux cellules de code de couleur.

Ensuite, une mise en forme conditionnelle peut être suggérée. Je n'ai pas le temps d'ingénierie inverse de votre VBA dans une plage de classeurs.

Teylyn
la source
Merci Teylyn, j’utilisais autrefois la mise en forme conditionnelle, mais il me faut maintenant supprimer tous les doublons du tableau après la révision du rapport. C’est la raison de l’utilisation du code et j’ai également besoin de procéder à certains traitements sur la feuille de calcul. Pour le moment, cela doit être fait dans VBA jusqu'à ce que je transfère les données vers Access plus tard dans le futur. merci
ondo
1
Que diriez-vous de la commande "Supprimer les doublons" sur le ruban de données?
Teylyn
0

Une colonne d'assistance dans l'une de vos feuilles doit le faire, en utilisant une COUNTIFformule pour compter le nombre d'entrées correspondant à une condition dans l'autre feuille. Ajoutez ensuite un format conditionnel, coloriant les cellules en rouge si la formule retourne> 0.

Et ce que @teylyn a dit à propos de VBA est tout à fait juste - à éviter si vous pouvez le faire avec une fonction.

Benshepherd
la source
puis-je automatiser la suppression sur les cellules colorées après vérification? si oui comment?
ondo
Vous pouvez utiliser un filtre, puis vous pouvez facilement sélectionner et supprimer tous les doublons. Ou 'Supprimer les doublons' comme @teylyn dit.
Benshepherd