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 - Porównanie dwóch plików Excel: Raport i Wyciąg, tworzenie kluczy, wstawianie OK/SPRAWDŹ

pp06285 22 Cze 2022 14:26 855 15
REKLAMA
  • #1 20071359
    pp06285
    Poziom 10  
    Posty: 8
    Witam,
    Serdeczna prośba o pilne wsparcie. Potrzebuję niestety pilnie kodu VBA, który umożliwi sprawdzenie/porównanie dwóch plików. I tak:
    Mam 2 pliki, o różnych układach kolumn: plik Raport oraz plik Wyciąg.
    Ich lokalizacje mogą się zmieniać, więc do otwarcia należy wskazać osobno ścieżkę (nie wpisywać na sztywno).
    W celu porównania pliku Raport z Wyciąg, należy utworzyc w obu plikach klucze, poprzez dodanie na końcu kolumn i utworzenie kluczy z wartości z poszczególnych pól w danych kolumnach:
    dla Raport => =A+C+I+J
    dla Wyciąg => =A+C+G
    Na podstawie klucza (jak wyżej) przeszukaj plik Raport, czy wartości występują w pliku Wyciąg.
    Jeśli tak, to wstaw w kolejnej kolumnie wartość OK, jeśli brak to SPRAWDŹ.
    Podkreslenie wierszy z SPRAWDŹ na czerwono, ułatwi wizualne wyszukiwanie.
    Z góry dziękuję za pomoc!

    PS: potrzebuję kod VBA, niestety zwykły vlookup nie nada się do tego projektu.
    Załączniki:
    • raport.xlsx (16.85 KB) Musisz być zalogowany, aby pobrać ten załącznik.
    • wyciąg.xlsx (19.87 KB) Musisz być zalogowany, aby pobrać ten załącznik.
  • REKLAMA
  • #2 20071812
    paweliw
    Spec od komputerów
    Posty: 4914
    Pomógł: 710
    Ocena: 229
    Pokaż co zrobiłeś do tej pory, brak pliku przykładowego całkowicie eliminuje możliwość udzielenia jakiejkolwiek pomocy, nikt nie będzie się bawił w tworzenie tabelek z Twoim układem danych.
    Z opisu wygląda jakby to było kolejne zadanie domowe :)
  • REKLAMA
  • #3 20072280
    pp06285
    Poziom 10  
    Posty: 8
    paweliw napisał:
    Pokaż co zrobiłeś do tej pory, brak pliku przykładowego całkowicie eliminuje możliwość udzielenia jakiejkolwiek pomocy, nikt nie będzie się bawił w tworzenie tabelek z Twoim układem danych.
    Z opisu wygląda jakby to było kolejne zadanie domowe :)


    Edytowałem wpis, wrzucając przykładowe pliki. Generalnie one będą dużo większe. Potrzebuję tylko "szablon" kodu, a postaram się go samodzielnie bardziej dopasować do moich potrzeb. To nie zadanie domowe, tylko pomoc w pracy...
    Z góry wiekie dzięki za pomoc!
  • #4 20072471
    kinggustav
    Poziom 27  
    Posty: 797
    Pomógł: 93
    Ocena: 93
    A z czym konkretnie masz problem? Potrafisz otworzyć te pliki? Potrafisz utworzyć te klucze (sugeruję nie zwykłe łączenie stringów, ale dodanie jakichś separatorów)? Potrafisz porównać dane w obu plikach (a może arkuszach - zastanów się czy nie będzie wygodniej skopiować dane do arkuszy pliku z makrem)?
    Zamiast kolorowania lepiej jest użyć prostej sztuczki: oznacz wiersze jakimś znakiem w dodanej kolumnie, zostawiając puste komórki dla nieoznaczonych. Będziesz mógł poruszać się przy pomocy Ctrl i strzałka w dół/górę, albo filtrować (to zawsze możesz).
    Tu nie ma złych rozwiązań, sam napiszesz to i sam poprawisz. Każdy działający program jest lepszy od setek pięknie napisanych, ale niedziałających. :)
  • #5 20072475
    pp06285
    Poziom 10  
    Posty: 8
    No niestety jestem zielony w VBA i dlatego poprosilem Was o pomoc w napisaniu kodu, który wykorzystam w pracy do jej optymalizacji.
  • REKLAMA
  • #6 20073369
    Prot
    Poziom 38  
    Posty: 2580
    Pomógł: 574
    Ocena: 297
    pp06285 napisał:
    zwykły vlookup nie nada się do tego projektu

    ...:?: skąd ten wniosek ? :cunning:
    Czyżby dlatego, że (na podstawie przykładowych plików) wartości podstawowych kluczy występują wielokrotnie ?
    VBA - Porównanie dwóch plików Excel: Raport i Wyciąg, tworzenie kluczy, wstawianie OK/SPRAWDŹ2022-06...png (28.59 kB)Musisz być zalogowany, aby pobrać ten załącznik.
  • #7 20073384
    pp06285
    Poziom 10  
    Posty: 8
    Plik zrobiłem dla przykładu - copy+paste i dlatego duble. Mam rozbudowane narzędzie i muszę je VBA potraktować. Dane docelowe będą bardziej skomplikowane, ale na podstawie "szablonu" sam będę próbował dostosować do moich potrzeb. Potrzebuję wsparcia na start, bo VBA jeszcze nie wchodzi jak trzeba :( stąd dałem wytyczne j/w, więc prośba serdeczną o propozycję kodu.
  • #8 20073401
    gps79
    Poziom 37  
    Posty: 2193
    Pomógł: 495
    Ocena: 794
    Nie wiem, czy to pomoże rozwiązać problem autorowi, ale darmowy program WinMerge jest w stanie przy współpracy z MS Excelem zrobić diff dwóch arkuszy i przedstawić różnice w przejrzystej formie.
  • #9 20073487
    pp06285
    Poziom 10  
    Posty: 8
    Niestety nie, tylko VBA wchodzi w grę :(
  • REKLAMA
  • #10 20073689
    kinggustav
    Poziom 27  
    Posty: 797
    Pomógł: 93
    Ocena: 93
    Czyli VBA jest celem? Dziwne. Powinno być środkiem do osiągnięcia celu, warto pomyśleć czy alternatywne rozwiązania nie będą bardziej efektywne.
    Jeżeli nie znasz VBA to tym bardziej dziwne, że chcesz zdobyć program. Jak pisałem wcześniej co sam napiszesz to sam poprawisz. W tym przypadku to odpada. A jeżeli chcesz się nauczyć to podziel zadanie na części i zacznij od pierwszego. Rozwiązując problemy może (nie gwarantuję sukcesu, nawet Cię nie znam) się nauczysz. Pamiętaj: VBA daje setki możliwych rozwiązań każdego zadania, w Internecie możesz kopać godzinami. Nie musisz znać wszystkich, wystarczy jedno, ale działające i będzie dobre bo już je znasz. :)
  • #11 20073915
    pp06285
    Poziom 10  
    Posty: 8
    kinggustav napisał:
    Czyli VBA jest celem? Dziwne. Powinno być środkiem do osiągnięcia celu, warto pomyśleć czy alternatywne rozwiązania nie będą bardziej efektywne.

    Generalnie tak to wygląda... :( Projekt już podzieliłem na mniejsze etapy i teraz potrzebuję kodu do tej części. Niestety taka specyfika pracy, że pozostaje tylko VBA, bo np. wszelkie dodatki itp. nie mogą być zainstalowane (i nie ma sensu tłumaczyć dlaczego - po prostu nie ma mowy, tak to już dawno bym sobie poradził dodatkami).
    Dlatego od początku pisałem, że tylko VBA, żadne vlookup'y, powerquery itd. nie wchodzą w grę niestety.

    Jest szansa, że ktoś pomoże w uzyskaniu kodu?
  • #12 20073929
    PRL
    Poziom 41  
    Posty: 6897
    Pomógł: 953
    Ocena: 893
    Cytat:
    Jest szansa, że ktoś pomoże w uzyskaniu kodu?

    Jest.
    Może i zadanie nie musi być szkolne, ale założenie 'napisz taki i taki kod (poszczególne kroki) w VBA' robi swoje i pachnie zadaniem szkolnym.

    Nie dziw się więc, że osoby piszące w tym wątku są zdziwieni obowiązkiem użycia tylko VBA. Zazwyczaj jest odwrotnie - wykonaj bez użycia VBA.
    Pomogłem? Kup mi kawę.
  • #13 20073932
    paweliw
    Spec od komputerów
    Posty: 4914
    Pomógł: 710
    Ocena: 229
    Tak jak zauważył Prot, zwykłe wyszukiwanie poprzez wyszukaj.pionowo() czy indeks() oraz warunki powinny spokojnie wystarczyć do porównania poszczególnych wierszy.
    Nie wiem czemu upierasz się przy VBA, szczególnie mając o tym niewielkie pojęcie.
  • #14 20074972
    pp06285
    Poziom 10  
    Posty: 8
    Robię większe narzędzie oparte na VBA i to jest jeden z etapów. Rozwiązanie ma służyć do automatyzacji procesu, stąd samo wykorzystanie funkcji jest niewystarczające (ręczna robota, którą eliminuję). Kod VBA w pozostałych etapach poszukałem w necie i dopasowałem do swoich potrzeb. Takiego porównywania plików nie widziałem (pewnie dlatego, że każdy proponuję vlookup itd), ale muszę dopasować do resty funkcjonalności...
  • Pomocny post
    #15 20076569
    Prot
    Poziom 38  
    Posty: 2580
    Pomógł: 574
    Ocena: 297
    pp06285 napisał:
    Dane docelowe będą bardziej skomplikowane, ale na podstawie "szablonu" sam będę próbował dostosować do moich potrzeb. Potrzebuję wsparcia na start, bo VBA jeszcze nie wchodzi jak trzeba

    Jeśli dobrze odczytuję Twoje zadanie :?: - uzyskanie efektu takiego jak na zrzucie
    VBA - Porównanie dwóch plików Excel: Raport i Wyciąg, tworzenie kluczy, wstawianie OK/SPRAWDŹ2022-06...png (20.84 kB)Musisz być zalogowany, aby pobrać ten załącznik.
    To na początek możesz wypróbować makro z załączonego pliku Protraport.xlsm :D
    Po otwarciu tego pliku, poprzez skrót ctrl+s, otworzysz pole dialogowe do wskazania lokalizacji pliku wzorcowego wyci±g.xlsx i nastąpi sprawdzenie występowania określonych kodów :spoko: Zwróć jednak uwagę, że oba pliki są modyfikowane i muszą mieć zachowaną odpowiednią strukturę oraz nazwy :!:

    Sprawdź.7z (35.75 kB)Musisz być zalogowany, aby pobrać ten załącznik.
  • #16 20080453
    pp06285
    Poziom 10  
    Posty: 8
    Wieeeelekie dzięki!!! Już sobie dopasowałem kod do swoich potrzeb. Bardzo mi pomogłeś! Przy okazji czegoś się nauczyłem :)

Podsumowanie tematu

✨ Użytkownik poszukiwał pomocy w stworzeniu kodu VBA do porównania dwóch plików Excel: Raport i Wyciąg, które mają różne układy kolumn. Kluczowym zadaniem było utworzenie kluczy na podstawie wartości z określonych kolumn, a następnie sprawdzenie, czy klucze z pliku Raport występują w pliku Wyciąg. W przypadku znalezienia wartości, w nowej kolumnie miała być wstawiana wartość "OK", a w przeciwnym razie "SPRAWDŹ", z podkreśleniem wierszy z "SPRAWDŹ" na czerwono. Użytkownik podkreślił, że potrzebuje wyłącznie rozwiązania w VBA, ponieważ inne metody, takie jak VLOOKUP, nie są odpowiednie. W odpowiedziach zasugerowano różne podejścia do problemu, w tym użycie separatorów w kluczach oraz alternatywne metody porównania danych. Ostatecznie użytkownik otrzymał pomoc w postaci makra, które spełniło jego wymagania.
REKLAMA