czwartek, 7 sierpnia 2025

Excel: Jak policzyć liczbę unikalnych wartości w kolumnie?

🔍 Co robi ta formuła?

Formuła zwraca liczbę unikalnych wartości w podanym zakresie, ignorując powtórzenia. Jest przydatna np. do liczenia liczby klientów, miast, produktów czy kategorii bez względu na to, ile razy się powtarzają.

📋 Formuła (Excel 365):

=LICZBA.WIERSZY(UNIKATOWE(A2:A100))

A2:A100 – zakres z wartościami, w których chcesz policzyć unikalne wpisy.

🧠 Jak działa ta formuła?

  • UNIKATOWE(A2:A100) – zwraca listę unikalnych wartości z danego zakresu.
  • LICZBA.WIERSZY(...) – zlicza, ile pozycji znajduje się w tej unikalnej liście.

⚠️ Wymagania

  • Działa w Excelu 365 i Excelu 2021 (funkcje dynamiczne).
  • W starszych wersjach trzeba użyć bardziej złożonych formuł tablicowych.

🛠️ Przykłady zastosowań

  • Policzenie liczby unikalnych klientów w bazie.
  • Analiza liczby różnych produktów w zamówieniach.
  • Sprawdzenie, ile unikalnych miast występuje w danych.

✅ Podsumowanie

To najprostszy sposób na policzenie unikalnych wartości w kolumnie lub wierszu. Dzięki funkcji UNIKATOWE całość działa dynamicznie – po dodaniu nowych danych wynik aktualizuje się automatycznie.

poniedziałek, 4 sierpnia 2025

Jak znaleźć ostatnią niepustą wartość w kolumnie?

🔍 Co robi ta formuła?

Ta formuła zwraca ostatnią niepustą wartość z danej kolumny (np. A:A), czyli najnowszy wpis. Jest szczególnie przydatna przy rejestrowaniu danych, np. ostatnia sprzedaż, ostatni wpis w logu, ostatni komentarz itp.

📋 Sprawdzona formuła (Excel 365):

=INDEKS(A:A; MAX(JEŻELI(A:A<>""; WIERSZ(A:A))))

Uwaga: W starszych wersjach Excela (np. 2019) formułę należy zatwierdzić Ctrl + Shift + Enter. W Excelu 365 wystarczy zwykłe Enter.

🧠 Jak działa ta formuła?

  • A:A<>"" – tworzy tablicę logiczną wskazującą niepuste komórki.
  • JEŻELI(...; WIERSZ(A:A)) – zwraca numery wierszy tylko dla niepustych komórek.
  • MAX(...) – wybiera największy numer wiersza (czyli ostatni niepusty).
  • INDEKS(A:A; ...) – zwraca wartość z tej komórki.

🛠️ Przykład użycia

Jeśli Twoje dane znajdują się w kolumnie A, a ostatnia wartość to „Zamknięte”, formuła ją automatycznie zwróci, bez potrzeby ręcznego przeszukiwania listy.

✅ Zastosowania

  • Ostatnia transakcja sprzedaży.
  • Ostatni wpis do rejestru obecności.
  • Ostatnia zmiana statusu projektu.

✅ Podsumowanie

To prosta, ale bardzo praktyczna formuła, gdy chcesz szybko uzyskać ostatnią wpisaną wartość w kolumnie. Nie wymaga VBA ani Power Query – wystarczy formuła tablicowa.

Excel VBA: Makro do kopiowania danych między arkuszami z dynamicznym wyborem zakresu

🔍 Co robi to makro?

Makro umożliwia użytkownikowi wybranie zakresu komórek do skopiowania poprzez okienko InputBox i skopiowanie ich do innego arkusza (domyślnie do „Arkusz2”). Idealne do przenoszenia danych między zakładkami lub przygotowywania raportów.

📋 Kod VBA – każda linia od nowego wiersza

