”検索したい文字列”の行を返すエクセルマクロサンプル作成
貼り付け先の書式に合わせる(M)でコピペ元をA列にペーストする
- 「ALT→H・V・M」とキーボード操作で「貼り付け先の書式に合わせる(M)」同様の操作可能
B列以降にはtable構造のものだけが貼り付くので、見出しになる情報は全てA列に貼り付けられる。
検索したい文字列を設定し「A列を検索する」とSheetの行を返すモジュールが作成可能。
コピペ元は行間があるので、行間処理を考える必要がある。
今回のサンプルは行数が1000行までを検索する仕様になっているので、必要ならばこの数値を変更して利用して頂ければよい!
Function RetLC(r As String, sh As String)
- r As String 検索したい文字列をいれる
- sh As String 検索するシート名をいれる
Function RetLC(r As String, sh As String)
'文字列rが何行目にあるか(SHEET sh=sh_nmを1000行まで検索する)
'"*"の位置を変えれば後ろからrev、途中Midの検索も可能
Dim i As Integer,CC As Integer
Sheets(sh).Select
CC = 1 '1:A列 2:B列・・・
RetLC = 0
For i = 1 To 1000
If Cells(i, CC) Like r & "*" Then
RetLC = i
Exit For
End If
Next i
End Function
サンプルではシート内A列をrに代入した文字列で検索し一番初めに検索した行数を返すというVBA関数だが、文字列の検索の仕方は前から一致するもの。
例:r=”ここから”とするとシート内の”ここからが本文”がヒットし、その行を返す。
文字列の検索の仕方を後ろから一致にしたい場合。
Function RetLCRev(r As String, sh As String)
Function RetLCRev(r As String, sh As String)
'文字列rが何行目にあるか(SHEET sh=sh_nmを1000行まで検索する)
'
Dim i As Integer,CC As Integer
Sheets(sh).Select
CC = 1 '1:A列 2:B列・・・
RetLCRev = 0
For i = 1 To 1000
If Cells(i, CC) Like "*" & r Then
RetLCRev = i
Exit For
End If
Next i
End Function
例:r=”本文”とするとシート内の”ここからが本文”がヒットし、その行を返す。
文字列の検索の仕方を文字の途中に一致する文字列が含まれる場合 。
Function RetLCMid(r As String, sh As String)
Function RetLCMid(r As String, sh As String)
'文字列rが何行目にあるか(SHEET sh=sh_nmを1000行まで検索する)
'
Dim i As Integer,CC As Integer
Sheets(sh).Select
CC = 1 '1:A列 2:B列・・・
RetLCMid = 0
For i = 1 To 1000
If Cells(i, CC) Like "*" & r & "*" Then
RetLCMid = i
Exit For
End If
Next i
End Function
例:r=”からが”とするとシート内の”ここからが本文”がヒットし、その行を返す。
サンプル例文: test_RetLCMid を実行する
Sheet1の10行目に”ここからが本文”と入力してから「 test_RetLCMid」を実行する。
Sub test_RetLCMid()
MsgBox RetLCMid("からが", "Sheet1")
End Sub
編集後記
このモジュールは、「UWSC+ExcelVBA」でデータを整列させる場合に必ず必要になるもので私の場合、使用頻度はメチャンコ高い!
ガンガン使おうぜぇ!で、使用しまくって表型のデータベースの投入用データを作ろうねぇ~
それでは、またね~😎