• ベストアンサー

IF関数?

こんにちわ。 このような式を作りたいのですが、うまいことできません。 たとえば、A-1がりんごだったら1、バナナだったら2、それ以外だと空白にするといったような文字列を返す式が作れません。 どなたか分かる方はよろしくお願いします。

質問者が選んだベストアンサー

  • ベストアンサー
  • arukamun
  • ベストアンサー率35% (842/2394)
回答No.8

No.1です。半角のバナナにもたいおうしていますが、ひらがなのばなな、半角のリンゴ、カタカナのリンゴ、漢字の林檎には対応していません。 =IF(ISNUMBER(FIND("りんご",JIS(A1))),1,IF(ISNUMBER(FIND("バナナ",JIS(A1))),2,"")) これでいかがでしょうか? どうせなら、ひらがな、カタカナ、漢字、半角、全角すべて対応させてみようかと。 =IF(ISNUMBER(FIND("リンゴ",PHONETIC(A1))),1,IF(ISNUMBER(FIND("バナナ",PHONETIC(A1))),2,"")) でうまくいくかもしれません。 椎名林檎 とか 吉本ばなな でもA1セルに手入力すると反応してしまうけど。

minokan
質問者

お礼

本当に詳しく教えていただきありがとうございます。 まさにやりたいことができました! 分かりやすく教えていただきありがとうございます。 また何かあったときは宜しくお願いします。

その他の回答 (8)

  • imogasi
  • ベストアンサー率27% (4737/17069)
回答No.9

VBA向きの問題だと思いました。 コード対応表(下記の例のような表)の(行)数が増えると、関数では長くなり過ぎます。 VBE画面の標準モジュールに Sub test01() Range("A1:A14").Select d = Range("E1").CurrentRegion.Rows.Count For i = 1 To d Set x = Selection.Find(What:=Cells(i, "E"), After:=ActiveCell, LookIn:=xlFormulas, _ LookAt:=xlPart, SearchOrder:=xlByRows, SearchDirection:=xlNext, _ MatchCase:=False) If Not x Is Nothing Then f = x.Address x.Offset(0, 1) = Cells(i, "F") Do c = c + 1 Set x = Worksheets(1).Cells.FindNext(x) x.Offset(0, 1) = Cells(i, "F") Loop Until x Is Nothing Or x.Address = f End If Next i End Sub を貼りつける。 (コード対応表)E1:F6 みかん 3 りんご 1 バナナ 2 リンゴ 1 バナナ 2 ミカン 3 (テストデータ)A1:A14 (A列)    (B列) りんごが      1 赤いバナナ 2 青いりんごが 1 バナナ好き 2 台湾バナナを半分に 2 そろそろりんごも 1 みかんの花が 3 リンゴが      1 赤いバナナ      2 青いリンゴが 1 バナナ好き      2 台湾バナナを半分に 2 そろそろリンゴも 1 ミカンの花が   3 B列が結果です。 自分の場合に合わせて、上記コードの中の、A、E、Fの列記号を変えてください。

minokan
質問者

補足

回答ありがとうございます。 VBAですかぁ。ここまでやらなければダメなのでしょうか? でも、このように教えていただきありがとうございます。 この先勉強するときのためにこの式を保存しておきます。

回答No.7

=IF(ISERROR(FIND("りんご",A1)),IF(ISERROR(FIND("バナナ", A1)),"",2),1) なんてのもアリです。 「マジカルバナナ」で2、「焼きりんご」で1、「アップルパイ」で 空白になります。

minokan
質問者

補足

できました!ありがとうございます。 ただ「マジカルバナナ」を半角カタカナの場合でも認識できるようなやり方はありますか? このままでも十分なんですが、やり方があるのならお願いします。

  • arukamun
  • ベストアンサー率35% (842/2394)
回答No.6

No.1です。 =IF(ISNUMBER(FIND("りんご",A1)),1,IF(ISNUMBER(FIND("バナナ",A1)),2,"")) これでいかがでしょうか?

回答No.5

#4です。。 誤 =IF(A2<1,""… 正 =IF(A1<1,""… すみません。

minokan
質問者

補足

早速回答していただきありがとうございます。 例文で質問を作ってしまったため、聞き方を間違えてしまいました。 A-1にりんご大好き!や、りんごはおいしい。など「りんご」という文字を含んだ場合、最初に質問した式を作りたいのです。 何度もすみません。宜しくお願いします。

回答No.4

=CHOOSE(A1,"りんご","みかん","") こっちの方がすっきり見易いですね。 0が入力されるとエラーを吐き出すのでifでチェック。 =IF(A2<1,"",CHOOSE(A1,"りんご","みかん",""))

  • ayasu
  • ベストアンサー率35% (56/156)
回答No.3

#2です。すみません最後は0ではなく""で空白です。

minokan
質問者

補足

早速回答していただきありがとうございます。 例文で質問を作ってしまったため、聞き方を間違えてしまいました。 A-1にりんご大好き!や、りんごはおいしい。など「りんご」という文字を含んだ場合、最初に質問した式を作りたいのです。 何度もすみません。宜しくお願いします。

  • ayasu
  • ベストアンサー率35% (56/156)
回答No.2

IF(A1="りんご",1,IF(A1="バナナ",2,0))で出来ると思います。ポイントとして文字列は""で囲まなければいけません。

  • arukamun
  • ベストアンサー率35% (842/2394)
回答No.1

=IF(A1="りんご",1,IF(A1="バナナ",2,"")) で良いでしょうね。

minokan
質問者

補足

早速回答していただきありがとうございます。 例文で質問を作ってしまったため、聞き方を間違えてしまいました。 A-1にりんご大好き!や、りんごはおいしい。など「りんご」という文字を含んだ場合、最初に質問した式を作りたいのです。 何度もすみません。宜しくお願いします。

関連するQ&A