• ベストアンサー

EXCELのMID関数について教えてください

abcd+cd+EFのような文字列で右から3番目の 「d」を取り出したい場合、 EXCELのMID関数ですと左からしか数えられないので 右から数えられる、もしくは文字列の並びを 逆転できる方法を探しています。 ご存知の方どうぞよろしくお願いします。

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

  • ベストアンサー
  • kmetu
  • ベストアンサー率41% (562/1346)
回答No.1

A1に文字列があるとして =MID(A1,LEN(A1)-2,1) にしてください。

arumisoy
質問者

お礼

解決しました。 MIDもこのように使えばよいのですね。 気がつきませんでした。 どうもありがとうございます。

その他の回答 (3)

  • Cupper
  • ベストアンサー率32% (2123/6444)
回答No.4

>abcd+cd+EF これがどのようなことを示すのか判断しかねます  "abcd"&"cd"&"EF" なのか  "abcd+cd+EF" なのか… すでに答えられているように 全体の文字列の数を調べて(LEN関数)、文字列の数から右側から何番目かの目星を付けて取り出す  LEN(文字列)-(3-1) が取り出したい右から3つめの文字がある左からの文字数になります 文字列をひっくり返すよりも簡単です または RIGHT関数で右から3文字抜き出してから LEFT関数や MID関数で左から 1文字目を抜き出すとか

arumisoy
質問者

お礼

質問の仕方があいまいで失礼しました 単に右から3つめをとりだしたかったので 「d」ではなく「+」と書くべき所でした 今回、さまざまな方法を教えていてただき、助かりました。 ありがとうございます。

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

ユーザー関数を作るほか無いと思う。 例データ A1に asdtfdsdtd とあるとする。右から3番目のdの手前までを取り出す。 VBの関数にInstrRev関数があるので(ただし最近のバージョンに限る)それを使う。 標準モジュールに Function rev3(a) x = InStrRev(Mid(a, 1, InStrRev(a, "d") - 1), "d") 'MsgBox x rev3 = InStrRev(Mid(a, 1, x - 1), "d") End Function ーー C1セルに =MID(A1,1,rev3(A1)-1) 結果 asdtf 何文字目なら =rev3(A1) で6が返る。 ーーー #1、#2の回答と趣が違うが、質問の主旨は、上記に解釈した。 質問の例の+に注目していないが、質問の真意は?。 >「d」を取り出したい場合、 これは答えがdとなって何てことないことになる。それで質問を少し 改変して回答する。

arumisoy
質問者

お礼

質問が間違っており失礼しました。 右から3つ目は「d」ではなく「+」でした。 こちらの回答ではユーザー関数のことが 知ることができました。 どうもありがとうございます。

回答No.2

>abcd+cd+EFのような文字列で右から3番目の >「d」を取り出したい場合、 ということは、「+」は除外して数えるのでしょうか?それなら =LEFT(RIGHT(SUBSTITUTE(A1,"+",""),3),1) が一例。

arumisoy
質問者

お礼

質問が間違っており失礼しました。 右から3つ目は「d」ではなく「+」でした。 しかしSUBSTITUTE関数も調べると 別のことで使えるので勉強になりました。 どうもありがとうございます。

