Elektroda.pl
Elektroda.pl
X
Proszę, dodaj wyjątek dla www.elektroda.pl do Adblock.
Dzięki temu, że oglądasz reklamy, wspierasz portal i użytkowników.

VBA, Excel - Porównanie wrtości w dwóch tabelach, zerowa wartość formuły

21 Paź 2012 21:09 3771 14
  • Poziom 12  
    Witam

    Stworzylem dwie tabele w dwóch róznnych arkuszach Excela
    -chciałbym aby wartości występujace w tbl_1 tabeli były przenoszone do drugiej
    -lecz wtedy i tylko wtedy jeśli takich wartosci w tbl_2 nie bedzie.

    próbowałem to osiągnąć za pomocą:

    Kod: vb
    Zaloguj się, aby zobaczyć kod


    funkcja Excela zwraca mi "0" za każdym razem pomimo, że wartści są są w obu tabelach.

    Jak zapisać tablicową fnkcję Excela w VBA czy może mi ktoś pomóc?
  • Moderator Programowanie
    Argument "tblList" to nazwa zakresu w tej "drugiej" tabeli?
    Po drugie: dlaczego tak komplikujesz? Jeśli funkcja arkuszowa to (pojedyncze) CountIf. Ale prościej byłoby wykorzystać Range.Find i jeśli błąd, to znaczy że nie ma...
    Hmm, patrząc na na to SUMA(SUMA.JEŻELI * Coś_Tam)), nie jestem pewien czy dobrze rozumiem. Na pewno chodzi o warunkowe przenoszenie/kopiowanie?
  • Poziom 12  
    adamas_nt napisał:
    Argument "tblList" to nazwa zakresu w tej "drugiej" tabeli?


    -tak, tblList to zakres w drugiej tabeli

    adamas_nt napisał:
    Po drugie: dlaczego tak komplikujesz? Jeśli funkcja arkuszowa to (pojedyncze) CountIf. Ale prościej byłoby wykorzystać Range.Find i jeśli błąd, to znaczy że nie ma...


    - nie umiałem sobie poradzić inaczej jeśli chodzi o kod wiec zastosowałem funkcje excela...., sadziłem ze tak jak w w funkcjach tablicowych zostaną przemnożone wartości... (ctrl + shift + enter)
    - czemu tabele, jest trochę łatwiej.

    adamas_nt napisał:
    Hmm, patrząc na na to SUMA(SUMA.JEŻELI * Coś_Tam)), nie jestem pewien czy dobrze rozumiem. Na pewno chodzi o warunkowe przenoszenie/kopiowanie?


    tak chodzi o to ze w tbl_1 w kolumnach 2,3 sa wartości string które sie powtarzają:
    - chciałbym aby kopiowane były tylko te wartości których jeszcze nie ma w tblList.
    - prócz tego sprawdzane/kopiowane wartości sa z tego samego wiersza lecz innej kolumny. tzn
    jeśli nie ma wartości B1-x i C1 -y z tabeli tbl_1 w tblList Kolumnie E i Kolumnie F
    to należy utworzyć kopie do pierwszego pustego wiersza w kolumnach E i F.
  • Moderator Programowanie
    Wrzuć kawałek arkusza z przykładem. Trudno rozszyfrować Twój opis...
  • Poziom 12  
    adamas_nt napisał:
    Wrzuć kawałek arkusza z przykładem. Trudno rozszyfrować Twój opis...


    Przesylam kawalek pliku w zalaczniku
  • Moderator Programowanie
    Czyli szukasz unikatowych wartości dla JobNo & Description? Bez względu na daty, czasy, etc?

    Coś tu jednak nie pasuje do opisu... Do czego służą w takim razie kolumny z miesiącami w arkuszu "ListJobs"?
  • Poziom 12  
    miesiace to inne zagadnienie :) tam beda automatyczne podliczenia godzin pracy w danym miesiacu jesli chodzi o szczegoly.


    adamas_nt napisał:
    Czyli szukasz unikatowych wartości dla JobNo & Description? Bez względu na daty, czasy, etc?

    tak, bez wzgledu na inne wartosci unikatowe wartosci maja sie znalesc w tblList

    na podstawie unikatowych danych pobieranych z tabeli HoursDetails beda podliczane globalnie godziny poswiecone na wykonanie pracy w tblList.

    po za tym tblLista (JobNo & Description) ma sluzyc do szybkiego wypelniania jak lista w combobox'ie aby usprawnic wypelnianie tabeli HoursDetails

    mysle ze tego bardziej nie zagmatwalem niz bylo...
  • Moderator Programowanie
    Ostatnie pytanie: Dlaczego przy WorksheetChange? Ostatecznie, przy zmianie ma porównywać tylko komórki H I z aktywnego wiersza?
  • Poziom 12  
    adamas_nt napisał:
    Dlaczego przy WorksheetChange?


    chcialbym aby petla chodzila tylko w momencie zmiany wartosci unikatowych.
    ps. jest inna....? jesli tak, to jaka?


    adamas_nt napisał:
    Ostatecznie, przy zmianie ma porównywać tylko komórki H I z aktywnego wiersza?


    tak ma sprawdzic czy dane wartosci z Targetu w kolumnie H i I wystepuja w tabLista
  • Pomocny post
    Moderator Programowanie
    Spróbuj w ten sposób
    Kod: vb
    Zaloguj się, aby zobaczyć kod
  • Poziom 12  
    dzieki :)

    hmm nie zawsze wypelniam od 1 do x'tej kolumny rowniez robie to chaotycznie wiec beda sie dodawac w takim przypadku wartosci puste z kolumny 8 :(

    A tak po za tym czy mozesz zdradzic tajemnice, jak zapisac postac tablicowa w kodzie pytam z ciekawosci. czy to wogole mozliwe?
  • Pomocny post
    Moderator Programowanie
    Tak, Np
    Code:
    ActiveCell.FormulaArray = "=SUM(A1:A5)"


    Wracając do makra. Jeśli wypełniasz "od końca" to zmień warunek Target.Column na 8...

    Edit: Jeśli
    amator_piotr napisał:
    robie to chaotycznie
    to zmień i uzupełnij warunki
    Kod: vb
    Zaloguj się, aby zobaczyć kod
  • Poziom 12  
    ostatnie moje pytanie: Wiem ze np funkcja Excel'owa Suma.Jezeli to w VBA SumIf. Szukalem z ciekawosci w VBA Funkcji EX Jezeli(logika,prawda,falsz) i nie umialem znalesc czy istniej odpowiednik?

    dzieki wielkie za pomoc. reszte dorobei sam :) dzieki raz jeszcze
  • Pomocny post
    Moderator Programowanie
    amator_piotr napisał:
    Szukalem z ciekawosci w VBA Funkcji EX Jezeli(logika,prawda,falsz) i nie umialem znalesc czy istniej odpowiednik?
    Napisz sobie "tłumacza":

    VBA, Excel - Porównanie wrtości w dwóch tabelach, zerowa wartość formuły

    To baaardzo skomplikowany kod
    Kod: vb
    Zaloguj się, aby zobaczyć kod
  • Poziom 12  
    Dzięki

    Chodzilo mi o to, czy istnieje WorksheetFuncion "Jezeli()", inne jezeli znalazlem lecz nie...

    dzieki za pomoc, temat zamkniety