Funkcja Excel VBA IIF
VBA IIF (znany również jako Immediate If) to instrukcja, którą często można było zobaczyć podczas kodowania w VBA i tworzenia makr. Jest podobny do funkcji IF programu Excel, w której zapisujesz warunek logiczny i daje dwa wyniki, jeśli warunek jest prawdziwy, a warunek jest fałszywy. Jeśli patrząc na to, myślisz, że jest to funkcja podobna do VBA IF, której używamy do oceny testów logicznych i warunków, jesteś w błędzie. Wydaje się, że jest blisko VBA Jeśli i idealnie, można powiedzieć, że naprawdę mają małą różnicę między nimi podczas wykonywania. W tym artykule otrzymamy więcej informacji na temat oświadczenia VBA IIF i tego, jak z niego korzystać w codziennym życiu związanym z kodowaniem, aby ułatwić nasze zadania.
Instrukcja VBA IIF działa podobnie do instrukcji IF programu Excel. Sprawdza podany warunek lub instrukcję logiczną i podaje dane wyjściowe powiązane z warunkiem PRAWDA lub gdy warunek ma wartość FAŁSZ.
Składnia IIF w Excel VBA
Składnia funkcji VBA IIF w programie Excel jest następująca:
Gdzie,
- Wyrażenie: jest logicznym warunkiem, który chcieliśmy ocenić w ramach funkcji IIF
- TruePart: to oczekiwana wartość / wynik, gdy warunek logiczny / wyrażenie ma wartość PRAWDA.
- FalsePart: oczekiwana wartość / wynik, gdy warunek logiczny / wyrażenie ma wartość FAŁSZ.
Jak korzystać z Excela VBA IIF?
Teraz wypróbujmy kilka przykładów VBA IIF w Excelu.
Możesz pobrać ten szablon Excel VBA IIF tutaj - Szablon Excel VBA IIFWeźmy prosty przykład, aby zobaczyć, jak działa IIF pod Microsoft VBA.
Przykład # 1 - VBA IIF
Krok 1: Otwórz Edytor Visual Basic (VBE). Przejdź do zakładki Wstaw i kliknij Moduł . Dodaje nowy moduł pod VBE.
Krok 2: Zdefiniuj nową podprocedurę, która może przechowywać twoje makro w tym module.
Kod:
Sub IIf_Ex1 () End Sub
Krok 3: Zdefiniuj dwie nowe zmienne Var_1 jako Długi i Wynik z typem danych jako wariant.
Kod:
Sub IIf_Ex1 () Dim var_1 As Long Dim Wynik As Boolean End Sub
Krok 4: Przypisz wartość liczbową do Var_1, abyśmy mogli użyć tej zmiennej do sprawdzenia logicznego warunku IIF.
Kod:
Sub IIf_Ex1 () Dim var_1 As Long Dim Wynik As Boolean var_1 = 5 End Sub
Krok 5: Użyj zmiennej Result, aby zapisać logiczny warunek IIF, w którym sprawdzimy, czy wartość przypisana do Var_1 jest większa lub równa 10.
Kod:
Sub IIf_Ex1 () Dim var_1 As Long Dim Wynik As Boolean var_1 = 5 Result = IIf (var_1> = 10, True, False) End Sub
Krok 6: Teraz użyj Debug.Print, aby wydrukować wynik warunku IIF w okienku podglądu wyników natychmiastowych.
Kod:
Sub IIf_Ex1 () Dim var_1 As Long Dim Wynik As Boolean var_1 = 5 Result = IIf (var_1> = 10, True, False) Debug. Wydruk Wynik End Sub
Krok 7: Uruchom ten kod, naciskając F5 lub przycisk Uruchom u góry panelu i zobacz dane wyjściowe w okienku natychmiastowego wyjścia.
Przykład # 2 - VBA IIF
Załóżmy, że mamy dane w arkuszu w następujący sposób:
Wszystko czego chcemy to wynik w kolumnie B taki, że albo liczba będzie parzysta, albo nieparzysta.
Krok 1: Zdefiniuj nową podprocedurę w VBE.
Kod:
Sub IIF_Ex2 () End Sub
Krok 2: Zdefiniuj dwie zmienne „a” i „Liczby” jako Długie.
Kod:
Sub IIF_Ex2 () Dim a Long Long Dim Number As Long End Sub
Krok 3: Uruchom pętlę For, w której chcemy zapętlić wszystkie wartości obecne w komórce A2: A11. Pętla rozpocznie się od 2 do 11 (ponieważ mamy nagłówki w wierszu 1 dla kolumn A i B).
Kod:
Sub IIF_Ex2 () Dim a Long Dim Dim Number As Long For a = 2 To 11 End Sub
Krok 4: Użyj zdefiniowanej wcześniej zmiennej liczbowej, aby zapisać wszystkie liczby z kolumny A zmieniające się w danym zakresie za pomocą operatora przypisania (A2: A11). Aby to zrobić, użyj następującego wiersza kodu.
Numer = Arkusz 1. Zakres („A” i a)
Kod:
Sub IIF_Ex2 () Dim a Long Dim Dim Number As Long for a = 2 To 11 Number = Sheet1.Range („A” & a) End Sub
Ten wiersz kodu pozwala VBA na przejście przez wszystkie wiersze w kolumnie A z „Arkusza1” w programie Excel jeden po drugim w pętli For.
Krok 5: Użyj IIF, aby sprawdzić, czy każda wartość komórki jest parzysta lub nieparzysta, i zapisz wyniki pod każdą komórką kolumny B. Następująca linia kodu wykona zadanie za Ciebie.
Arkusz 1. Zakres („B” i a). Wartość = IIf (Mod Mod 2 = 0, „Parzysty”, „Nieparzysty”)
Kod:
Sub IIF_Ex2 () Dim a As Long Dim Number As Long For a = 2 To 11 Number = Sheet1.Range („A” i a) Sheet1.Range („B” i a). Wartość = IIf (Number Mod 2 = 0, „Even”, „Odd”) End Sub
Tutaj, w tym wierszu, chcemy, aby wyniki były przechowywane pod każdą komórką kolumny B z Arkusza1. Dlatego użyliśmy „Sheet1.Range („ B ”i i) .Value” po lewej stronie fragmentu kodu. Użyliśmy IIF, aby sprawdzić, czy liczba jest podzielna przez 2, używając Mod (operator Modulo pod VBA). Na koniec chcemy, aby wynik wskazywał, czy liczba jest parzysta czy nieparzysta w kolumnie B. Dlatego te dwie wartości są wymienione w instrukcji IIF.
Krok 6: Zamknij instrukcję For z instrukcją Next, aby po każdej iteracji system przesuwał się w kierunku następnej komórki w arkuszu, aż dotrze do 11. rzędu.
Kod:
Sub IIF_Ex2 () Dim a As Long Dim Number As Long For a = 2 To 11 Number = Sheet1.Range („A” i a) Sheet1.Range („B” i a). Wartość = IIf (Number Mod 2 = 0, „Parzysty”, „Nieparzysty”) Następny koniec Sub
Krok 7: To jest to. Uruchom ten kod, naciskając F5 lub przycisk Uruchom umieszczony w najwyższym okienku VBE. Po uruchomieniu tego makra zobaczysz wynik poniżej arkusza 1 (o nazwie „Przykład_1”) skoroszytu programu Excel.
Przykład # 3 - VBA IIF
Zobaczymy teraz zagnieżdżoną instrukcję IIF:
W ten sam sposób zagnieżdżamy wiele warunków JEŻELI w jednej pętli.
Załóżmy te same dane, które wykorzystaliśmy w poprzednim przypadku. Chcieliśmy tylko napisać kod, który pozwoli nam rozróżniać liczby w następujący sposób:
- Jeśli liczba zawiera się w przedziale od 1 do 3 (w tym 3), w kolumnie B należy wpisać „Mały”
- Jeśli liczba zawiera się w przedziale od 4 do 6 (w tym 6), w kolumnie B należy wpisać „Medium”
- Jeśli liczba zawiera się w przedziale od 7 do 10 (w tym 10), w kolumnie B należy wpisać „Large”
Napiszmy kod dla tego typu IIF:
Krok 1: Zdefiniuj nową podprocedurę pod VBE, która może przechowywać twoje makro.
Kod:
Sub NestedIf () End Sub
Wykonaj czynności od Krok 2 do Krok 4 tak samo jak w powyższym przykładzie (Przykład 2 w tym artykule). Obejmuje to definiowanie zmiennych i dodawanie wszystkich liczb obecnych w kolumnie A w pętli For.
Krok 5: Użyj następującego fragmentu kodu, aby uzyskać pożądany wynik.
Kod:
Sub NestedIf () Dim Number As Long For a = 2 To 11 Number = Sheet2.Range („A” i a) Sheet2.Range („B” i a) .Value = IIf (Number = 7, „Large”, ” Medium ”)) End Sub
Krok 6: Zamknij instrukcję For z instrukcją Next i uruchom ten kod za pomocą F5 lub przycisku Uruchom znajdującego się na górnej wstążce pod VBE. Po uruchomieniu kodu zobaczysz wynik w następujący sposób:
W tym kodzie używany jest zagnieżdżony IIF. W ramach pierwszego IIF podano, co należy wydrukować w kolumnie B, gdy liczby mieszczą się w przedziale od 1 do 3. W drugim IIF wymieniliśmy, co należy wydrukować w kolumnie B, gdy liczby są większe lub równe 7 i poniżej w tym samym IIF podaliśmy, co powinno być wydrukowane w kolumnie B, gdy liczby nie są między 1 a 3 a 7 do 10.
W ten sposób możemy dodać wiele IIF pod tym samym kodem i zagnieździć je. To jest z tego artykułu. Podsumujmy kilka rzeczy, o których należy pamiętać.
Rzeczy do zapamiętania
- IIF zawsze ocenia obie części (PRAWDA i FAŁSZ) dla określonego warunku. Jednak drukuje FAŁSZ część tylko wtedy, gdy nic nie jest PRAWDĄ.
- Pisanie jest skrócone niż w przypadku standardowych instrukcji If-Else.
- Nie jest to dobrze znane, dlatego niektórzy użytkownicy mogą nie zrozumieć twojego kodu, jeśli użyłeś IIF zamiast konwencjonalnego If-Else.
Polecane artykuły
To jest przewodnik po VBA IIF. Tutaj omawiamy sposób korzystania z Excel VBA IIF wraz z praktycznymi przykładami i szablonem Excela do pobrania. Możesz także przejrzeć nasze inne sugerowane artykuły -
- Praca z VBA Active Cell
- Usuwanie wiersza w VBA
- Jak korzystać z transpozycji Excel VBA?
- Jak naprawić błąd 1004 przy użyciu VBA