Porównaj dwie kolumny w dwóch arkuszach

0

Mam inne pytanie, mimo że ostatnie pytanie, które zadałem, jest nadal w toku. Mam duże dane ponad 100 000 rekordów. Korzystam z poniższego kodu, aby przeglądać dane tak, aby każdy zduplikowany rekord miał kolor tła zmienił się na czerwony. Kod działa dobrze, ale jego przetwarzanie zajmuje obecnie zbyt dużo czasu (15–20 minut). moje pytanie brzmi: czy mogę coś zrobić, aby proces ten był szybszy?

Kod:

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 

dzięki za pomoc

ondo
źródło

Odpowiedzi:

1

Zamiast używać VBA do przechodzenia między danymi, możesz użyć formatowania warunkowego, które pokoloruje komórki w mgnieniu oka.

VBA nie jest najlepszym rozwiązaniem, tylko dlatego, że jest kodem. Niektóre wbudowane funkcje programu Excel są znacznie wydajniejsze i znacznie szybsze niż jakikolwiek kod VBA.

Opisz układ arkusza (arkuszy) i logikę, którą chcesz zastosować do komórek kodu koloru.

Następnie można zaproponować formatowanie warunkowe. Nie mam czasu na przekształcenie VBA w zakres skoroszytów.

teylyn
źródło
Dzięki Teylyn, w przeszłości korzystałem z formatowania warunkowego, ale teraz muszę przejrzeć wszystkie duplikaty z tabeli po sprawdzeniu raportu. To jest powód korzystania z kodu i muszę również trochę przetworzyć w arkuszu. W tej chwili trzeba to zrobić w VBA, dopóki nie przeniosę danych do Access w przyszłości. dzięki
ondo
1
Co powiesz na polecenie „Usuń duplikaty” na wstążce danych?
teylyn
0

Powinna to zrobić kolumna pomocnika w jednym z arkuszy, używając COUNTIFformuły do ​​zliczenia liczby wpisów pasujących do warunków w drugim arkuszu. Następnie dodaj format warunkowy, farbując komórki na czerwono, jeśli formuła zwróci> 0.

To, co @teylyn mówi o VBA, jest całkiem słuszne - należy tego unikać, jeśli można to zrobić za pomocą funkcji.

benshepherd
źródło
czy mogę zautomatyzować usuwanie kolorowych komórek po sprawdzeniu? jeśli tak jak?
ondo
Możesz użyć filtra, a następnie łatwo wybrać i usunąć wszystkie duplikaty. Lub „Usuń duplikaty”, jak mówi @teylyn.
benshepherd