関連するQ&A

  • エクセル MID関数

    MID関数で表示した文字列が、数字として認識されません。 MID関数で表示された数字が10とします。セルはA1とします。 その後、IF式で =if(A1<5,10,0) とすると、結果は0になるはずなのに、常に真の値、10になってしまいます。 原因は、MID関数で表示された数字が文字列として認識しているからと考えられますが、対象方法をご存知の方がおりましたら教えてください。 よろしくお願いします。

  • mid関数とmidステートメントの違いを教えてくだ

    Sub test1() MsgBox Mid("abc", 2) End Sub は、mid関数ですか?midステートメントですか? ヘルプを見ると、 --------------------------------------------------------- Mid ステートメントの使用例 次の例は、Mid ステートメントを使って、 文字列変数の中にある指定した文字数分の文字を他の文字列に置き換えます。 Dim MyString, FirstWord, LastWord, MidWords MyString = "Mid Function Demo" ' 文字列を定義します。 FirstWord = Mid(MyString, 1, 3) ' "Mid" を返します。 LastWord = Mid(MyString, 14, 4) ' "Demo" を返します。 MidWords = Mid(MyString, 5) ' "Function Demo" を返します。 --------------------------------------------------------- も --------------------------------------------------------- Mid 関数の使用例 次の例は、Mid 関数を使って、 文字列の中から指定した文字数分の文字を返します。 Dim MyString, FirstWord, LastWord, MidWords MyString = "Mid Function Demo" ' 文字列を定義します。 FirstWord = Mid(MyString, 1, 3) ' "Mid" を返します。 LastWord = Mid(MyString, 14, 4) ' "Demo" を返します。 MidWords = Mid(MyString, 5) ' "Function Demo" を返します。 --------------------------------------------------------- も同じです。 mid関数とmidステートメントの違いを教えてください。 ご回答よろしくお願いします。

  • エクセルで、MID関数で抽出した文字を独立させたい

    エクセル初心者のため、お見苦しい文章で申し訳ありません。 WORDに入力されたアンケート結果をEXCELに移した際に、 例えば1つのセルにある「A:50% B:25% C:25%」という文字列を、 MID関数を使ってそれぞれ別のセルに抽出しました。 (それぞれ、"=MID(A2,3,3)"、"=MID(A2,10,3)"、 "=MID(A2,17,3)"という感じです) 設問がいくつもあるので、 その関数を十字でコピーしたほうが楽かと思いまして・・・ ところがそもそもグラフを作りたくてエクセルに移したのですが、 「50%」というのはただの関数の結果であって、 数字どおりのグラフが作れないと気づきました。 これを、「50%」という文字列だと 認識させてグラフを作る方法は何かあるでしょうか? それともやっぱりめんどくさがらずに、 1から打ち込んだほうが早いのでしょうか・・。 わかりづらい質問で申し訳ありません。 よろしくお願いいたします。

  • エクセル関数

    いつもご教授いただいています。 エクセル関数でお聞きしたい事があるのですが、 添付ファイルのシートのように B列の文字が基本にあり、 E列に他のシートからコピーしたものを張り付けた場合、 B列の文字や数字の並びとE列の文字や数字の並びが一致したら、 D列の数字をA列のに返すような関数を 作成したいのですが、どのようにすればよろしいでしょうか? 言葉足らずでもうしわけありませんが、 ネットで検索しようとしても、 自分の実施したい事がうまく出力されません。

  • Excel 関数

    先日こちらで、「数字と文字が含まれるもの(左に数字、右に文字の場合)の、文字までの(スペースを含む)桁数を表す関数(例えば{11 3D}であれば4を返すような関数 )」を教わりました。以下の関数です。 =MATCH(1,INDEX(N((MID(A1,ROW(A:A),1))>"9"),0),0) 正しく動いてくれたのですが正直なところ、知識がまだ浅く、一つ一つの関数の意味はわかっても全体としては全然理解できませんでした。また数字の9に””を付ける意味も全くわかりません。。。 詳しい方、理解できるように、できるだけ詳しく教えていただけませんでしょうか。

  • エクセルのFIND関数について

    エクセルのFIND関数は、特定の文字列が左から何文字目にあるかを求める関数であると理解していますが、右から何文字目にあるかを検索出来ないものでしょうか? なお、検索する文字列は数値以外であり右より一番右にある文字の右からの文字数を検索したいです。  対象文字列    右から数値以外の一番最初の文字の文字数 30%1       →   2 200mg20    →   3 2.5mg1     →   2 1          →   0 25%1       →   2 0.5g1キット(生理食塩液100            →   4 1010       →   0

  • エクセルの関数について

    いつもお世話になっております。 エクセルの関数についてお尋ねします。 (例) A1に 12/09/2013 16:00:06 という文字列があり、これをB1でシリアル値に変更しようと考えています。 MID(A1,7,4)&"/"&LEFT(A1,5)&MID(A1,11,9) ⇒ 2013/12/09 16:00:06(文字列) (MID(A1,7,4)&"/"&LEFT(A1,5)&MID(A1,11,9))*1 ⇒41612.7086111111 と*1する事によってシリアル値に変換されてるわけですが、この『×1』はどのような意味なのでしょうか? 知らないで使っているのが気持ち悪いのでどなたかよろしくお願いいたします。

  • EXCEL MID関数の文字数について!

    セルA1 12×1240×2280 セルA2 3×1240×2280 セルA3 5.5×1240×2280 ↑こんな風にセルの中に数字が入っているのでMID関数で セルA1 =MID(A1,1,2)→12 セルA2 =MID(A2,1,1)→3 セルA3 =MID(A3,1,3)→5.5 と答えが出ます。でもA列の桁数によりMID関数の文字数を変えなければなりません。 一気に出せる方法はないでしょうか?? おわかりの方教えてくださーい!

  • エクセル関数でご教示下さい

    エクセルの1セル(A列の各行)に入力されている文章を、B列C列・・・・と振り分ける為、 =LEFTや=MID関数を使って振り分けていますが、「出張」又は「来所」といった2つのどちらかの文字の次から10文字を取り出すような関数があればご教示ください。

  • Mid関数の記述

    いつもAccessでは、Mid関数を使っているんですけど、 ASPファイルで文字列の一部を取得したいんで、 SUBSTRINGを代わりに使ったんですが、 プロシージャーのエラー が出るので、 response.writeで、対象の文字列を表示させてみたら取得出来てるみたいなのに、 うまくいきません。どうして???

専門家に質問してみよう