Sub KopiujZakres()
  Dim zakres As Range
  Dim wsZrodlo As Worksheet
  Dim wsDocelowy As Worksheet

  Set wsZrodlo = ActiveSheet
  On Error Resume Next
  Set zakres = Application.InputBox("Zaznacz zakres do skopiowania", "Wybór zakresu", Type:=8)
  On Error GoTo 0

  If zakres Is Nothing Then
    MsgBox "Nie wybrano zakresu. Makro przerwane.", vbExclamation
    Exit Sub
  End If

  Set wsDocelowy = Worksheets("Arkusz2")

  zakres.Copy Destination:=wsDocelowy.Range("A1")

  MsgBox "Zakres został skopiowany do 'Arkusz2'.", vbInformation
End Sub

🛠️ Jak działa to makro?

  1. Użytkownik wybiera zakres danych (np. A1:D20) poprzez InputBox.
  2. Makro kopiuje te dane z aktywnego arkusza do „Arkusz2”.
  3. Dane zostają wklejone od komórki A1 w arkuszu docelowym.

💡 Co możesz zmienić?

  • Zmień nazwę arkusza docelowego (np. „Raport” zamiast „Arkusz2”).
  • Wklej dane w inne miejsce – zmień Range("A1") na dowolną komórkę.
  • Dodaj pętlę, by wklejać dane za każdym razem w nowym wierszu (dla logów lub historii).

✅ Podsumowanie

To makro daje użytkownikowi pełną kontrolę nad tym, co i skąd ma zostać skopiowane. Nie wymaga sztywno wpisanych zakresów – wszystko działa dynamicznie i interaktywnie.

sobota, 2 sierpnia 2025

3 sposoby na: porównanie dwóch list w Excelu – co się zgadza, a co nie?

🔍 Problem do rozwiązania

Masz dwie listy danych – np. kolumny z nazwiskami, produktami, kodami zamówień – i chcesz sprawdzić, które wartości są wspólne, a które różnią się między nimi? Oto 3 w pełni sprawdzone sposoby, jak porównać dwie listy w Excelu.

🧪 Sposób 1: Formuła z PODAJ.POZYCJĘ + CZY.BŁĄD

=JEŻELI(CZY.BŁĄD(PODAJ.POZYCJĘ(A2; B:B; 0)); "Brak"; "OK")

Opis: Sprawdza, czy wartość z komórki A2 istnieje w kolumnie B. Jeśli tak – zwraca „OK”, jeśli nie – „Brak”.

Przydatne do szybkiego porównania rekordów między dwiema listami.

🧪 Sposób 2: Formatowanie warunkowe – graficzne zaznaczenie różnic

  1. Zaznacz kolumnę A (np. A2:A100).
  2. Przejdź do: Formatowanie warunkowe → Nowa reguła → Użyj formuły.
  3. Wprowadź formułę:
    =CZY.BŁĄD(PODAJ.POZYCJĘ(A2; B:B; 0))
  4. Ustaw czerwone wypełnienie – Excel podświetli wartości, których nie ma w drugiej liście.

🧪 Sposób 3: Tabela przestawna – analizuj, nie szukaj

  1. Skopiuj obie listy do jednej kolumny (np. w kolumnie C).
  2. Obok utwórz kolumnę z nazwą źródła: „Lista 1” lub „Lista 2”.
  3. Zaznacz dane i wstaw tabelę przestawną.
  4. Do „Wierszy” dodaj wartości, a do „Kolumn” – źródło listy.
  5. Otrzymasz macierz, która pokazuje dokładnie, które dane są wspólne, a które unikalne.

✅ Którą metodę wybrać?

  • Formuła z PODAJ.POZYCJĘ – szybka i elastyczna, do wielu rekordów.
  • Formatowanie warunkowe – wizualna analiza, idealna do prezentacji lub czyszczenia danych.
  • Tabela przestawna – najlepsza do porównań zbiorczych i analiz.

🧠 Przykłady zastosowania

  • Porównanie list klientów w dwóch miesiącach.
  • Sprawdzenie, które zamówienia zostały zrealizowane, a które nie.
  • Weryfikacja zgodności danych z dwóch różnych źródeł.

✅ Podsumowanie

Porównywanie list to jedno z najczęstszych zadań w Excelu. Dzięki odpowiednim funkcjom lub narzędziom możesz szybko zidentyfikować różnice, duplikaty lub braki – bez potrzeby manualnego przeszukiwania arkuszy.

