プロが教えるわが家の防犯対策術!

特定の文字が何文字目に入っているかを関数で出したいのですが、その文字がセルに複数入っています。

一番右側に入っているものの文字位置を知りたいのですが、FIND関数だと左から検索してしまいますよね?

右から探していく方法はありますか?

A 回答 (8件)

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

    • good
    • 0

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

    • good
    • 0

多分既存のワークシート関数ではないと思いますので、ユーザー定義関数を作ってみました。



以下の手順をおためしください。

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 を返します。
    • good
    • 0

こんな感じかな


=LOOKUP(1,0/(MID(A1,ROW(A1:A20),1)=B1),ROW(A1:A20))
    • good
    • 0

例えば 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 で決定して右へコピィしみててください
複数の場合、左からの何文字目にあるか順にでると思います。
    • good
    • 1

応用のきく便利なフリーアドインの一つを紹介します。


「拡張FIND」ユーザー定義関数
http://kiyopon.sakura.ne.jp/soft/findx.htm
マクロを有効にして、ダウンロードしたファイルを実行し、アドインとして組み込むといつでも使えます。

ご質問の場合、検索対象をA1セルとして、
=findx("検索文字",A1,LEN(A1))
    • good
    • 0

A1セルに 文字列 B1セルに検索する文字(列)が入っているとします


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

[回答番号:No.7]の別解です。


=FIND("☆",SUBSTITUTE(A1,B1,"☆",LEN(A1)-LEN(SUBSTITUTE(A1,B1,""))))
    • good
    • 6

お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!