• 締切済み

エクセル2002でIF関数を使用して特定の文字列を検索しそれを数字で別のセルに表記する方法

名に「女子」の文字があれば1の女子。 「短期大学」の文字があれば2の短期大学。「短期」としか書いてないところは3の短期、それら以外は、4のその他。また、女子と短期大学の両方書いてある場合は、最初に出てくる方を採用(例えば○○女子短期大学とあれば1の女子、○○短期大学女子というのであれば、2の短期大学)。このような場合最初の3つの条件であれば=IF(ISNUMBER(FIND("女子",A1)),"1",IF(ISNUMBER(FIND("短期大学",A1)),"2",IF(ISNUMBER(FIND("短期",A1)),3,4))) と考えたんですがその先がわからず。(これもあってるかどうか・・・)もしもわかる方がいましたらぜひぜひ教えてください。

みんなの回答

  • sakenomo
  • ベストアンサー率52% (35/67)
回答No.3

これでどうでしょう。 =IF(ISERR(FIND("女子",A1)),IF(ISERR(FIND("短期大学",A1)),IF(ISERR(FIND("短期",A1)),"4","3"),"2"),IF(ISERR(FIND("短期大学",A1)),"1",IF(FIND("女子",A1)<FIND("短期大学",A1),"1","2")))

  • comv
  • ベストアンサー率52% (322/612)
回答No.2

こんばんは A1:Anに入力 B1:Bnに式 C1:C3に検索文字条件(その他は除く) D1:D3に結果の値(その他は除く) として    A  B   C    D 1 *** 式 女子   1 2 *** ↓ 短期大学 2 3 *** ↓ 短期   3 4 *** ↓ 5 *** ↓ :  :  : セルB1 =IF(A1="","",MOD(MIN(IF(ISERROR(SEARCH($C$1:$C$3,A1)),1004,SEARCH($C$1:$C$3,A1)*10+$D$1:$D$3)),10)) と入力して Ctrl+Shiftを押しながらEnterで入力確定 もしC列D列を記載しない式なら =IF(A1="","",MOD(MIN(IF(ISERROR(SEARCH({"女子","短期大学","短期"},A1)),1004,SEARCH({"女子","短期大学","短期"},A1)*10+{1,2,3})),10)) 式中の1004は その他 の場合で 1桁目が その他の返し値 上の桁の100 は、他の返り値より 大きくなるような適当な値です。

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

IFをネストするのは(個人的に)3段以上は嫌いです。 それでユーザー関数を作りました。 ---- VBE画面に Function findx(a, b As Range) Dim cl As Range i = 1 For Each cl In b p = InStr(a, cl) If p <> 0 Then findx = i Exit Function Else i = i + 1 End If Next findx = 4 End Function を貼りつけます。 ------- C1:C3に 女子 短期大学 短期 と入れます。(順序が結果に影響し、大切です。) ------ A列にA1:A8に 大川女子 大川女子短期大学 大川短期大学 大川短期栄養 山田短期 短期大学部 女子専門 短大 と入れます。 ------ B1セルに関数式 =findx(A1,$C$1:$C$3)といれ、B8まで複写します。 B1:B8は1、1、2、3、3、2、1、4となります。

関連するQ&A