Funkcja Licz.Jeżeli()

Funkcja Licz.Jeżeli to jedna z funkcji statystycznych Excela. Wynikiem jej działania jest liczba określająca ilość rekordów spełniająca dane kryterium.


Argumenty funkcji to:

    • Zakres – zakres komórek, z której chcemy uzyskać wynik. Argument obowiązkowy
    • Kryteria -wartość lub kryterium, która musi być spełnione, aby  komórka była zliczona . Argument obowiązkowy.

Wartość kryterium może przybierać różne formy.
Zobaczmy to na podstawie prostej tabeli:

kliknij, aby powiększyć

Chcą policzyć ile razy występuje jakaś wartość, możemy zdefiniować kryterium np. jako:

    •  pojedyncza wartość np.15
      =LICZ.JEŻELI(B2:B13;15)
    • odwołanie do innej komórki np.C1
      =LICZ.JEŻELI(B2:B13;C1)
    • zakres wartości
      =LICZ.JEŻELI(B2:B13;”<0″)
      Tu warto zauważyć, że po wpisaniu <0 – Excela automatycznie ustawia kryterium jako String dodając znak cudzysłowu
    • zakres wartości z odwołaniem do komórki np.C1
      =LICZ.JEŻELI(B2:B13;”<” & C1)
      Tu też warto zauważyć, że po wpisaniu <C1 (nawet jeżeli wprowadzimy adres komórki klikając na nią w arkuszu)  – Excel automatycznie ustawia kryterium jako String dodając znak cudzysłowu i otrzymuje „<C1”. To niestety błąd i funkcja zwróci błędny wynik. Trzeba to zrobić tak:
      „<> & C1
    • symbole wieloznaczne w odniesieniu do komórek zwierających tekst
      =LICZ.JEŻELI(A2:A13;”*e*”)
      wskazuje ilość komórek w kolumnie A zawierających literę e

Odpowiednikiem funkcji w kodzie VBA jest funkcja arkuszowa CountIf.


 

Deaktywacja skoroszytu

Deaktywacja skoroszytu to procedura zdarzeń skoroszytu (czyli procedur uruchamianych automatycznie) działająca odwrotnie do  aktywacji skoroszytu.
Znajduje się ona w module skoroszytu.

Procedura Workbook_Deactivate() jest uruchamiana zawsze przy deaktywacji skoroszytu czyli przy zamknieciu i/lub przełączeniu do innego okna Windows.

Przykład takiej procedury wyświetlającej nazwę opuszczanego skoroszytu to:

Private Sub Workbook_Deactivate()
Dim JNazwa As String
JNazwa = ThisWorkbook.Name
MsgBox „Opuszczony skoroszyt” & vbNewLine & JNazwa
End Sub

 


Kurs Excel programowanie w VBA

 

Filtrowanie tabeli

Trafiłam ostatnio na ciekawy przypadek. Tabela Excela, w jednej z kolumn – daty. Kolumna sformatowana jako data, dodatkowo jeszcze włączona poprawność danych, że musi tam być data. Wszystko działa prawidłowo.

kliknij, aby powiększyć

W oddzielnej komórce, poza tabelą – numer roku jako pojedyncza liczba (tu akurat 2022). Bez problemu ręcznie ustawiam filtr niestandardowy – działa:

kliknij, aby powiększyć

Filtr działa i wskazuje właściwe rekordy. To samo zrobiłam za pomocą procedury VBA, odwołując się do komórki I1 arkusza, gdzie jest wartość roku:

Public Sub Filtruj()
Dim JROK As Integer
Dim JDataOD As Date
Dim JDataDO As Date
With Arkusz1
JROK = .Range(„I1”)
JDataOD = DateSerial(JROK, 1, 1)
JDataDO = DateSerial(JROK, 12, 31)
.ListObjects(„Tabela1”).Range.AutoFilter Field:=6, Criteria1:= _
„>=” & JDataOD, Operator:=xlAnd, Criteria2:=”<=” & JDataDO
End With
End Sub

Również pięknie działa. Niestety, nie wszędzie. Na komputerze docelowym. gdzie miał pracować – – filtr uruchamiany procedurą nie działał. Wprawdzie tu przedstawiam tylko symulację problemu, prawdziwy plik był bardziej rozbudowany, ale problem wystąpił właśnie w tym miejscu. Co ciekawe –  przy sztywnym wpisaniu kryteriów w kodzie – było OK.
Cóż, nie wiem jakie były ustawienia systemowe tamtego komputera,
w zasadzie wiem tylko, że to Excel 2021 i nic poza tym. Udało mi się rozwiązać problem w wypróbowany już wcześniej sposób. Za każdym razem, gdy mam do czynienia z problemami z datami (zarówno w Excelu jak i Accessie) – zamieniam daty na liczby.
Data i czas to liczby
W tym konkretnym przypadku – wstawiam do tabeli nową kolumnę (można ją ukryć), która będzie bezpośrednio odwoływać się do daty, ale będzie sformatowana jako liczba.

kliknij, aby powiększyć

Po dopasowaniu procedury VBA:

Public Sub Filtruj()
Dim JROK As Integer
Dim JDataOD As Date
Dim JDataDO As Date
Dim LDataOD As Long
Dim LDataDO As Long
With Arkusz1
JROK = .Range(„I1”)
JDataOD = DateSerial(JROK, 1, 1)
JDataDO = DateSerial(JROK, 12, 31)
LDataOD = CLng(JDataOD)
LDataDO = CLng(JDataDO)
.ListObjects(„Tabela1”).Range.AutoFilter Field:=7, Criteria1:= _
„>=” &LDataOD, Operator:=xlAnd, Criteria2:=”<=” &LDataDO
End With
End Sub

Zadziałało od razu bez problemu.

Funkcja Jeżeli

Funkcja Jeżeli() to jedna z funkcji logicznych Excela. Odzwierciedla wartość instrukcji Jeżeli … to … w przeciwnym przypadku …

Argumenty funkcji to:

    • Test_logiczny – dowolny warunek, który daje odpowiedź Prawda lub Fałsz. A
    • Wartość_jeżeli_prawda – wynik działania funkcji, jeżeli  warunek jest spełniony
    • Wartość_jeżeli_fałsz – wynik działania funkcji, jeżeli  warunek nie jest spełniony

Jest to jedna z najczęściej używanych funkcji Excela. Warto pamiętać, że test logiczny musi być precyzyjnie określony, gdyż mogą pojawić się niespodzianki.

Odpowiednikiem funkcji w VBA jest funkcja instrukcja If…Then…Else


Kurs Excel na rozmowie rekrutacyjnej

 

Funkcja Czy.Pusta

Funkcja CZY.PUSTA to jedna z funkcji informacyjnych Excela. Zwraca wartość typu logicznego (Prawda lub Fałsz), informując, czy dana komórka jest pusta czy nie.

Funkcja ma jeden argument – odwołanie do komórki, którą chcemy sprawdzić.
Jeżeli w komórce jest formuła, której wynikiem jest pusty łańcuch tekstowy – komórka ta nie jest pusta.

Odpowiednikiem funkcji w VBA jest funkcja IsEmpty()


Kurs Excel 2019 od podstaw