М-Excel: что это такое, как работает и где применяется в 2026 году

Если в Microsoft Excel при работе с Power Query или Get & Transform вы увидели код на незнакомом языке, начинающийся с let...in, — это и есть М-Excel (или просто M). Это функциональный язык программирования, встроенный в инструменты преобразования данных Excel, начиная с версии 2016. Он автоматически генерируется при записи действий в редакторе Power Query, но также позволяет писать собственные скрипты для сложной обработки данных — от очистки столбцов до объединения таблиц из разных источников.

Многие пользователи путают М-Excel с классическими формулами Excel (например, ВПР или СУММЕСЛИМН), но это принципиально разные инструменты. М не работает в ячейках таблицы — он выполняется на этапе загрузки данных в Power Query, что делает его незаменимым для автоматизации рутинных операций с большими массивами. Например, с его помощью можно за 5 минут объединить 10 файлов .csv с разной структурой, тогда как вручную на это ушли бы часы.

В этой статье разберём, как М-Excel интегрирован в Excel, какие задачи решает эффективнее классических методов, и приведём практические примеры кода для начинающих. Также объясним, почему знание основ М становится обязательным навыком для аналитиков данных в 2026 году — особенно после выхода обновлений Microsoft 365 с расширенными возможностями Power Query.

Что такое М-Excel: определение и отличие от формул Excel

М-Excel (или Power Query Formula Language) — это язык запросов, разработанный Microsoft специально для инструмента Power Query (в новых версиях Excel называется Get & Transform). Его основное назначение — преобразование, очистка и объединение данных из различных источников до их загрузки в таблицу Excel.

Ключевые отличия М от классических формул Excel:

  • 🔹 Место выполнения: М работает в Power Query Editor, а не в ячейках. Результат его выполнения — это таблица, которую вы загружаете в Excel, а не значение в одной ячейке.
  • 🔹 Синтаксис: использует функциональный подход с конструкциями let...in, в то время как Excel оперирует ячейками (=A1+B1).
  • 🔹 Источники данных: может подключаться к SQL, JSON, XML, папкам с файлами, веб-страницам, тогда как формулы Excel работают только с данными внутри книги.
  • 🔹 Производительность: оптимизирован для обработки миллионов строк, тогда как формулы Excel тормозят на больших массивах.

Пример: если вам нужно объединить 50 файлов .xlsx из папки, добавить столбец с процентом от общего итога и отфильтровать строки по условию — в Excel на формулах это займёт часы и потребует промежуточных таблиц. В М-Excel та же задача решается 10 строками кода и выполняется за секунды.

⚠️ Внимание: М-Excel не заменяет формулы Excel, а дополняет их. Например, после загрузки данных из Power Query вы можете использовать СУММЕСЛИ или INDEX для дальнейшего анализа.

Где используется М-Excel: основные сценарии применения

Язык М интегрирован во все продукты Microsoft, где есть Power Query:

  • 📊 Excel (начиная с 2016 года, полноценно — с 2019)
  • 📈 Power BI (основной инструмент для ETL-процессов)
  • 🖥️ Power Query OnlineMicrosoft Fabric)
  • 📂 Azure Data Factory (для облачных пайплайнов)

Типичные задачи, которые решает М-Excel:

