Ten samouczek pokaże Ci, jak korzystać z funkcji LICZ.JEŻELI i LICZ.WARUNKI programu Excel w VBA
VBA nie ma odpowiednika funkcji LICZ.JEŻELI lub LICZ.WARUNKI, których można użyć - użytkownik musi korzystać z wbudowanych funkcji Excela w VBA za pomocą Funkcja arkusza roboczego obiekt.
COUNTIF Funkcja arkusza roboczego
Obiekt WorksheetFunction może służyć do wywoływania większości funkcji programu Excel dostępnych w oknie dialogowym Wstaw funkcję w programie Excel. Jedną z nich jest funkcja LICZ.JEŻELI.
123 | PodtestLicznikJeżeli()Zakres("D10") = Application.WorksheetFunction.CountIf(Range("D2:D9"), ">5")Napis końcowy |
Powyższa procedura zliczy tylko komórki w zakresie (D2:D9), jeśli mają wartość 5 lub większą. Zauważ, że ponieważ używasz znaku większego niż, kryteria większe niż 5 muszą być w nawiasach.
Przypisywanie wyniku LICZ.JEŻELI do zmiennej
Możesz chcieć użyć wyniku formuły w innym miejscu w kodzie, zamiast zapisywać go bezpośrednio z powrotem do zakresu programu Excel. W takim przypadku możesz przypisać wynik do zmiennej, która będzie używana później w kodzie.
1234567 | Sub AssignSumIf Variable()Przyciemnij wynik jako Double'Przypisz zmiennąwynik = Application.WorksheetFunction.CountIf(Range("D2:D9"), ">5")'Pokaż wynikMsgBox "Liczba komórek o wartości większej niż 5 to " i wynikNapis końcowy |
Korzystanie z funkcji LICZ
Funkcja LICZ.JEŻELI jest podobna do funkcji LICZ.JEŻELI WorksheetFunction, ale umożliwia sprawdzenie więcej niż jednego kryterium. W poniższym przykładzie formuła obliczy liczbę komórek w D2 do D9, gdzie cena sprzedaży jest większa niż 6 ORAZ cena kosztu jest większa niż 5.
123 | Sub UżywającLicznikJeżeli()Range("D10") = WorksheetFunction.CountIfs(Range("C2:C9"), ">6", Range("E2:E9"), ">5")Napis końcowy |
Używanie LICZ.JEŻELI z obiektem zakresu
Możesz przypisać grupę komórek do obiektu Range, a następnie użyć tego obiektu Range z Funkcja arkusza roboczego obiekt.
123456789 | PodtestCountIFRange()Dim rngCount jako zakres'przypisz zakres komórekUstaw rngCount = Zakres("D2:D9")'użyj zakresu we wzorzeZakres("D10") = WorksheetFunction.SUMIF(rngCount, ">5")'zwolnij obiekty zasięguUstaw rngCount = NicNapis końcowy |
Korzystanie z funkcji LICZ.JEŻELI na obiektach o wielu zakresach
Podobnie możesz użyć opcji LICZ.WARUNKI na wielu obiektach zakresu.
123456789101112 | PodtestCountMultipleRanges()Dim rngCriteria1 jako zakresDim rngCriteria2 jako zakres'przypisz zakres komórekUstaw rngCriteria1= Zakres("D2:D9")Ustaw rngCriteria2 = Zakres("E2:E10")'użyj zakresów we wzorzeZakres("D10") = WorksheetFunction.CountIfs(rngCriteria1, ">6", rngCriteria2, ">5")'zwolnij obiekty zasięguUstaw rngCriteria1 = NicUstaw rngCriteria2 = NicNapis końcowy |
LICZ.JEŻELI Formuła
Kiedy używasz Funkcja arkusza roboczego.LICZ.JEŻELI aby dodać sumę do zakresu w arkuszu, zwracana jest wartość statyczna, a nie elastyczna formuła. Oznacza to, że gdy zmienią się Twoje dane w Excelu, wartość zwrócona przez Funkcja arkusza roboczego nie zmieni się.
W powyższym przykładzie procedura policzyła ilość komórek z wartościami w zakresie (D2:D9), gdzie cena sprzedaży jest większa niż 6, a wynik został umieszczony w D10. Jak widać na pasku formuły, ten wynik jest liczbą, a nie formułą.
Jeśli którakolwiek z wartości zmieni się w Range(D2:D9), wynik w D10 będzie NIE reszta.
Zamiast używać Arkusz Funkcja.SumIf, możesz użyć VBA, aby zastosować funkcję SUMA.JEŻELI do komórki za pomocą Formuła lub FormułaR1C1 metody.
Metoda formuły
Metoda formuł pozwala wskazać konkretny zakres komórek, np.: D2:D9, jak pokazano poniżej.
123 | PodtestLicznikJeżeli()Zakres("D10").FormułaR1C1 ="=LICZ.JEŻELI(D2:D9;"">5"")"Napis końcowy |
FormułaR1C1 Metoda
Metoda FormulaR1C1 jest bardziej elastyczna, ponieważ nie ogranicza użytkownika do określonego zakresu komórek. Poniższy przykład da nam taką samą odpowiedź jak powyższy.
123 | PodtestLicznikJeżeli()Zakres("D10").FormułaR1C1 = "=LICZ.JEŻELI(R[-8]C:R[-1]C;"">5"")"Napis końcowy |
Aby jednak formuła była jeszcze bardziej elastyczna, możemy zmienić kod tak, aby wyglądał tak:
123 | PodtestLicznikJeżeli()ActiveCell.FormulaR1C1 = "=LICZ.JEŻELI(R[-8]C:R[-1]C;"">5"")"Napis końcowy |
Gdziekolwiek jesteś w arkuszu, formuła policzy komórki spełniające kryteria bezpośrednio nad nim i umieści odpowiedź w ActiveCell. Do zakresu wewnątrz funkcji LICZ.JEŻELI należy odwoływać się przy użyciu składni Wiersz (R) i Kolumna (C).
Obie te metody umożliwiają korzystanie z formuł Dynamic Excel w VBA.
W D10 będzie teraz formuła zamiast wartości.
Twój tekst linku