3 sposoby na: policzenie ile razy dana wartość występuje w Excelu

🔍 Problem do rozwiązania

Masz listę danych i chcesz sprawdzić, ile razy pojawia się dana wartość (np. imię, produkt, numer zamówienia)? Oto 3 proste i skuteczne sposoby, aby to policzyć w Excelu – każdy z nich działa w polskiej wersji Excela i został przetestowany.

🧪 Sposób 1: LICZ.JEŻELI – klasyka

=LICZ.JEŻELI(A2:A100; "Anna")

Opis: Liczy, ile razy w zakresie A2:A100 występuje słowo „Anna”.

🧪 Sposób 2: LICZ.WARUNKI – jeśli chcesz więcej niż 1 warunek

=LICZ.WARUNKI(A2:A100; "Anna"; B2:B100; "Warszawa")

Opis: Liczy tylko te przypadki, gdzie w kolumnie A jest „Anna” i w kolumnie B „Warszawa”.

🧪 Sposób 3: Tabela przestawna – graficznie i bez formuł

  1. Zaznacz dane (np. A1:B100).
  2. Przejdź do Wstaw → Tabela przestawna.
  3. Przeciągnij kolumnę z wartością (np. imię) do pola „Wiersze” oraz do „Wartości”.
  4. Excel automatycznie policzy, ile razy każda wartość występuje.

✅ Którą metodę wybrać?

  • LICZ.JEŻELI – najlepsza do pojedynczych warunków.
  • LICZ.WARUNKI – gdy chcesz zliczać z filtrem (np. tylko dla konkretnego miasta).
  • Tabela przestawna – super wizualna metoda do raportów.

🧠 Przykłady zastosowań

  • Ilu razy wystąpiło dane imię w formularzu?
  • Ile zamówień miało status „zrealizowane”?
  • Ile razy dany produkt pojawia się w bazie?

✅ Podsumowanie

Excel oferuje wiele metod do liczenia powtórzeń — od prostych formuł, po dynamiczne zestawienia. Wybierz sposób, który najlepiej pasuje do Twojej sytuacji: formuła do automatyzacji lub tabela przestawna do szybkiej analizy.

piątek, 1 sierpnia 2025

Excel VBA: Makro do tworzenia kopii zapasowej arkusza w nowym pliku

🔍 Co robi to makro?

Makro automatycznie tworzy kopię zapasową aktywnego arkusza i zapisuje ją w nowym pliku Excel w folderze użytkownika. Nadaje plikowi nazwę zawierającą datę i godzinę, dzięki czemu nie nadpisuje poprzednich wersji.

📋 Kod VBA: każda linia od nowego wiersza

Sub ZrobKopieZapasowa()
  Dim nowyPlik As Workbook
  Dim nazwaPliku As String
  Dim folderDocelowy As String

  folderDocelowy = Environ("USERPROFILE") & "\Pulpit\"

  nazwaPliku = "KopiaZapasowa_" & Format(Now, "yyyy-mm-dd_hh-nn-ss") & ".xlsx"

  ActiveSheet.Copy
  Set nowyPlik = ActiveWorkbook

  Application.DisplayAlerts = False
  nowyPlik.SaveAs folderDocelowy & nazwaPliku, FileFormat:=xlOpenXMLWorkbook
  Application.DisplayAlerts = True

  nowyPlik.Close SaveChanges:=False

  MsgBox "Utworzono kopię zapasową na pulpicie: " & nazwaPliku, vbInformation
End Sub

🛠️ Jak działa to makro?

  1. Tworzy kopię aktywnego arkusza (nie całego skoroszytu).
  2. Zapisuje ją w formacie .xlsx na pulpicie użytkownika.
  3. Nazwa pliku zawiera dokładną datę i godzinę utworzenia.
  4. Plik jest automatycznie zamykany – gotowy do archiwizacji.

💡 Co możesz zmienić?

  • Zmień lokalizację zapisu, np. na konkretny folder sieciowy lub dysk D.
  • Możesz dodać dodatkowe zabezpieczenie pliku hasłem (zaawansowane).
  • Możesz kopiować cały skoroszyt zamiast pojedynczego arkusza (np. ThisWorkbook.SaveCopyAs).

