Использовал функцию запроса мощности в Excel 2016, чтобы импортировать несколько файлов CSV, содержащих личную финансовую историю и пытающихся использовать функцию Power Pivot.

Проблема в том, что мне действительно нужно сгруппировать транзакции по категориям, но в исходных файлах такого нет. Я действительно не хочу добавлять это к исходным файлам, так как они автоматически генерируются из моего банка или вручную выбираются и группируются.

Итак, есть ли способ добавить шаг в редакторе мощных запросов, который бы добавил новый столбец со значением, основанным на текстовом поле и используя какую-то функцию switch/match/map?

В псевдокоде я думаю что-то вроде этого:

if [Column] in {"foo", "bar", "baz"} return "Cat A"
if [Column] starts with "blah" return "Cat B"
if [Column] matches /\d+/ return "Cat C"
else return No Cat

В качестве альтернативы, если есть какой-либо другой хороший способ решить эту проблему ...


Пример данных

╔══ Date ════╦══ Text ═══════════════════════════╦══ Amount ═╦══ (new) ══╗
║ 01.05.2014 ║ Boots Apotek Bogstadvn.34 Oslo    ║ -289,70   ║ Health    ║
║ 01.05.2014 ║ 143 Boots Apotek Skøyen           ║ -73,00    ║ Health    ║
║ 01.05.2014 ║ Rema Industriga Industrigata Oslo ║ -25,70    ║ Groceries ║
║ 30.09.2014 ║ Råh Avd Industr Industrigt 4 Oslo ║ -575,00   ║ Hair      ║
║ 30.09.2014 ║ Random stuff                      ║ -68,00    ║ Other     ║
║ 30.09.2014 ║ Rema Industriga Industrigata Oslo ║ -39,90    ║ Groceries ║
║ 29.09.2014 ║ To Church Betel                   ║ -200,00   ║ Offering  ║
║ 29.09.2014 ║ To Church Cornelius               ║ -200,00   ║ Offering  ║
║ 29.09.2014 ║ To Johnny Landlord                ║ -9 015,00 ║ Rent      ║
║ 29.09.2014 ║ To Johnny Landlord                ║ -500,00   ║ Other     ║
╚════════════╩═══════════════════════════════════╩═══════════╩═══════════╝

Так, например, я бы хотел

  • Здоровье, если текст содержит одно из названий "Boots Apotek" или других аптек
  • Продовольственные товары, если текст начинается с Rema или начинается с / содержит другое название магазина
  • Предложение, если текст содержит одно из списка церковных имен
  • Арендная плата, если текст содержит имя арендодателя и сумма превышает -9000, потому что все, что ниже, скорее всего, что-то еще

2 ответа2

0

Поскольку у вас, похоже, есть подход кодера, вы можете "Добавить столбец" и написать длинную вложенную инструкцию if, чтобы решить эту проблему, используя несколько функций PQ. Это будет выглядеть примерно так:

if Text.Contains ( "foo|bar|baz|" , [Column] & "|" ) then "Cat A" else if Text.StartsWith( [Column] , "blah" ) then "Cat B" else if not ( ( try Number.From ( [Column] ) otherwise null ) is null ) then "Cat C" else "No Cat"

0

Добавьте "Условный столбец". Это обеспечивает механизм правил, основанный на данных из других столбцов, и должен делать то, что вы хотите.

Всё ещё ищете ответ? Посмотрите другие вопросы с метками .