Почему эта формула DAX не работает?

В настоящее время я использую формулу DAX, чтобы попытаться удалить числа из строки. Строка - это первая половина почтового индекса. Поэтому я ввел следующие формулы

=if(Istext(mid([Postcode District],1,1)),(left([postcode district],2)),(left([postcode district],1)))

что это ДОЛЖНО сделать, так это проверить, является ли второй символ текстом, и вернуть 2 буквы, если это так, и одну, если это не так.

Например, ввод CA1 должен возвращать CA, а B22 должен возвращать B

Это просто не так, и я не уверен, почему. все, что возвращается, - это первые две буквы, независимо от того, является ли вторая буква текстовой ИЛИ числовой.


person Miller86    schedule 21.07.2015    source источник
comment
извините pnuts, не могли бы вы полностью объяснить это в формате ответа для меня, пожалуйста? Не уверен, что вы имеете в виду.   -  person Miller86    schedule 21.07.2015
comment
Я не думаю, что DAX распознает CODE как операцию?   -  person Miller86    schedule 21.07.2015
comment
Не надо извиняться за гайки :) Я просто рад, что у меня есть предложения   -  person Miller86    schedule 22.07.2015


Ответы (2)


Функция MID принимает строку в качестве аргумента и всегда возвращает строку (даже если она выглядит как число), поэтому ваш IsText всегда ИСТИНА.

Попробуй это

=if(IsNumber(mid([Postcode District],1,1)*1),(left([postcode district],1)),(left([postcode district],2)))
person Gordon K    schedule 21.07.2015
comment
Спасибо, Гордон, я попробую :). В качестве примечания, поскольку это формула DAX, а не стандартная формула Excel, местоположения расположены справа налево (т.е. 1 = 0, 2 = 1, 3 = 2 и т. Д.) - person Miller86; 21.07.2015
comment
Спасибо, я отредактирую свой ответ, чтобы учесть это, на случай, если кто-то еще ищет такой же ответ. - person Gordon K; 21.07.2015

закончил использование =SUBSTITUTE(substitute(SUBSTITUTE( SUBSTITUTE( SUBSTITUTE( SUBSTITUTE( SUBSTITUTE( SUBSTITUTE( SUBSTITUTE( SUBSTITUTE([Postcode District],"1"," "),"2"," "), "3"," "),"4"," "),"5"," "), "6"," "),"7"," "),"8"," "),"9"," "),0,"") (как его DAX он примет это - слишком много вложенных функций для стандартного XL)

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

person Miller86    schedule 21.07.2015