W świecie controllingu, elastyczność i automatyzacja raportowania są dziś niezbędne. Coraz częściej kontrolerzy finansowi sięgają po narzędzia takie jak Power BI czy Power Query, które dają potężne możliwości przetwarzania danych – bez potrzeby użycia skomplikowanych makr czy kodów VBA. Jednym z kluczowych elementów tej układanki jest język M, czyli język zapytań używany w Power Query. W tym krótkim artykule przyjrzymy się jednemu z przykładów kodu M, który pokazuje, jak zbudować dynamiczną tabelę na podstawie danych z Excela – idealną do dalszej analizy w controllingu.
Z czego składa się kod M i co robi?
Oto przykład kodu:

let
Source = Excel.Workbook(File.Contents("C:\Users\cezar\Desktop\raw_data.xlsx"), true),
Data0 = Source{[Item="raw_data",Kind="Sheet"]}[Data],
PromotedHeaders = Table.PromoteHeaders(Data0, [PromoteAllScalars=true]),
Trimmed = Table.TransformColumns(PromotedHeaders, {
{"Region", Text.Trim, type text},
{"Kanał", Text.Trim, type text},
{"Produkt", Text.Trim, type text},
{"Kontrahent", Text.Trim, type text}
}),
ChangedType = Table.TransformColumnTypes(Trimmed, {{"Data", type date}}),
AddYearMonth = Table.AddColumn(ChangedType, "RokMiesiąc",
each Text.PadStart(Text.From(Date.Year([Data])),4,"0") & "-" &
Text.PadStart(Text.From(Date.Month([Data])),2,"0"), type text)
in
AddYearMonth
Ten kod buduje dynamiczną tabelę z danych zawartych w pliku Excel. Proces przebiega etapami, z których każdy przygotowuje dane do dalszej analizy:

1. Import danych z Excela
Kod zaczyna się od wczytania pliku Excela znajdującego się na dysku. Power Query odczytuje strukturę pliku i pobiera zawartość konkretnego arkusza o nazwie "raw_data"
. To typowa sytuacja w controllingu – analizy bazują na plikach wysyłanych regularnie z innych działów, często w nieidealnej formie.
2. Uporządkowanie struktury – nagłówki i formatowanie
Dane są wstępnie nieustrukturyzowane, dlatego Power Query „promuje” pierwszy wiersz do nagłówków tabeli. Następnie następuje istotny krok – oczyszczenie tekstów ze zbędnych spacji, co pozwala uniknąć błędów w późniejszych etapach raportowania i agregacji.

3. Konwersja dat i dodanie wymiaru analitycznego
Data jest konwertowana do odpowiedniego typu, by można było na niej operować. Kolejny krok to dodanie nowej kolumny „RokMiesiąc” w formacie YYYY-MM – to klasyczna technika używana w raportowaniu, która umożliwia wygodne grupowanie danych wg okresów.

Co z tego wynika dla controllingu?
Efektem końcowym jest czysta, ustrukturyzowana, dynamiczna tabela, którą można bez problemu analizować dalej – np. w Power BI, Excelu, czy przekazywać do innych narzędzi BI. Dzięki językowi M kod jest powtarzalny i można go łatwo edytować przy nowych wersjach pliku. To ogromna oszczędność czasu i mniej miejsca na błędy.
Dlaczego warto znać M code?
Mimo że może wyglądać technicznie, kod M jest prostszy niż się wydaje. Umożliwia:
- automatyzację wczytywania danych,
- eliminację błędów ludzkich (np. spacje, złe formaty dat),
- standaryzację raportów (np. spójne nazwy miesięcy, struktury kolumn),
- lepszą współpracę z Power BI.
Podsumowanie:
Ten niewielki kawałek kodu to świetny przykład tego, jak w prosty sposób można stworzyć potężne narzędzie do analizy danych. Wystarczy jeden klik, by odświeżyć cały raport. Dla działów controllingu to nie tylko oszczędność czasu, ale i gwarancja jakości danych.