2015-07-21 3 views
1

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

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

, что это следует сделать, это увидеть, если второй символ текста и вернуть 2 буквы, если она есть, один, если это не так.

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

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

+0

Извините, вы могли бы объяснить это полностью в формате ответа для меня, пожалуйста? Не уверен, что вы имеете в виду. – Miller86

+0

Я не думаю, что DAX распознает CODE как операцию? – Miller86

+1

Не нужно apoligise pnuts :) Я рад, что у меня есть предложения – Miller86

ответ

0

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

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

1

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

Попробуйте

=if(IsNumber(mid([Postcode District],1,1)*1),(left([postcode district],1)),(left([postcode district],2))) 
+0

Спасибо, Гордон, я попробую :). Как примечание, так как это формула DAX, а не стандартная Excel, места расположены справа (т.е. 1 = 0, 2 = 1, 3 = 2 и т. Д.) – Miller86

+0

Спасибо, я отредактирую свой ответ, чтобы принять учитывая это, если кто-либо ищет тот же ответ. –

Смежные вопросы