指定した文字が 選択した範囲内のどの位置に使われているか調べる関数です。 選択した範囲内で指定した文字が使われている場所をシート名、シート内のR(行)C(列)を順番に表示していきます。
VBEの標準モジュールに下のコードを登録して「Excelマクロ有効フォーム」で保存してください。
関数の登録方法は⇒♯000 ユーザー定義関数を登録する方法
登録されたら、シート上からユーザー関数「 SearchWordA 」が使用できます。
使い方は
ワークシート上で = SearchWordA ( 範囲, 検索する文字列) の関数として使用できます、範囲内から検索する文字列の位置を取得できます。
【例】
SearchWordA(範囲, 検索する文字列)
セルF8 東京、 セルI8 東京 、 セルG10 東京都港区
=searchwordA(E6:J15,”東京”) ⇒ R8C6,R8C9,R10C7
範囲内から検索する文字列の位置を取得する関数。
選択範囲内で、検索する文字の場所のシート名とシート内の
位置R(行)、C(列)を表示します。
Function SearchWordA(R As Range, W As String)
‘範囲内から検索する文字列の位置を取得する関数。
‘選択範囲内で、検索する文字の場所のシート名とシート内の
‘位置R(行)、C(列)を表示します。
‘SearchWordA(範囲, 検索する文字列)
Dim R2 As String
Dim RS As String
Dim RE As String
Dim AD As String
Dim Book As String
Dim Sheet As String
Dim SR As Long
Dim SC As Long
Dim ER As Long
Dim EC As Long
Dim A As Variant
Dim i1 As Long
Dim i2 As Long
Dim N As Long
Dim P As String
On Error GoTo EXITFUN
R2 = R.Address(ReferenceStyle:=xlR1C1)
AD = R.Address(External:=True)
If Mid(AD, 3, InStr(AD, “]”) – 3) <> ActiveWorkbook.Name Then
Book = “[” & Mid(AD, 3, InStr(AD, “]”) – 3) & “]”
End If
If Mid(AD, InStr(AD, “]”) + 1, InStr(AD, “!”) – _
(InStr(AD, “]”) + 1) – 1) <> ActiveSheet.Name Then
Sheet = Mid(AD, InStr(AD, “]”) + 1, InStr(AD, “!”) – _
(InStr(AD, “]”) + 1) – 1) & “!”
End If
If InStr(R2, “:”) = 0 Then
RS = R2
Else
RS = Mid(R2, 1, InStr(R2, “:”) – 1)
RE = Mid(R2, InStr(R2, “:”) + 1)
End If
If InStr(RS, “R”) > 0 And InStr(RS, “C”) > 0 Then
SR = Mid(RS, InStr(RS, “R”) + 1, InStr(RS, “C”) – _
InStr(RS, “R”) – 1)
ElseIf InStr(RS, “R”) > 0 And InStr(RS, “C”) = 0 Then
SR = Mid(RS, InStr(RS, “R”) + 1)
Else
SR = 1
End If
If InStr(RS, “C”) > 0 Then
SC = Mid(RS, InStr(RS, “C”) + 1)
Else
SC = 1
End If
If RE = “” Then
ER = 1048576
EC = 16384
End If
If InStr(RE, “R”) > 0 And InStr(RE, “C”) > 0 Then
ER = Mid(RE, InStr(RE, “R”) + 1, InStr(RE, “C”) – _
InStr(RE, “R”) – 1)
ElseIf InStr(RS, “R”) > 0 And InStr(RS, “C”) = 0 Then
ER = Mid(RS, InStr(RS, “R”) + 1)
Else
ER = 1
End If
If InStr(RE, “C”) > 0 Then
EC = Mid(RE, InStr(RE, “C”) + 1)
Else
EC = 1
End If
A = R
For i1 = LBound(A, 1) To UBound(A, 1)
For i2 = LBound(A, 2) To UBound(A, 2)
If InStr(A(i1, i2), W) > 0 Then
If P = “” Then
P = Book & Sheet & “R” & i1 + SR – 1 & _
”C” & i2 + SC – 1
Else
P = P & “,” & Book & Sheet & “R” & i1 + _
SR – 1 & “C” & i2 + SC – 1
End If
End If
Next
Next
SearchWordA = P
Exit Function
EXITFUN:
SearchWordA = “”
End Function
ここで紹介したコード使用による損害に対しては一切責任は負えません。