• ベストアンサー

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文字しか入りえません。

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

  • ベストアンサー
  • hirumin
  • ベストアンサー率29% (705/2376)
回答No.1

***が何か判りませんが、 常に5文字目であるならば、 [B1]=MID(A1,5,1) で、A1の5番目から1文字を出力することができますよ。

kaori_china
質問者

お礼

ありがとうございました~!! きれいにできました

その他の回答 (3)

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

既出の回答で満足できてますか。 もし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)
回答No.3

=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% (7418/18948)
回答No.2

=MID("IHIOIHIPIHIOIHIO",SUMPRODUCT(ISNUMBER(FIND({"I","H","O","P"},UPPER(A1),1))*{1,2,4,8}),1) 上記でできませんか?2文字以上の場合はI>H>O>Pの順で優先的に表示になります。

関連するQ&A

  • Excel 特定の文字列間のセルの個数を数える方法

    Excelの関数を用いて以下のような処理は可能でしょうか。 A|B|C|D|E|F|G|H|I|J|K|L|M|N|O|P|Q|R|S|T|U| A|B|C|B|C|A|C|A|B|B|C|A|B|B|B|C|A|C|B|A|3| セルA1からT1にはA,B,Cどれかの文字列が入っています。Aの文字列と次に現れるAの文字列との間にセルが3個以上あれば、U1のセルにその現れる回数が表示される。(上記の場合"3") このようなことが、関数だけでできるでしょうか。 もしできるようでしたらそのやり方をご教授ください。 よろしくお願いします。

  • エクセル 文字が表示されたセルを抽出したい

    エクセルの関数を教えて下さい。    A     B     C     D   1 りんご              りんご 2       プリン        プリン 3             紅茶   紅茶 4 バナナ              バナナ 5      6             緑茶   緑茶 上記のような表があります。(A~は列、1~は行番号です) A1~C6までは、IF関数で、条件にあった場合に“りんご”などを表示、そうでない場合には空白と なるような式が入っています。 そして、D列のように、それぞれの行に表示されている文字を抽出、何も表示されていない場合は空白としたいのです。 D列にはどういった式を入れればよいかを教えて下さい。 ※各行に表示されるのは1つのセルのみで、例えばA1のセルとC1のセルに文字が表示される ことはありません。A1に文字が表示されている場合は、必ずB1・C1のセルは空白です。 宜しくお願い致します。

  • 表示されている文字列を取得するエクセル関数

    例えば、 A1セル「平成28年1月5日」(シリアル値で入力) A2セル「H28.1.5」(シリアル値で入力) A3セル「12345」(数値) と入っている場合に、 関数を使って、 B1セル「平成28年1月5日」(文字列) B2セル「H28.1.5」(文字列) B3セル「12345」(文字列) と表示させることはできるでしょうか? 形式を選択して貼り付け、とか、VBAでできるのはわかるのですが、 関数だけで(しかも、できれば汎用的な形の関数で) 実現できるのかが知りたいです。

  • Excelのセルない文字抽出について

    やりたいこと画像見て頂いてわかるかどうか不安ですがやりたいことを箇所書きします ・ I5セル内の表示されている内容(文字列)をC2~I2セルに表示されている通りに入力したい 補足説明=I5セル内には関数で次のようになっています =CELL("contents",C5)&CELL("contents",D5)&CELL("contents",E5)&CELL("contents",F5)&CELL("contents",G5)&CELL("contents",H5) なのでI5セルを普通に抽出して次ページに書き出すと関数そのものが入力されてしまいエラー(文字列ではないもの)になってしまう I5セル内の表示されている通り(関数ではなくて見ている見えてる文字列のこと)の内容を次ページのC4セルに直接的書き込みしたいとゆうことと、C2~I2に書き込みしたいとゆうことです。 図書館や他サイトでも独学で努力して調べたり試したりしていますが上手くいかなかったので応用力の知恵のある皆様方へ質問させて頂きました。 この内容でもまだ何がしたいのか伝わらない場合はご連絡ください。 やり方わかる方はやり方を教えて頂きたく平にお願い申し上げます。

  • EXCELから文字だけ抽出する方法を教えてください

    タイトルの通りですがよろしくお願いします。 どのような状態かといいますと セルA1、セルB1、セルA2、セルB2に文字が入力してあるとします。 セルC5に次のような関数を入力して(A1,A2,B1,B2)に入力した文字を結合します セルC5:=A1&A2&B1&B2 このセルC5に表示されているのは、関数によって合わせた文字が表示されていますが、この表示されている文字をコピーしようとするとセルを右クリックしてワードに貼り付けてセルの枠を消してから文字を取り出すことになります。 当たり前ですが、セルC5をダブルクリックすると関数が現れてしまうので、文字をコピーすることはできません。 上のように長く書きましたが VBSでもEXCELの関数でもいいので、 セルC5に表示している文字をクリップボードニコピーする方法を教えてください。 たとえばVBSならコマンドボタンを作ってコマンドボタンを押すと文字だけがコピーするプログラムとか・・・ EXCELの関数ではできるのでしょうか? いずれにしても大変不便なのでどなたか文字のコピーの方法を知っておられる方はぜひともよろしくお願いします

  • エクセル関数で複数の特定文字を抽出したい

    A列に区分を J列の文字列内から B列に種別を K列の文字列内から それぞれ抽出したいのてすが、 FindやIF関数を組み込んでも どうもうまくいきません。 例) A列セルには「新規・変更・削除」 B列セルには「登録・確認・承認」などを抽出文字としたい時・・ J2セルに「変更申請」 K2セルに「システム登録」 の場合、A2に「変更」 B2に「登録」 J3セルに「新規受付」 K3セルに「承認完了」 とある場合、A3に「新規」 B3に「承認」 と表示させたい といった形式です。 ご教示いただけませんでしょうか。 よろしくお願い致します。

  • エクセルの文字列操作について

    セルA1に123、セルA2に12と入力があった場合、 セルB1にはセルA1の12を、セルB2にはセルA2の1を 表示させたいのですが、 一つの関数でできますか? 文字列操作の関数では見当たらなかったのですが。

  • エクセルのセル内の文字列から抽出したい

    A列に <a href="http://URL/" target="_blank">サイト名</a> という文字列が1000個くらい入っています。 B列にURL部分のみ、C列にサイト名のみを取り出したくて、 B1に左から9文字を削って =SUBSTITUTE(A1,LEFT(A1,9),"") とか入れてみるのですが、これだとURL部分以降の " target="_blank">サイト名</a> が残ってしまいます。 C1には何を入れたら前後の文字列が削除できてサイト名だけになるのかもわかりません。 URLはセルごとに文字数が違うので、どの関数を使えば一括で B1にURL、C1にサイト名が表示されるようになるかアドバイスをお願いいたします。

  • エクセルで計算の結果がある数値の場合のみ文字列を表示させたいです・・・。

    エクセルで計算の結果がある数値の場合のみ文字列を表示させたいのですが、IF関数を使うのかなと思いますが関数がよく解かりません。。。 やりたいことはこんな感じです。 セルG1にはA1-B1、H1にはC1-D1、I1にはE1-F1と計算式が入っています。 計算の結果、▲1になるセルだけを文字列『売上』と表示させたいのですが・・・。 なお、計算の結果は、必ず『1』か『▲1』のどちらかにしかなりません。 つたない質問ですが解決したく困っています。よろしくお願いします。

  • エクセル セルの表示形式「文字列」だけを抽出したい

    エクセル2007を使用しています。 A列に数字が入力されていますが、そのセルの表示形式は、「標準」「数値」「文字列」とバラバラです。 この「文字列」のセルだけを抽出したいのです。 例えば、関数などを利用して、B列に表示するなど。 よろしくお願いします。

専門家に質問してみよう