✅ Podsumowanie

To makro pozwala błyskawicznie utworzyć kopię zapasową arkusza bez potrzeby ręcznego zapisywania i zmieniania nazw. Idealne do zabezpieczania danych przed edycją lub jako wersjonowanie w pracy z raportami.

Excel VBA: Makro do zablokowania arkusza hasłem (automatyczne zabezpieczenie danych)

🔍 Co robi to makro?

To proste makro VBA blokuje aktywny arkusz Excela przy użyciu hasła. Dzięki temu nikt nie może edytować zawartości arkusza bez znajomości hasła. Świetnie nadaje się do zabezpieczenia formuł, struktury lub gotowych raportów.

📋 Kod VBA: każda linia od nowego wiersza

Sub ZabezpieczArkusz()
  Dim haslo As String
  Dim ws As Worksheet

  Set ws = ActiveSheet

  haslo = InputBox("Podaj hasło, którym chcesz zabezpieczyć arkusz:", "Ustawianie hasła")

  If haslo = "" Then
    MsgBox "Nie podano hasła. Makro przerwane.", vbExclamation
    Exit Sub
  End If

  ws.Protect Password:=haslo, DrawingObjects:=True, Contents:=True, Scenarios:=True

  MsgBox "Arkusz został zabezpieczony hasłem.", vbInformation
End Sub

🛠️ Jak działa to makro?

  1. Makro pyta użytkownika o hasło (okienko).
  2. Jeśli hasło zostało podane, arkusz zostaje zablokowany.
  3. Użytkownik bez hasła nie będzie mógł zmieniać zawartości komórek, formuł, formatowania itp.

💡 Co możesz zmodyfikować?

  • Możesz ustawić hasło na sztywno, np. haslo = "1234" (bez inputboxa).
  • Możesz dodać parametr AllowFiltering:=True, jeśli chcesz, aby filtrowanie było dostępne mimo blokady.
  • Dodaj opcję UserInterfaceOnly:=True, jeśli chcesz, by makra nadal działały mimo blokady.

✅ Podsumowanie

To makro zabezpiecza arkusz w kilka sekund. Idealne do tworzenia chronionych szablonów, formularzy lub raportów, które nie powinny być przypadkowo modyfikowane przez użytkowników końcowych.

Excel VBA: Makro do automatycznego usuwania pustych wierszy z danych

🔍 Co robi to makro?

To makro przeszukuje aktywny arkusz i usuwa wszystkie całkowicie puste wiersze. Jest idealne do czyszczenia danych po imporcie, scalaniu różnych plików lub kopiowaniu zawartości z Internetu.

📋 Kod VBA: każda linia od nowego wiersza

Sub UsunPusteWiersze()
  Dim ws As Worksheet
  Dim i As Long
  Set ws = ActiveSheet

  Application.ScreenUpdating = False

  For i = ws.Cells(ws.Rows.Count, 1).End(xlUp).Row To 1 Step -1
    If Application.WorksheetFunction.CountA(ws.Rows(i)) = 0 Then
      ws.Rows(i).Delete
    End If
  Next i

  Application.ScreenUpdating = True

  MsgBox "Usunięto wszystkie puste wiersze.", vbInformation
End Sub

🛠️ Jak działa to makro?

  1. Makro działa na aktywnym arkuszu.
  2. Przeszukuje wszystkie wiersze od dołu do góry (żeby nie pomijać żadnych po usunięciu).
  3. Sprawdza, czy wiersz jest całkowicie pusty.
  4. Jeśli tak – usuwa go.

💡 Co możesz zmienić?

  • Możesz ograniczyć działanie makra tylko do zakresu (np. A1:G1000).
  • Możesz dodać warunek, aby usuwać tylko puste wiersze w konkretnej kolumnie.

✅ Podsumowanie

To makro to szybki sposób na oczyszczenie danych w Excelu bez ręcznego zaznaczania i kasowania pustych wierszy. Niezastąpione przy pracy z dużymi plikami importowanymi z zewnętrznych źródeł lub przygotowywaniu danych do analizy.