• ベストアンサー

【Excel】特定の文字間の数字を取り出す

Excel2003を使用しています。 あるセルに「●●●A9B××…」と入力してあった場合、AとBの間にある数字“9”を取り出すにはどうしたらいいでしょうか? 全体の文字数は変化しますが、AとBという文字は必ずあって、その間にある数字だけを取り出して、それを別の計算で使用したいのです。数字は1桁か2桁のいずれかですが、関数の組み合わせ等で可能でしょうか? よろしくお願いします。

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

  • ベストアンサー
回答No.3

素直に考えるとmid関数でAが現れた次の文字から(Bが現れた場所- Aが現れた次の場所)文字分を取り出すんでしょうね。 Aを2回も検索するのが悔しい私みたいなバカは、midでAの次から2文 字取り出しておいて末尾に残るかもしれないBをsubstituteで落とし ます。 =substitute(mid(A1,search("A*B",A1)+1,2),"B","") こんな感じ。数字が1ないし2桁と判明しているおかげですね。

rx-z5815
質問者

お礼

回答ありがとうございます。 なるほど~!な数式を教えていただき、大変参考になりました。 条件をいかしていますね! 数字は1桁か2桁のいずれかということを質問文に書いておいて良かったです。(書かなくてもいいかなと迷ったので…) ありがとうございました。

その他の回答 (4)

回答No.5

>その間にある数字だけを取り出して、それを別の計算で使用したいのです。 ちょっと見落としていましたが、数字を取り出しても、文字列のままなので、 計算しても数字認識しない為、数値に変換してやる必要があると思います。 ので、 =VALUE(MID(A1,FIND("A",A1)+1,IF(COUNT(MID(A1,FIND("A",A1)+2,1))=1,2,1))) と、先頭に=VALUE()と付けて下さい。

rx-z5815
質問者

お礼

再度の回答ありがとうございます。 幸い(?)、No.2で回答いただいた数式で得た結果を、そのまま別の計算で利用しましたが、エラーは出ませんでした。 ご丁寧にありがとうございました。

  • mu2011
  • ベストアンサー率38% (1910/4994)
回答No.4

次の方法は如何でしょうか。 =MID(A1,FIND("A",A1)+1,FINDB("B",A1)-FINDB("A",A1)-1)*1

rx-z5815
質問者

お礼

回答ありがとうございます。 教えていただいた数式で、実際に試してみたところ、エラーが出てしまいました。 数式中のFINDBをFINDにすることで、うまくいきましたが、質問文に挙げた例だと、エラーは出ませんでしたので、例の挙げ方がよくなかったようです…。 ありがとうございました。

回答No.2

別例で、 A1を"あるセル"とすると、 =MID(A1,FIND("A",A1)+1,IF(COUNT(MID(A1,FIND("A",A1)+2,1))=1,2,1))

rx-z5815
質問者

お礼

回答ありがとうございます。 こちらの数式でも、うまくいきました。 こういう方法もあるのですね。勉強になります。 ありがとうございました。

  • redowl
  • ベストアンサー率43% (2140/4926)
回答No.1

=IF(ISERROR(SEARCH("A*B",A1)),"",MID(A1,SEARCH("A*B",A1)+1,SEARCH("B*",A1)-SEARCH("A*B",A1)-1))

rx-z5815
質問者

お礼

回答ありがとうございます。 教えていただいた数式で、実際に試してみたところ、うまくいきました。 ありがとうございました。

