logo elektroda
logo elektroda
X
logo elektroda
REKLAMA
REKLAMA
Adblock/uBlockOrigin/AdGuard mogą powodować znikanie niektórych postów z powodu nowej reguły.

[VBA i excel] Jak napisać makro VBA do porównania i kopiowania danych między arkuszami?

MaverickPL 16 Maj 2011 14:24 2658 4
REKLAMA
  • #1 9511980
    MaverickPL
    Poziom 2  
    Posty: 4
    Witam,

    proszę o pomoc szanowne grono kolegów, ponieważ siedzię już parę dni nad aplikacją i absolutnie sobie nie radzę. A wszystko wskazuje na to, że rozwiązanie jest proste, tylko ja szukam po omacku.

    Mam dane zaimportowane z Access do arkusza roboczego w Excelu w postaci 3 kolumn zawierających wartości w każdej z kolumn.

    Kolumna A zawiera numer seryjny, kolumna B zawiera kod, a kolumna C zawiera wartość do wprowadzenia.

    Te same kolumny mam w arkuszu docelowym, ale bez wartości z kolumny C.

    Zadaniem jest napisać makro (funkcję warunkową), które porównywałoby wartości kolumn A i B w arkuszu roboczym i docelowym i w przypadku jednoczesnej zgodności obu parametrów, dane z kolumny C arkusza roboczego byłyby kopiowane do arkusza docelowego (w miejscu występowania zgodności).

    Przykład:

    Roboczy:

    A----------B----------C
    1234----------3----------50
    1235----------5----------1
    1236----------1----------99

    Docelowy:

    A----------B----------C
    1231----------8----------0
    1235----------5----------X
    1237----------3----------0

    Makro sprawdza, że wartości 1235 i 5 występują w obu arkuszach, kopiuje wartość 1 do arkusza docelowego w miejsce X (do wiersza, gdzie wystąpiła zgodność). W pozostałych przypadkach makro wprowadza wartości 0.

    Pomocy!!!
  • REKLAMA
  • Pomocny post
    #2 9513204
    adamas_nt
    VIP Zasłużony dla elektroda
    Posty: 5320
    Pomógł: 1508
    Ocena: 659
    MaverickPL napisał:
    Zadaniem jest napisać makro...
    Wystarczy "zwykła" formuła, jeśli satysfakcjonuje Cię takie rozwiązanie. Coś na wzór:
    JEŻELI(CZY.BŁĄD(WYSZUKAJ.PIONOWO(...));0;WYSZUKAJ.PIONOWO(...))

    W VBA należałoby zagnieździć dwie pętle dla porównania każdej komórki z każdą...
  • REKLAMA
  • Pomocny post
    #3 9515124
    marek003
    Poziom 40  
    Posty: 4607
    Pomógł: 801
    Ocena: 488
    Samo wyszukaj.pionowo() będzie chyba za mało bo trzeba sprawdzić dwie komórki z nr seryjnym i kodem. Chyba że "dobuduje" się z przodu kolumnę pomocniczą łączącą nr seryjny z kodem.
    (Z opisu autora zrozumiałem że może się trafić przypadek np. 1235-5 i 1235-8)

    Może takie makro, ale nie wiem ile jest danych w pierwszym arkuszu. Przy dużej ilości danych wykonanie makra może chwile potrwać (pętla dla każdego wiersza z danymi z arkusza2 sprawdza wszystkie wiersze w arkuszu1).

    Kod: text
    Zaloguj się, aby zobaczyć kod
  • REKLAMA
  • Pomocny post
    #4 9518882
    pitermxa
    Poziom 18  
    Posty: 248
    Pomógł: 25
    Ocena: 15
    ja bym zrobił tak, ze zrobiłbym rzeczywiście pomocnicza kolumnę C, gdzie łączyły by się zawartości obu kolumn np =A2&B2.
    Wtedy wkepujemy funkcję wyszukaj pionowo w kolumnie D gdzie będziemy wyszukować wartości z kolumny C ( z arkusza docelowego) i porównywać je z tabelą z arkusza roboczego odnoszącej się do kolumny nr 3 (jeżeli zaznaczasz jako tabelę od kolumy A)
  • #5 9519706
    MaverickPL
    Poziom 2  
    Posty: 4
    Bardzo dziękuję za pomoc. Już ogarnąłem :)
REKLAMA