- ベストアンサー
Excelで文字を抽出したい
A列に文字がはいっており(IかHかOかPを含む文字 23~25文字)、B列にはA列中の一文字(IかHかOかP)だけを表示させたいんです。 つまり、 ●もしA1セルに****I***・・・が入っていたら→B1セルにはI ●もしA2セルに****H***・・・が入っていたら→B2セルにはH、 というふうにしたいです。 この場合、B列にはどういった関数を入れればいいんでしょうか? 尚、***の部分にIかHかOかPは1文字しか入りえません。
- みんなの回答 (4)
- 専門家の回答
質問者が選んだベストアンサー
***が何か判りませんが、 常に5文字目であるならば、 [B1]=MID(A1,5,1) で、A1の5番目から1文字を出力することができますよ。
その他の回答 (3)
- imogasi
- ベストアンサー率27% (4737/17070)
既出の回答で満足できてますか。 もしI、H、O、Pのこの順で検査して、ある文字列において存在すればその1文字を返すユーザー定義関数を考えました。他の文字が先出していても、4文字の 序列が優先する場合です。 ツール-マクローVBEの画面で、挿入-標準モジュールの画面を出し、下記を貼り付けます。 Function findx(a, b) For Each c In b p = InStr(a, c) If p <> 0 Then findx = c Exit Function End If Next End Function 使い方はA列に文字列かあるとして、B1に =FINDX(A1,{"I","H","O","P"})と入れて、下方向に 式を複写します。 例 ABCDJ 0 AIHJJK I AHIKLMM I SPLLK P SPOILLL I もしI、H、O、Pのこの順で検査して、4文字のうちのどれでも初出の文字を出したいなら(4文字に優先序列なし) Function findx(a, b) Dim d(100) Min = 99 For Each c In b p = InStr(a, c) If p <> 0 Then If p < Min Then Min = p w = c End If End If Next findx = w End Function で 実例は ABCDJ 0 AIHJJK I AHIKLMM H SPLLK P SPOILLL P HIGHI H になりました。 大文字小文字や、4文字が見つからないときの問題は 対処を省略してます。
- Wendy02
- ベストアンサー率57% (3570/6232)
=LOOKUP(SUMPRODUCT((ISERROR(FIND({"I","H","O","P"},UPPER(A1)))=FALSE)*{1,2,3,4}),{0,"";1,"I";2,"H";3,"O";4,"P";5,""}) これは、二重に入ると、空白になります。
- mshr1962
- ベストアンサー率39% (7417/18945)
=MID("IHIOIHIPIHIOIHIO",SUMPRODUCT(ISNUMBER(FIND({"I","H","O","P"},UPPER(A1),1))*{1,2,4,8}),1) 上記でできませんか?2文字以上の場合はI>H>O>Pの順で優先的に表示になります。
お礼
ありがとうございました~!! きれいにできました