Задача Пример на М Альтернатива в Excel
Объединение таблиц Table.Join(Table1, "ID", Table2, "ID") ВПР или INDEX/POSITION
Фильтрация строк Table.SelectRows(#"Предыдущий шаг", each [Столбец] > 100) Фильтр таблицы или ФИЛЬТР
Преобразование типов данных Table.TransformColumnTypes(Таблица, {{"Дата", type date}}) Ручная замена формата ячеек
Агрегация данных Table.Group(Таблица, {"Категория"}, {{"Сумма", each List.Sum([Значение]), type number}}) СУММЕСЛИМН или сводные таблицы

Главное преимущество М — автоматизация повторяющихся действий. Например, если каждый месяц вам приходят отчёты от 10 филиалов в разных форматах, вы можете один раз написать скрипт на М, который будет их объединять и очищать, а затем просто обновлять данные в один клик.

📊 Как часто вы используете Power Query в Excel?
Никогда не пробовал
Иногда для простых задач
Регулярно для обработки данных
Пишу собственные скрипты на М

Базовый синтаксис М-Excel: разбор конструкции let...in

Любой скрипт на М начинается с ключевого слова let, за которым следуют шаги преобразований, и заканчивается in с указанием финального результата. Пример минимального кода:

let

Источник = Excel.CurrentWorkbook(){[Name="Таблица1"]}[Content],

ФильтрованныеДанные = Table.SelectRows(Источник, each [Столбец1] > 0)

in

ФильтрованныеДанные

Разберём элементы:

  • 📌 Источник — переменная, хранящая исходные данные (здесь — таблицу из текущей книги Excel).
  • 📌 ФильтрованныеДанные — новый шаг, где мы фильтруем строки по условию.
  • 📌 in — указывает, какой из шагов является финальным результатом.

Особенности синтаксиса М:

  • 🔸 Регистрозависимость: Table.SelectRows и table.selectrows — разные вещи (вторая вызовет ошибку).
  • 🔸 Отступы: не обязательны для работы кода, но критичны для читаемости.
  • 🔸 Комментарии: начинаются с // (однострочные) или / ... / (многострочные).
⚠️ Внимание: Если вы копируете код М из интернета, убедитесь, что в нём используются точки (Table.SelectRows), а не запятые (Table,SelectRows) — это распространённая ошибка при ручном вводе.
Пример сложного скрипта на М

Скрипт ниже объединяет данные из папки с файлами, добавляет столбец с именем файла-источника и рассчитывает долю каждой строки от общего итога:

let

// Получаем список файлов в папке

Источник = Folder.Files("C:\Отчёты\2026"),

// Фильтруем только Excel-файлы

ФайлыExcel = Table.SelectRows(Источник, each [Extension] = ".xlsx"),

// Загружаем данные из каждого файла

Данные = Table.Combine(

List.Transform(

ФайлыExcel[Content],

(файл) => Excel.Workbook(файл){[Item="Лист1",Kind="Sheet"]}[Data]

)

),

// Добавляем столбец с именем источника

СИменемФайла = Table.AddColumn(Данные, "Источник", each ФайлыExcel{List.PositionOf(ФайлыExcel[Name], [ИмяФайла])}[Name], type text),

// Рассчитываем долю от общего итога

СДолями = Table.AddColumn(СИменемФайла, "Доля", each [Значение] / List.Sum(СИменемФайла[Значение]), type number)

in

СДолями

Как начать работать с М-Excel: пошаговая инструкция для новичков

Чтобы попробовать М, не нужно устанавливать дополнительные программы — он уже встроен в ваш Excel (если версия не старше 2016 года). Следуйте инструкции:

  1. Откройте Power Query Editor:
    • Перейдите на вкладку ДанныеПолучить данныеИз других источниковПустой запрос.
    • В открывшемся редакторе выберите ДополнительноДополнительный редактор.
  2. Напишите первый скрипт:

    Вставьте код ниже и нажмите Готово:

    let
    

    Источник = {1..10},

    Квадраты = List.Transform(Источник, each _ * _)

    in

    Квадраты

    Этот код создаёт список чисел от 1 до 10 и возводит каждое в квадрат.

  3. Загрузите результат в Excel:
    • Нажмите Закрыть и загрузить → данные появятся на новом листе.

Для практики попробуйте модифицировать код:

  • 🔢 Замените {1..10} на {5..15} — диапазон чисел изменится.
  • 🔢 Вместо _ * _ используйте _ + 10 — каждое число увеличится на 10.

1. Проверил версию Excel (2016 или новее)

2. Нашёл вкладку "Данные" → "Получить данные"

3. Создал пустой запрос и открыл дополнительный редактор

4. Вставил тестовый код и убедился, что нет синтаксических ошибок

5. Успешно загрузил результат в Excel-->

Топ-5 функций М-Excel, которые заменят сотни строк формул Excel

Некоторые операции в М выполняются одной строкой кода, тогда как в классическом Excel для этого потребуются десятки формул или макросов. Рассмотрим самые полезные функции:

1. Table.Join — объединение таблиц по ключу

Аналог ВПР, но работает с целыми таблицами и поддерживает разные типы объединений (JoinKind.LeftOuter, JoinKind.Inner и др.). Пример:

Table.Join(Таблица1, "ID", Таблица2, "ID", JoinKind.LeftOuter)

2. Table.Group — группировка с агрегацией

Замена сводным таблицам. Позволяет рассчитывать суммы, средние, количество уникальных значений и др. за один шаг:

Table.Group(

Таблица,

{"Категория"},

{

{"Сумма", each List.Sum([Значение]), type number},

{"Среднее", each List.Average([Значение]), type number}

}

)

3. Table.Pivot / Table.Unpivot — трансформация структуры

Преобразует "широкие" таблицы в "длинные" и наоборот. Например, если у вас данные по месяцам в столбцах (Январь, Февраль), а нужно в строках:

Table.UnpivotOtherColumns(Таблица, {"Продукт"}, "Месяц", "Продажи")

4. List.Accumulate — накопление значений

Позволяет выполнять итеративные вычисления (например, расчёт скользящего среднего или накопленного итога):

List.Accumulate(

{1..10},

0,

(state, current) => state + current

)

5. Web.Page — парсинг данных с веб-страниц

Извлекает таблицы с сайтов без необходимости копировать данные вручную:

Web.Page(Web.Contents("https://example.com/data"))

Эти функции покрывают 80% задач по преобразованию данных. Для остальных случаев в М есть более 700 встроенных функций (полный список — в официальной документации Microsoft).

Распространённые ошибки при работе с М-Excel и как их избежать

Даже опытные пользователи Excel сталкиваются с ошибками в М из-за особенностей синтаксиса. Вот самые частые проблемы и их решения:

Ошибка Причина Решение
Expression.Error: The name 'Таблица' wasn't recognized Опечатка в имени переменной или она не объявлена Проверьте регистр и наличие let перед объявлением
Token Comma Expected Пропущена запятая между аргументами функции Добавьте запятую (например, Table.SelectRows(Таблица, each [Столбец] > 100))
DataFormat.Error: We couldn't convert to Number Попытка выполнить математическую операцию с текстом Используйте Table.TransformColumnTypes для преобразования типов
Expression.Error: The field 'Столбец' of the record wasn't found Ошибка в имени столбца (лишние пробелы, неверный регистр) Проверьте имя столбца в исходных данных (можно скопировать из заголовка таблицы)

Чтобы минимизировать ошибки:

  • 🔧 Используйте пошаговое создание запросов в интерфейсе Power Query, а затем изучайте сгенерированный код.
  • 🔧 Проверяйте типы данных с помощью Value.Type или Table.Schema.
  • 🔧 Для отладки используйте // для комментирования частей кода.
⚠️ Внимание: Если ваш скрипт перестал работать после обновления Excel, проверьте изменения в синтаксисе М для вашей версии. Например, в Excel 2021 некоторые функции были переименованы для совместимости с Power BI.

Продвинутые техники: как ускорить работу с М-Excel

Для обработки больших объёмов данных (миллионы строк) или сложных преобразований используйте эти приёмы:

1. Параметризация запросов

Создайте параметры, чтобы не править код при изменении условий. Например:

let

ПороговоеЗначение = 100, // Параметр

Источник = Excel.CurrentWorkbook(){[Name="Данные"]}[Content],

ФильтрованныеДанные = Table.SelectRows(Источник, each [Столбец1] > ПороговоеЗначение)

in

ФильтрованныеДанные

2. Использование Table.Buffer

Если один и тот же набор данных используется многократно, буферизуйте его для ускорения:

let

Источник = Table.Buffer(Excel.CurrentWorkbook(){[Name="Данные"]}[Content]),

// Далее Источник можно использовать многократно без повторной загрузки

Шаг1 = Table.SelectRows(Источник, each [Столбец1] > 0),

Шаг2 = Table.Group(Источник, {"Категория"}, {{"Сумма", each List.Sum([Значение]), type number}})

in

Шаг2

3. Оптимизация с помощью List.Generate

Для генерации последовательностей или рекурсивных вычислений:

// Генерирует числа Фибоначчи до 1000

List.Generate(

() => {0, 1},

each _[1] < 1000,

each {_[1], _[0] + _[1]}

)

4. Работа с Binary для неструктурированных данных

Позволяет читать бинарные файлы (например, .pdf или .jpg) и извлекать из них данные:

let

Файл = File.Contents("C:\Документы\отчёт.pdf"),

Текст = Pdf.Tables(Файл)[Data]{0}

in

Текст

Для изучения продвинутых техник рекомендуем официальный курс Microsoft по Power Query и сообщество Power BI Community, где делятся готовыми решениями.

FAQ: Частые вопросы о М-Excel

🔹 Можно ли использовать М-Excel в Excel Online?

Нет, Power Query (и соответственно М) доступен только в десктопных версиях Excel 2016 и новее, а также в Excel для Mac (начиная с версии 16.50). В Excel Online вы можете только просматривать результаты ранее созданных запросов, но не редактировать их.

🔹 Как сохранить скрипт М для использования в другом файле?

Скрипты М хранятся внутри файла Excel. Чтобы перенести их:

  1. Откройте Power Query EditorДополнительноДополнительный редактор.
  2. Скопируйте код (Ctrl+ACtrl+C).
  3. В новом файле создайте пустой запрос и вставьте код.

Для повторного использования сложных функций создавайте пользовательские функции в М (аналог ЛЯМБДА в Excel).

🔹 Почему мой код М работает в Power BI, но не работает в Excel?

Разница связана с:

  • Версией движка М (в Power BI он обновляется чаще).
  • Ограничениями Excel на некоторые функции (например, Web.Contents может блокироваться политиками безопасности).
  • Разными настройками конфиденциальности данных (File/Web/Database).

Проверьте совместимость функций для вашей версии Excel.

🔹 Как отладить код М, если он не работает?

Используйте эти техники:

  • Пошаговое выполнение: В Power Query Editor следите за результатом каждого шага в панели Шаги применимых запросов.
  • Комментирование: Отключайте части кода с //, чтобы локализовать ошибку.
  • Просмотр данных: Вставляйте // Table.View(Таблица) перед проблемным участком.
  • Логирование: Добавьте столбец с отладочной информацией:
    Table.AddColumn(Таблица, "Отладка", each if [Столбец1] = null then "NULL" else "OK")
🔹 Где взять готовые примеры кода на М?

Источники с практическими примерами: