Почему эта формула переключения возвращает #N/A?

Строка, которую он ищет (A2):

<Column Name = "Col1" Type = "System.Int32" DbType = "Int NOT NULL" CanBeNull = "false" />

=SWITCH(A2, ISNUMBER(FIND("Int32", A2)), "Int32", ISNUMBER(FIND("DateTime", A2)), "DateTime",  ISNUMBER(FIND("String", A2)), "String",  ISNUMBER(FIND("Double", A2)), "Double",  ISNUMBER(FIND("Decimal", A2)), "Decimal",  ISNUMBER(FIND("Boolean", A2)), "Boolean")

Он должен вернуть Int32, но вместо этого возвращает #N/A.

Почему?

Преобразование HTML-таблицы в профессиональный документ Excel
Преобразование HTML-таблицы в профессиональный документ Excel
Это самый простой способ создания Excel из HTML-таблицы.
Импорт excel в laravel в базу данных
Импорт excel в laravel в базу данных
Здравствуйте, дорогой читатель, в этой статье я расскажу практическим и быстрым способом, как импортировать файл Excel в вашу базу данных с помощью...
0
0
60
2
Перейти к ответу Данный вопрос помечен как решенный

Ответы 2

Используйте TRUE в качестве первого аргумента:

=SWITCH(TRUE, ISNUMBER(FIND("Int32", A2)), "Int32", ISNUMBER(FIND("DateTime", A2)), "DateTime",  ISNUMBER(FIND("String", A2)), "String",  ISNUMBER(FIND("Double", A2)), "Double",  ISNUMBER(FIND("Decimal", A2)), "Decimal",  ISNUMBER(FIND("Boolean", A2)), "Boolean")

Проблема в том, что в его текущей форме вы пытаетесь сравнить весь текст A2 с результатом ISNUMBER(FIND()), который является логическим значением.

Другой вариант IFS:

=IFS(ISNUMBER(FIND("Int32", A2)), "Int32", ISNUMBER(FIND("DateTime", A2)), "DateTime",  ISNUMBER(FIND("String", A2)), "String",  ISNUMBER(FIND("Double", A2)), "Double",  ISNUMBER(FIND("Decimal", A2)), "Decimal",  ISNUMBER(FIND("Boolean", A2)), "Boolean")

но... гораздо более приятное решение от @ScottCraner с использованием LET и FILTER:

=@LET(x,{"Int32","DateTime","String","Double","Decimal","Boolean"},FILTER(x,ISNUMBER(FIND(x,A2))))
Ответ принят как подходящий

Ваши данные имеют формат xml, вы можете использовать функцию FILTERXML, например,

В B2 введите формулу:

=FILTERXML(SUBSTITUTE(A2,"System.",""),"//@Type")

Даже лучше, очень красиво.

BigBen 12.12.2020 16:48

Другие вопросы по теме