【Excel】A列から検索したい文字列の行を返すExcelVBA

目次

”検索したい文字列”の行を返すExcelVBAサンプル作成

貼り付け先の書式に合わせる(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」でデータを整列させる場合に必ず必要になる!
大量データの場合は、IntegerをLongにしたりと、ちょっとした変更で使えるモジュールに君がしてくれ!!

使用頻度はメチャンコ高い!

Excel VBA 逆引き大全 600の極意 Microsoft 365/Office 2021/2019/2016/2013対応

Excel VBA 逆引き大全 600の極意 Microsoft 365

※私が持っているのが2016年版(以下は2016)

  1. ExcelVBAの基本構文
  2. セルの操作
  3. 関数
  4. ワークシート、ウィンドウの操作
  5. ブック操作
  6. データ操作
  7. テーブル・ピボットテーブル
  8. 図形
  9. グラフ
  10. ユーザーフォーム
  11. 印刷
  12. ファイルとフォルダ
  13. データ連携
  14. イベント
  15. バージョン・トラブルシューティング・エラー処理
  16. 高度なテクニック
  17. 索引

目次が巻頭で検索が巻末。昔のタイプの本の構成だが、索引がページでなくTipsという見出しNo.になっていて慣れるまでは検索しづらい。
Amazonレビューは★3.9

私のKindle-Unlimited評価は★4

それでは、またね~😎

目次