質問: スプレッドシートで Aのセルに「リンゴ」という文字があればBのセルに1を、同じく「バナナ」なら2を、「ミカン」なら3と表示させ、それを以下のセル全てに適用させたいです。 Arrayformula、IFS、FIND関数を使ってその数式を作ろうとしているのですが、うまくいかずにおります。 式の書き方が間違っているのだろうと思うのですが、よろしければ正しい書き方を教えていただけないでしょうか?あるいは、別の方法があればぜひご教示いただきたいです。 ![画像の説明をここに入力](https://i.stack.imgur.com/DL0xS.png)
回答: 回答 == `IFS`は使っていませんが、以下の式で実現できます。 ``` =ARRAYFORMULA(IF(ISERR(FIND("リンゴ",A1:A)),IF(ISERR(FIND("バナナ",A1:A)),IF(ISERR(FIND("ミカン",A1:A)),"",3),2),1)) ``` `FIND`は文字列が見つからなかったとき`#VALUE!`を返すのでエラー判定に`ISERR`を使いました。 `IFS`は使ったことがなかったので`IF`を使いました。 作り方 === 出来上がった式は長くて修正が難しいです。 機能追加や変更する場合は作り直した方が簡単な場合があるので、作り方を紹介します。 1.最初に基本的な式を作ります。 対象となる文字列が見つかった場合は所定の値を返し、見つからない場合は999を返す式です。 ``` =IF(ISERR(FIND("リンゴ",A1)),999,1) =IF(ISERR(FIND("バナナ",A1)),999,2) =IF(ISERR(FIND("ミカン",A1)),999,3) ``` 2.基本的な式を組み合わせます。 最初の式の999を次の式で置き換えます。 ``` =IF(ISERR(FIND("リンゴ",A1)),IF(ISERR(FIND("バナナ",A1)),999,2),1) ``` 対象となる文字列が見つかった場合は所定の値を返し、見つからない場合は、組み込んだ式の結果を返す式になります。 同様のやり方で、その次の式を組み込みます。 ``` =IF(ISERR(FIND("リンゴ",A1)),IF(ISERR(FIND("バナナ",A1)),IF(ISERR(FIND("ミカン",A1)),999,3),2),1) ``` 3.ARRAYFORMULAを適用します。 ARRAYFORMULA()を適用します。 ``` =ARRAYFORMULA(IF(ISERR(FIND("リンゴ",A1)),IF(ISERR(FIND("バナナ",A1)),IF(ISERR(FIND("ミカン",A1)),999,3),2),1)) ``` 適用範囲をA列すべてのセルとします。※`A1`を`A1:A`に置き換えます。 ``` =ARRAYFORMULA(IF(ISERR(FIND("リンゴ",A1:A)),IF(ISERR(FIND("バナナ",A1:A)),IF(ISERR(FIND("ミカン",A1:A)),999,3),2),1)) ``` 999を空文字列に置き換えます。これで出来上がり。 ``` =ARRAYFORMULA(IF(ISERR(FIND("リンゴ",A1:A)),IF(ISERR(FIND("バナナ",A1:A)),IF(ISERR(FIND("ミカン",A1:A)),"",3),2),1)) ```