Непредвиденная ошибка: операция недопустима из-за текущего состояния объекта

#excel #powerquery #m

#excel #powerquery #m

Вопрос:

Я получаю указанную выше ошибку, когда пытаюсь запустить эту функцию для текстового столбца в power query [Excel]. Столбец содержит разные имена, и эта функция проверяет, есть ли в записи «AbbVie», «Roche» или «Pfizer». Он возвращает имена из списка, который присутствует в записи.

     (txt as text) =>
[
   
   create_val = (val as text,check as text, output as text) =>
     let 
       output = if Text.Contains(val,check)
       then Text.Combine({output, check},",")
       else output
     in
       output,
    final_value = List.Accumulate({"AbbVie","Roche","Pfizer"},"",(state,current) => create_val(txt,current,state))
][final_value]
  

Комментарии:

1. Помимо возврата начальной запятой, ваша функция, похоже, работает нормально автономно. Какой тип ввода приводит к ошибке, которую вы видите?

2. Я вызываю его в столбце моей таблицы. Столбец содержит только текстовые значения, например: Arbeitsgemeinschaft Gynakologische Onkologie AGO-Исследовательская группа по раку яичников Швейцарская группа клинических исследований рака — SAKK

Ответ №1:

Я тоже боролся с этим, поэтому я хотел бы поделиться тем, как я это решил.

Я использовал пользовательскую функцию рекурсивно, как средство реализации цикла. Оказывается, я изменял переменные из определения функции, то есть переменные, с которыми была вызвана функция. Объявляя локальные переменные, функция работала как ожидалось.