VBA Tools

Usunięcie pozycji tabeli, nie zawartych na liście do pozostawienia

napisane przez Oskar w dniu środa, 11 Styczeń, 2012, w kategorii Porady - Excel

Posiadamy dwie listy. Jedna to baza danych towarów naszej oferty. Wśród niej znajdują się akronimy produktów (niepowtarzalne nazwy) oraz reszta danych charakteryzujących dany przedmiot, oraz w drugim arkuszu, w kolumnie „A:A” listę akronimów, które muszą pozostać w ofercie. Wszystkie te towary, które nie znajdują się na tej liście z arkusza 1 muszą zostać usunięte.

Poniżej przedstawiam przykład, dzięki któremu będzie można szybko usunąć pozycje z oferty pozostawiając rekordy zgodnie z listą w arkuszu 2.

Option Explicit

Sub Kill_not_in_Array()
'MVP OShon from VBATools.pl
Dim wks1 As Worksheet: Set wks1 = Sheets("Arkusz1")  'worksheet to kill rows (not include Arkusz2)
Dim wks2 As Worksheet: Set wks2 = Sheets("Arkusz2")  'worksheet with elements to stay
Dim tbl(), x&, y&, jest As Boolean, max_row&: max_row = wks1.Cells(Rows.Count, "a").End(xlUp).Row
tbl = Application.Transpose(wks2.Range("a1:a" & wks2.Cells(Rows.Count, "a").End(xlUp).Row).Value)
Application.ScreenUpdating = False
With wks1
 For x = max_row To 1 Step -1
 jest = False
   For y = 1 To UBound(tbl)
     If tbl(y) = .Cells(x, "A") Then jest = True: Exit For
   Next y
 If jest = True Then .Rows(x).Delete
 Next x
End With
Application.ScreenUpdating = True
End Sub

Kilka wyjaśnień:

  • Określamy arkusze w których jest baza danych oraz baza rekordów jakie chcemy pozostawić
  • Przypisujemy do tablicy elementy do pozostawienia (arkusz2 kolumna A:A)
  • Sprawdzamy w bazie danych czy rekord znajduje się w tablicy, jeśli tak, to nie sprawdzamy dalej
  • Usuwamy rekord o ile sprawdzanie zostało potwierdzone, i przechodzimy do następnego w bazie danych.

(c) Shon Oskar – www.VBATools.pl

Wszelkie prawa zastrzeżone. Żadna część ani całość tego artykułu nie może być powielana ani publikowana bez zgody autora.

Podziel się ze znajomymi:
  • Print
  • Digg
  • del.icio.us
  • Facebook
  • Google Bookmarks
  • Blip
  • Grono
  • Gwar
  • Kciuk.pl
  • LinkedIn
  • MySpace
  • OSnews.pl
  • Śledzik
  • Spis.pl
  • Technorati
  • Twitter
  • Vala.pl
  • Wahacz.pl
  • Wykop

Wpisz swój komentarz:

Comment Spam Protection by WP-SpamFree