- 締切済み
【Excel2003】右側から文字位置検索をしたい
特定の文字が何文字目に入っているかを関数で出したいのですが、その文字がセルに複数入っています。 一番右側に入っているものの文字位置を知りたいのですが、FIND関数だと左から検索してしまいますよね? 右から探していく方法はありますか?
- みんなの回答 (8)
- 専門家の回答
みんなの回答
[回答番号:No.7]の別解です。 =FIND("☆",SUBSTITUTE(A1,B1,"☆",LEN(A1)-LEN(SUBSTITUTE(A1,B1,""))))
- 某HN クロメート(Chromate)(@CoalTar)
- ベストアンサー率40% (705/1742)
A1セルに 文字列 B1セルに検索する文字(列)が入っているとします ただし、A1セルに「☆」という文字列は含まれないものとします =FIND("☆",SUBSTITUTE(A1,B1,"☆",LEN(SUBSTITUTE(A1,B1,B1&"1"))-LEN(A1))) 検索文字(列)に一文字(「1」)加えたものを置換して その長さを調べることで検索キーワードがいくつあるか調べられる その最後のキーワードのみ「☆」に置換してその位置を知る エラー処理していません 参考まで
- CMLT
- ベストアンサー率40% (143/357)
応用のきく便利なフリーアドインの一つを紹介します。 「拡張FIND」ユーザー定義関数 http://kiyopon.sakura.ne.jp/soft/findx.htm マクロを有効にして、ダウンロードしたファイルを実行し、アドインとして組み込むといつでも使えます。 ご質問の場合、検索対象をA1セルとして、 =findx("検索文字",A1,LEN(A1))
- hallo-2007
- ベストアンサー率41% (888/2115)
例えば 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)
こんな感じかな =LOOKUP(1,0/(MID(A1,ROW(A1:A20),1)=B1),ROW(A1:A20))
- merlionXX
- ベストアンサー率48% (1930/4007)
多分既存のワークシート関数ではないと思いますので、ユーザー定義関数を作ってみました。 以下の手順をおためしください。 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)
複数あるのか、じゃ下の回答は無視して。
- web2525
- ベストアンサー率42% (1219/2850)
LEN関数で文字列な長さを求めてFIND関数で得た数値を引いて+1すれば出るのでは?