

スプレッドシートで  
Aのセルに「リンゴ」という文字があればBのセルに1を、同じく「バナナ」なら2を、「ミカン」なら3と表示させ、それを以下のセル全てに適用させたいです。

Arrayformula、IFS、FIND関数を使ってその数式を作ろうとしているのですが、うまくいかずにおります。

式の書き方が間違っているのだろうと思うのですが、よろしければ正しい書き方を教えていただけないでしょうか？あるいは、別の方法があればぜひご教示いただきたいです。

[![画像の説明をここに入力](https://i.stack.imgur.com/DL0xS.png)](https://i.stack.imgur.com/DL0xS.png)


CC BY-SA 4.0
2020-04-09T05:43:50.943
65484
2022-07-21T10:00:10.030
2020-04-09T05:53:21.323
3060
39522
question
google-spreadsheet
googleスプレッドシートでArrayformula、IFS、FIND関数を併用した数式の書き方についての質問


# 回答

`IFS`は使っていませんが、以下の式で実現できます。

[code]

    =ARRAYFORMULA(IF(ISERR(FIND("リンゴ",A1:A)),IF(ISERR(FIND("バナナ",A1:A)),IF(ISERR(FIND("ミカン",A1:A)),"",3),2),1))
    
[/code]

`FIND`は文字列が見つからなかったとき`#VALUE!`を返すのでエラー判定に`ISERR`を使いました。

`IFS`は使ったことがなかったので`IF`を使いました。

# 作り方

出来上がった式は長くて修正が難しいです。  
機能追加や変更する場合は作り直した方が簡単な場合があるので、作り方を紹介します。

## 1.最初に基本的な式を作ります。

対象となる文字列が見つかった場合は所定の値を返し、見つからない場合は999を返す式です。

[code]

    =IF(ISERR(FIND("リンゴ",A1)),999,1)
    =IF(ISERR(FIND("バナナ",A1)),999,2)
    =IF(ISERR(FIND("ミカン",A1)),999,3)
    
[/code]

## 2.基本的な式を組み合わせます。

最初の式の999を次の式で置き換えます。

[code]

    =IF(ISERR(FIND("リンゴ",A1)),IF(ISERR(FIND("バナナ",A1)),999,2),1)
    
[/code]

対象となる文字列が見つかった場合は所定の値を返し、見つからない場合は、組み込んだ式の結果を返す式になります。

同様のやり方で、その次の式を組み込みます。

[code]

    =IF(ISERR(FIND("リンゴ",A1)),IF(ISERR(FIND("バナナ",A1)),IF(ISERR(FIND("ミカン",A1)),999,3),2),1)
    
[/code]

## 3.ARRAYFORMULAを適用します。

ARRAYFORMULA()を適用します。

[code]

    =ARRAYFORMULA(IF(ISERR(FIND("リンゴ",A1)),IF(ISERR(FIND("バナナ",A1)),IF(ISERR(FIND("ミカン",A1)),999,3),2),1))
    
[/code]

適用範囲をA列すべてのセルとします。※`A1`を`A1:A`に置き換えます。

[code]

    =ARRAYFORMULA(IF(ISERR(FIND("リンゴ",A1:A)),IF(ISERR(FIND("バナナ",A1:A)),IF(ISERR(FIND("ミカン",A1:A)),999,3),2),1))
    
[/code]

999を空文字列に置き換えます。これで出来上がり。

[code]

    =ARRAYFORMULA(IF(ISERR(FIND("リンゴ",A1:A)),IF(ISERR(FIND("バナナ",A1:A)),IF(ISERR(FIND("ミカン",A1:A)),"",3),2),1))
    
[/code]


CC BY-SA 4.0
2020-04-11T05:59:39.283
65533
2020-04-12T04:41:05.083
2020-04-12T04:41:05.083
35558
35558
65484
answer