Elektroda.pl
Elektroda.pl
X
Please add exception to AdBlock for elektroda.pl.
If you watch the ads, you support portal and users.

Makro do porównywania tabel w Excelu

mariuszgl1 01 Jan 2016 22:56 933 8
  • #1
    mariuszgl1
    Level 10  
    Witam serdecznie i przepraszam z góry jeśli to już było, ale przeszukuję fora od dwóch dni i nic dla siebie nie mogę znaleźć. Nadmieniam że moja znajomość Excela jest na poziomie podstawowym.

    Mam 2 tabele w 2 różnych arkuszach.
    Tabela 1 to 12 kolumn 10000 wierszy
    1 cos 5900700 cos cos cos cos cos cos cos cos cos
    2 cos 5900711 cos cos cos cos cos cos cos cos cos
    3 cos 5900712 cos cos cos cos cos cos cos cos cos
    4 cos 5900723 cos cos cos cos cos cos cos cos cos
    5 5900700 cos cos cos cos cos cos cos cos cos cos
    6 cos cos cos cos cos 5900700 cos cos cos cos cos
    7 cos cos cos cos cos cos 5900700 cos cos cos cos
    8 cos cos cos cos cos 5900723 cos cos cos cos cos

    Tabela 2 to 3 kolumny 2000 wierszy
    1 5900700 xxx xxx
    2 5900701 xxx xxx
    3 5900702 xxx xxx
    4 5900723 xxx xxx

    Makro lub funkcja ma działać tak, że porównuje wartości z tabeli 2 z kolumny B, i jeśli ta wartość wystąpi w tabeli pierwszej w kolumnie B lub C lub G lub I to zapisuje do 3 arkusza wartości z tabeli 2 i z tabeli1 a jeżeli nie znajdzie to pisze wartości z tabeli 2 i słowo BRAK. Nadmienię że w tabeli 1 w kolumnie B poszukiwana wartość może być ukryta w tekście.
    W powyższym przykładzie w arkuszu 3 powinno się znaleźć:

    1 5900700 xxx xxx cos 5900700 cos cos cos cos cos cos cos cos cos
    2 5900700 xxx xxx 5900700 cos cos cos cos cos cos cos cos cos cos
    3 5900700 xxx xxx cos cos cos cos cos 5900700 cos cos cos cos cos
    4 5900700 xxx xxx cos cos cos cos cos cos 5900700 cos cos cos cos
    5 5900701 xxx xxx BRAK
    6 5900702 xxx xxx BRAK
    7 5900723 xxx xxx cos 5900723 cos cos cos cos cos cos cos cos cos
    8 5900723 xxx xxx cos cos cos cos cos 5900723 cos cos cos cos cos
  • #2
    JRV
    VBA, Excel specialist
    Wszystkie szybko zacząłi pisać z ekranu na arkusz Excel :)
  • #3
    mariuszgl1
    Level 10  
    Pracuję w wojsku i nic więcej nie mogę podać. Najlepszego w nowym roku.
  • #4
    JRV
    VBA, Excel specialist
    Ale przykład z postu #1 prawdopodobnie mógł
    arkush1 - Tabela 1
    arkush2 - Tabela 2
    Code: vb
    Log in, to see the code
  • #5
    mariuszgl1
    Level 10  
    Dzięki za szybką pomoc lecz dopiero dzisiaj mogłem nad tym popracować.
    Kod który mi zaproponowałeś nie działa, wyrzuca mi błąd
    for esch control variable must be Variant or Objecct
    chyba że w 3 wierszu zlikwiduję &.
    wtedy działa lecz nie do końca skutecznie bo pojawiają mi się nie chciane wiersze:
    tabela 1
    1 armata 5900700 1 cos cos cos cos cos cos cos cos

    tabela 2
    1 armata 5900702 2 cos cos cos cos cos cos cos cos

    i w arkuszu 3
    pojawia mi się ta armata przy indeksie w obu przypadkach
    1 armata 5900700 1 armata 5900700 1 cos cos cos cos cos cos cos cos
    2 armata 5900700 1 armata 5900702 1 cos cos cos cos cos cos cos cos
    3 armata 5900702 1 armata 5900700 1 cos cos cos cos cos cos cos cos
    4 armata 5900702 1 armata 5900702 1 cos cos cos cos cos cos cos cos

    najważniejszy jest dla mnie index 12 lub 13 cyfrowy do porównani który w tabeli 2 jest w kolumnie C natomiast w tabeli 1 może być w kolumnie B LUB C LUB G

    Dodano po 4 [minuty]:

    Sorry za dużo tych armat wpisałem w tabeli 3.
    Na dzień dzisiejszy wygląda to tak
    tabela 1
    1 armata 5900700 1 cos cos cos cos cos cos cos cos

    tabela 2
    1 armata 5900702 2 cos cos cos cos cos cos cos cos

    i w arkuszu 3
    pojawia mi się ta armata przy indeksie w obu przypadkach
    1 5900700 1 armata 5900700 1 cos cos cos cos cos cos cos cos
    2 5900700 1 armata 5900702 1 cos cos cos cos cos cos cos cos
    3 5900702 1 armata 5900700 1 cos cos cos cos cos cos cos cos
    4 5900702 1 armata 5900702 1 cos cos cos cos cos cos cos cos
  • #6
    JRV
    VBA, Excel specialist
    mariuszgl1 wrote:
    Tabela 2 to 3 kolumny 2000 wierszy
    1 5900700 xxx xxx
    2 5900701 xxx xxx
    3 5900702 xxx xxx
    4 5900723 xxx xxx
    Wcześniej był indeks w kolumnie B
    mariuszgl1 wrote:
    który w tabeli 2 jest w kolumnie C
  • #7
    mariuszgl1
    Level 10  
    Dzięki, mój błąd przy kopiowaniu, wszystko działa tak jak chciałem z małym ale.
    Porównanie 100 indexów trwało około 4 min. Czy jest to normalne czy mam może coś źle ustawione w excel.
  • Helpful post
    #8
    JRV
    VBA, Excel specialist
    Sprobuj na początku makra
    Application.ScreenUpdating = False
    na koniec
    Application.ScreenUpdating = True
    Ale to jest OK, ponieważ w tabeli 1 indeksy zapewniają wszędzie, musimy przejść przez całą listę dla każdego indeksu tabel 2.
    mariuszgl1 wrote:
    w tabeli 1 w kolumnie B poszukiwana wartość może być ukryta w tekście
    Jeśli nie to, można spróbować innej metody.

    Dodano po 7 [minuty]:

    Jeśli indeksy w tabela 1 w poszczególnych komórkach
    Code: vb
    Log in, to see the code
  • #9
    mariuszgl1
    Level 10  
    Sorry że tak długo nie odpowiadałem. Dzisiaj zastosowałem się do twoich podpowiedzi i działa wszystko dużo szybciej.
    Jeszcze raz piękne dzięki
    Z pozdrowieniami Mariusz