Przejdź do treści

Power Query & Excel – dynamiczna zamiana wartości null na puste ciągi tekstowe

Zamienimy dynamicznie wartości null na puste ciągi tekstowe we wszystkich kolumnach bez podawania ich tytułów.

Dane źródłowe

W powyższym zestawieniu w niektórych kolumnach pojawiają się wartości null. Zamienimy je na puste ciągi tekstowe w sposób dynamiczny.

Zamiana wartości null na puste ciągi tekstowe

Zamienimy wartość null na pusty ciąg tekstowy (pustą komórkę) w jednej kolumnie. Celem zadania jest dokonać zmian we wszystkich kolumnach, ale na tym etapie nie jest to konieczne.

  1. Kliknij PPM na dowolny tytuł kolumny
    1. Z menu kontekstowego wybierz opcję „Zamień wartości..”

Ustaw kryteria tak jak poniżej:

  • pole „Wartość do znalezienia” – wpisujemy wartość, która ma zostać zamieniona
  • pole „Zamień na” – wskazujemy wartość, która zastąpi starą

Dane prezentują się następująco:

Analiza funkcji do zamiany wartości

Struktura funkcji

= Table.ReplaceValue(nazwa_tabeli, wartość_do_zamiany, nowa_wartość, typ_funkcji_zmieniającej,{"nazwa_kolumny1", "nazwa kolumny2"})

Zastosowana funkcja

= Table.ReplaceValue(Źródło,null,"",Replacer.ReplaceValue,{"darmowa dostawa"})

W pierwszej części funkcji nazwa_tabeli wpisujemy nazwę tabeli na bazie której będzie wykonywana zamiana wartości. Tą tabelą jest krok o nazwie „Źródło”.

Następnie w miejscu wartość_do_zamiany wpisujemy starą wartość, a na pozycji nowa_wartość wskazujemy wartość zastępującą starą. W miejscu typ_funkcji_zmieniającej należy wpisać Replacer.ReplaceValue. Ta część kodu dokonuje zamiany wskazanych wartości.

W ostatniej części funkcji pomiędzy nawiasami klamrowymi należy wypisać nazwy kolumn, w których ma się dokonać zamiana wartości. Każdy tytuł kolumny musi być wpisany w odrębną parę cudzysłowów.

Problematyka funkcji Table.ReplaceValue()

Funkcja nie jest dynamiczna ze względu na zadeklarowane nazwy kolumn w tej części kodu: {„nazwa_kolumny”1, „nazwa kolumny2”}. Istnieje bardzo duże prawdopodobieństwo, że tytuł kolumny może zostać zmieniony.

Automatyzacja funkcji do zamiany wartości

Funkcja przed modyfikacją:

= Table.ReplaceValue(Źródło,null,"",Replacer.ReplaceValue,{"darmowa dostawa"})

Funkcja po modyfikacji:

= Table.ReplaceValue(Źródło,null,"",Replacer.ReplaceValue, Table.ColumnNames(Źródło) )

Funkcja Table.ColumnNames(Źródło) pobiera nazwy kolumn z poprzedniego kroku #"Źródło". W ten sposób tytuły kolumn są pobierane dynamicznie.

  1. Na liście „Zastosowane kroki” zaznacz krok „Zamień wartość”
    • Przejdź do paska formuły
    • tą część kodu {„darmowa dostawa”} zastąp funkcją Table.ColumnNames(Źródło)

Dane finalnie po modyfikacji formuły prezentują się następująco:

W sposób dynamiczny zostały zamienione wartości null na puste ciągi tekstowe. Jeżeli dojdzie nowa kolumn lub bieżąca nazwa dowolnej kolumny zostanie zmieniona to i tak funkcja dokona wskazanej zamiany wartości.