Google Sheets: несколько «если» и «найти» в формуле массива - PullRequest
0 голосов
/ 10 октября 2018

справочная информация - не важно

Я понимаю, что мне нужно улучшить понимание логики и понимания документации при игре с приложениями для Android.Итак, я подумал, что переключусь на Google Sheets в надежде на некоторую базовую практику в контексте, который мне может быть легче понять.

вопрос

Я настроил Google Sheet: https://docs.google.com/spreadsheets/d/1T7q_CGMFObxS_0DGikUdSdLTf97XmEPXY0S7yItuA5Y/edit?usp=sharing

Я бы хотел, чтобы в столбце B:

  • отображалось «Папка1», если в соседнем расположено «Черное»Ячейка столбца А.
  • отображает «Папка 2», если в соседней ячейке столбца А отображается «Синий».
  • отображает «Папка 3», если в соседней ячейке столбца А отображается «Зеленый».

и затем иметь возможность добавлять дополнительные условия.

Моя формула для столбца B в настоящее время:

=ARRAYFORMULA(
 IFS(
    find("Black", A2:A,1)>0,"Folder1",
    find("Blue", A2:A,1)>0,"Folder2",
    find("Green", A2:A,1)>0,"Folder3")
 )

, которая соответствует только первому условию "Folder1" если найден "Black" и он не продолжается с остальными пунктами if.

Я думаю, что я правильно его вложил, потому что все IFS() находятся на одном уровне с соответствующими имfind() внутри.И у меня есть две закрывающие скобки, которые закрывают IFS и ARRAYFORMULA.

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

Спасибо за ваши предложения о том, как я могу решить эту проблему!

1 Ответ

0 голосов
/ 11 октября 2018

Проблема в том, что find() возвращает число > 0, только если оно действительно находит совпадение.В противном случае он возвращает ошибку, которую вы не можете явно проверить.

Вы можете исправить свой код следующим образом:

=ARRAYFORMULA(
 IFS(
 isnumber(find("Black", A2:A,1)),"Folder1",
 isnumber(find("Blue", A2:A,1)),"Folder2",
 isnumber(find("Green", A2:A,1)),"Folder3")
 )

Теперь мы можем проверить, что то, что возвращает find(), является числоми код будет работать!Очевидно, я поставил несколько строк для ясности.

...