重要なお知らせ

「教えて! goo」は2025年9月17日(水)をもちまして、サービスを終了いたします。詳細はこちら>

【GOLF me!】初月無料お試し

エクセルのFIND関数は、特定の文字列が左から何文字目にあるかを求める関数であると理解していますが、右から何文字目にあるかを検索出来ないものでしょうか?
なお、検索する文字列は数値以外であり右より一番右にある文字の右からの文字数を検索したいです。

 対象文字列    右から数値以外の一番最初の文字の文字数
30%1       →   2
200mg20    →   3
2.5mg1     →   2
1          →   0
25%1       →   2
0.5g1キット(生理食塩液100
           →   4
1010       →   0

A 回答 (4件)

ユーザー定義関数ですが、こんな感じで如何ですか。



書式:FindRevStr(文字列式)

使用例: =FindRevStr("200mg20")   ---> 3
    セルA1に"2.5mg1" が入力されているとき、=FindRevStr(A1) ---> 2

標準モジュールに下記コードを貼り付けます。

Function FindRevStr(S As String) As Integer
Dim N As Integer
Dim P As Integer
For N = Len(S) To 1 Step -1
  P = P + 1
  If Not IsNumeric(Mid(StrConv(S, vbNarrow), N, 1)) Then Exit For
Next N
If N = 0 Then P = 0
FindRevStr = P
End Function
    • good
    • 0
この回答へのお礼

有り難う御座いました。
出来ました。

お礼日時:2004/07/18 12:20

ユーザー定義関数ですが


数字を取り除き(Replace),最右文字を取る(Right)で
文字を掴めます。
Function rchp(a)
s = a
n = Array("0", "1", "2", "3", "4", "5", _
"6", "7", "8", "9", "0", "1", _
"2", "3", "4", "5", "6", "7", "8", "9")
For i = 0 To 19
s = Replace(s, n(i), "")
Next i
If s = "" Then
rchp = 0
Else
x = Right(s, 1)
rchp = Len(a) - InStr(1, a, x) + 1
End If
End Function
標準モジュールに貼りつけ、シートでA列にデータがあるとき、例えばB列に=RCHP(A1)と入れます。
(テスト例)最右文字と右からの何文字数目
12as34s3
as4s2
a3b12267g57fDH56H3
30%1%2
200mg20g3
2.5mg1g2
10
25%1%2
0.5g1キット(生理食塩液100液4
10100
    • good
    • 0
この回答へのお礼

有り難う御座いました。
出来ました。

お礼日時:2004/07/18 12:21

diashun です。


ユーザー定義関数として作ってみました。
以下のコードを使用するエクセルのVBAエディタで、標準モジュール(Module1)にコピーしてください。↓
''ここから************************
Option Explicit

Function Get_RevStr(ByRef rCell As Range) As Integer

Dim varSerch
Dim varRev
Dim i As Integer
Dim iKeta As Integer

varSerch = Range(rCell.Address).Value
varRev = StrReverse(varSerch)
iKeta = Len(varRev)
For i = 1 To iKeta
Select Case Mid(varRev, i, 1)
Case 0 To 9
Case Else
Get_RevStr = i
Exit For
End Select
Next i

End Function
''ここまで************************
このあと、結果を表示したいセルを選択し、関数でユーザー定義関数「Get_RevStr()」を選択すると、検索対象のセルを指定するダイアログが表示されるので、セルを指定して実行してください。
    • good
    • 0
この回答へのお礼

有り難う御座いました。
出来ました。

お礼日時:2004/07/18 12:19

diashun です。


ご希望の検索条件は
1.文字列の右側からの検索
2.数値は無視する
上記条件から考えると、Excelの既成関数では該当するものはありません。
ただしマクロを使えば「StrReverse」関数で実現できます。
マクロをご理解いただけるなら、補足にてお知らせ下さい。

この回答への補足

早速の回答有り難う御座いました。

「StrReverse」は分かりませんが、多少、マクロを作成したことがあります。
また、ユーザー定義関数で出来ますかね?

補足日時:2004/07/17 23:34
    • good
    • 0

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