関連するQ&A

  • セル内の特定の文字の右隣りの半角数字を取り出したい

    いつもお世話になっております。 エクセル関数で、セル内の文字列の中の特定の文字の右隣り2文字か3文字を取り出したいのですが、いろいろ試行錯誤しているのですが中々突破口すら開けず質問させていただきました。 例)      A     B    C    D 1          赤    青    黄 2 赤15個青99個   15    99     3 薄青16個赤71個  71   16 4 赤133個黄25個  133        25 上のように、B2:D4セルに数式で抽出したいです。 ないものは空白でもゼロでも構いません。 検索値は漢字1文字で、取り出したい値は半角数字2桁or3桁です。 半角数字の後に必ず「個」が付きます。 「薄青」でも「青」を検索値とするのですが、取り出したい数字が2桁か3桁の二通りあることもネックになるかと思います。 関数に精通している方いらっしゃったら是非教えてください。 よろしくお願いいたします。

  • Excel2000のセル内の文字列の数字の先の2桁を取り出す方法について

    年のいった初心者です。 以前の質問に対する回答有難うございます。また、教えてください。  エクセル2000です。セル内に数字の文字列で、4桁、6桁、8桁のものが有ります。4桁のものには"01"を、6桁のものには"60"を、表示し、8桁のものには数種類あり、8桁の場合は、各文字列で上位の2桁を表示したいのです。 =IF(LEN(A1)=4,"01",IF(LEN(A1)=6,"60",IF(LEN(A1)=8,?????? 4桁、6桁については以前に教えていただいた、関数等でいけたのですが、8桁のときが分かりません。困っています。お願いします。     A列    B列 1 7532 →→ 01 2 280573 →→ 60 3 34964821 →→ 34 4 06839775 →→ 06 5 67500023 →→ 67

  • エクセル2003で入力した数字に応じ別のセルに固定文字を表示

    エクセル2003で入力した数字に応じ別のセルに固定文字を表示 例として セルA1に0155と入力があれば、左の2桁01を認識してセルB1は"赤"と表示 セルA1に0255と入力があれば、左の2桁02を認識してセルB1は"青"と表示 セルA1に0355と入力があれば、左の2桁03を認識してセルB1は"緑"と表示 上記のように設定したいのですが、調べても関数の組み合わせがわかりません。 教えてください。宜しくお願い致します。

  • セルに入力されている数字列を 一文字ずつセルにふりわけたい

    たびたびよろしくお願いします。 ひとつのセルに6~7桁の数字が入力されてます。 (数字と数字の間にはスペースはありません) A 7桁の場合はこの数字を一文字ずつ  別のセルひとつひとつに  振り分けたいのですが 可能でしょうか? 例 「9654321」→   「9」「6」「5」「4」「3」「2」「1」 B 6桁の場合は頭にゼロを入力して   同様に別のセルひとつひとつに   振り分けたいのですが 可能でしょうか? 例 「654321」→   「0」「6」「5」「4」「3」「2」「1」  

  • EXCEL関数である曜日のときに、特定の数字を返す方法

    EXCEL関数でわからない点があり質問です。 EXCELにて、ある特定の曜日のときに、 特定の数字を返す、という関数を入れようとしているのですが、 なぜかうまくいきません。 まず、B列に入った日付から曜日番号を返す関数をA列に入れて =WEEKDAY(B4,1) としています。 その次に、A列のセルが1か2か7の時に、K列の数字を返す、 という関数を入力しました。 =IF(OR(A4="1",A4="2",A4="7"),K4,"") 関数的には間違いがないように思うのですが、 どうも、A4="1"といった関数がうまく動いていないようです。 たとえそれが1であっても、TRUEを返してくれません。 WEEKDAYの番号は数字とは違うのでしょうか? どなたか、お分かりになる方、 教えてください!

  • エクセルのセルに入れた文字あるいは数字を別なセルに1文字づつ、「右詰」で移したい

    以前に エクセルのセルに入れた文字あるいは数字を別なセルに1文字づつ移したい、ということで質問しまして、「MID関数を利用する」事で、先頭文字から一文字ずつ別々なセルに移すことが出来ましたが、スミマセンが次のような場合はどのような関数になるのでしょうか? 例えば「番地などの表示」等で1桁の場合もあれば、5桁あるいは6桁等々の場合もあるとします。これを別なセルに下一桁を合せる様にしたいのです。 例としまして セルA1に1桁~6桁の数字(例:345678)を入力した場合、これを右側のB1には3を、同様にC1には4を、D1=5、E1=6、F1=7、G1=8を関数で入力できるようにしたい。 問題は、桁数が毎回違う場合にG1に下一桁が来るようにしたいのですがRIGHT関数では下一桁だけ応答されるのは上手くいくのですが、下二桁、三桁以上の場合には上手くいきません。 つまり「A1に789」の数字を入力したら、G1=9が、F1=8が、E1=7が応答されるようにしたいのです。 勿論、5桁の場合にはB1が空欄で、C1、D1、E1、F1、G1が埋まる様に、4桁であればB1とC1が空欄で、D1~G1が埋まるように、三桁の場合にはB1~D1が空欄でE1~G1が埋まるようにですが、出来ますでしょうか?? よろしくご教授お願いします。

  • EXCEL関数 文字列の一部の数字文字を数値化して計算につかいたい

    EXCEL関数について質問です。 あるセルの文字列に記載されている一部の数字文字を 数値化して計算につかいたいと思っています。 <例>  あるセルの文字列(A1)⇒あいうえお12345番目の方  出力したい数字文字⇒12345 知る限りの関数を使って以下の関数式を作ってみました。 (1) MID関数を使う  最初の文字「あいうえお」は10バイトなので開始は「11」としました。 (2)後に登録されている「番目の方」を除きたいので  SEARCHB関数を使って、「番目」の開始バイトを見つけ  そこから最初の文字バイト「11」を引き、抽出するバイトを求める。 (3)抽出した文字列を数値に変換するVALUE関数を使う。 次の関数式を作ってみました。   =VALUE(MIDB(A1,11,SEARCHB("番目",A1,1)-11)) でも結果は「」となります。 何がいけないのかわかりません。エラーの原因がわかれば教えて下さい。 ほかによい方法があれば教えてください。 よろしくお願いします。  

  • EXCEL2007で文字列の右側から特定文字を抽出

    EXCEL2007で1つのセルの文字列の右側から最初の"/"が出現したときまでの文字を抽出する方法を教えてください。 (例)  A 1エクセル/関数/123456/ここがターゲット 2 3 ⇒関数を使用し、上記A1セルの「ここがターゲット」の文字列を抽出したいのです。 神様、どうか教えてください!

  • Excel関数

    Excel2010を使用しています。 A~E列 及び H~K列の1,000行目くらいまで、1ケタから5ケタの数字を入力しています。 重複した数字がないか確認したいのですが、適した関数はありますか? (重複していた場合、指定したセルに「重複」と出るような関数など) セルは空欄の場合もあります。 ご教示いただければ幸いです。よろしくお願いします。

  • Excel:セル枠外にはみ出た文字列全体の表示

    お世話になります。WindowsXPでExcel2002を使用しております。是非教えてください。 Excelで入力した文字列がセルの横幅を越えた長さとなった場合、右隣のセルが未入力であれば、自動的に全体が表示されるようになっています。 しかし、右隣のセルに、例えば関数を入力していた場合など何らかのデータを入力していた場合には、枠内までの文字しか表示されなくなります。 右隣のセルが、関数計算の結果、何らかの数値、文字列が表示される場合には致し方ないと思いますが、特に何も表示されない時、左隣のセルの文字列全体が表示されるようにしたいのですが、何らかの方法はございますでしょうか。 ちなみに、具体的な状況については以下の通りです。  |A|B| 1| | | ・A1、B1セルにはそれぞれ同じIF関数(=IF([論理式],A21,""))を入力。 ・A1セルのIF関数が「真」となったため、A21の文字列("浜崎総務部長の来訪")が表示される。 ・B1セルのIF関数が「偽」となったため、何も表示されず。 宜しくお願い致します。

専門家に質問してみよう