Вот подход Power Query, который, кажется, работает.
Начиная со своей таблицы как Table1:
Я добавил настраиваемый столбец:
Вот код M для формулы настраиваемого столбца:
if List.ContainsAny(
Text.Split(Text.Upper([Question])," "),
List.Transform({"ADW", "Wachtwoord","reset","Resetten", "Uitvraagscript", "Profile","Citrix", "Aanvraag"}, each Text.Upper(_))
)
then if List.ContainsAny(
Text.Split(Text.Upper([Categorie]),""),
List.Transform({"Active directory", "citrix"}, each Text.Upper(_))
)
then "match"
else "no match"
else "no match"
Что он делает, это разбивает каждая строка столбца Вопрос в список его слов, затем сравнивает этот список со списком ваших слов, {"ADW", "Wachtwoord", "reset", "Resetten", "Uitvraagscript", "Profile", " Citrix "," Aanvraag "}, чтобы увидеть, есть ли какие-либо слова в вашем списке слов в этом списке, созданном из строки Вопроса. Если есть совпадение, то оно делает то же самое со столбцом Категория ie. Но ... для столбца Категория ie он действительно создает только один список элементов для каждой строки. Другими словами ... В качестве примера, "Verzoek resetten wachtwoord" из Вопроса становится списком {"VERZOEK", "RESETTEN", "WACHTWOORD"} и "Active Directory" из категории ie становится списком {" АКТИВНАЯ КАТАЛОГ "}. Если в обоих списках есть совпадение, то возвращается «совпадение». В противном случае возвращается «нет совпадения».
Text.Split - это то, что преобразуется в список. List.ContainsAny - это то, что сравнивает содержимое списка. Я использовал Text.Upper, чтобы принудительно ввести информацию о категории вопроса ie в верхний регистр, и я использовал List.Transform, чтобы заставить списки ваших слов в верхний регистр, чтобы обеспечить соответствующее сравнение для сопоставления.
Вот мой результат: