• ベストアンサー

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/17069)
回答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

専門家に質問してみよう