• 締切済み

【Excel2003】右側から文字位置検索をしたい

特定の文字が何文字目に入っているかを関数で出したいのですが、その文字がセルに複数入っています。 一番右側に入っているものの文字位置を知りたいのですが、FIND関数だと左から検索してしまいますよね? 右から探していく方法はありますか?

みんなの回答

noname#204879
noname#204879
回答No.8

[回答番号:No.7]の別解です。 =FIND("☆",SUBSTITUTE(A1,B1,"☆",LEN(A1)-LEN(SUBSTITUTE(A1,B1,""))))

回答No.7

A1セルに 文字列 B1セルに検索する文字(列)が入っているとします ただし、A1セルに「☆」という文字列は含まれないものとします =FIND("☆",SUBSTITUTE(A1,B1,"☆",LEN(SUBSTITUTE(A1,B1,B1&"1"))-LEN(A1))) 検索文字(列)に一文字(「1」)加えたものを置換して その長さを調べることで検索キーワードがいくつあるか調べられる その最後のキーワードのみ「☆」に置換してその位置を知る エラー処理していません 参考まで

  • CMLT
  • ベストアンサー率40% (143/357)
回答No.6

応用のきく便利なフリーアドインの一つを紹介します。 「拡張FIND」ユーザー定義関数 http://kiyopon.sakura.ne.jp/soft/findx.htm マクロを有効にして、ダウンロードしたファイルを実行し、アドインとして組み込むといつでも使えます。 ご質問の場合、検索対象をA1セルとして、 =findx("検索文字",A1,LEN(A1))

  • hallo-2007
  • ベストアンサー率41% (888/2115)
回答No.5

例えば A1に検索文字、B1に対照の文字が入っているとして  A  B       C  A ASDFSDFGASDF C1セルに =SMALL((IF(MID($B1,ROW(A1:A10),1)=$A1,ROW(A1:A10),"")),COLUMN(A1)) 或いは =LARGE((IF(MID($B1,ROW(A1:A10),1)=$A1,ROW(A1:A10),"")),COLUMN(A1)) Ctrl+Shift+Enter で決定して右へコピィしみててください 複数の場合、左からの何文字目にあるか順にでると思います。

  • sige1701
  • ベストアンサー率28% (74/260)
回答No.4

こんな感じかな =LOOKUP(1,0/(MID(A1,ROW(A1:A20),1)=B1),ROW(A1:A20))

  • merlionXX
  • ベストアンサー率48% (1930/4007)
回答No.3

多分既存のワークシート関数ではないと思いますので、ユーザー定義関数を作ってみました。 以下の手順をおためしください。 1.Altキー+F11キーで Visual Basic Editor画面を呼び出します。 2.標準モジュール(もしなければ画面上部のメニューバーから挿入、標準モジュールで出てきたコードウィンド(右側の白い広い部分))に以下のコードをコピペします。 '*****ここから下をコピペ***** Function FindR(Rng As Range, myStr As String) FindR = InStrRev(Rng, myStr) End Function '*****ここより上までをコピペ***** 3.Alt+F11キーでワークシートへもどります. A1セルに abcabcabc と入力された場合     =FindR(A1,"b")  で、一番右側の位置の 8 を返します。

  • web2525
  • ベストアンサー率42% (1219/2850)
回答No.2

複数あるのか、じゃ下の回答は無視して。

  • web2525
  • ベストアンサー率42% (1219/2850)
回答No.1

LEN関数で文字列な長さを求めてFIND関数で得た数値を引いて+1すれば出るのでは?