【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」でデータを整列させる場合に必ず必要になるもので私の場合、使用頻度はメチャンコ高い!

ガンガン使おうぜぇ!で、使用しまくって表型のデータベースの投入用データを作ろうねぇ~

それでは、またね~😎

この記事を書いた人

マクロで半自動化!GO!GO!!PROGRAMMING
管理人:あどのまつり
馬齢:牡50代(後)✖1

2023年はコロナ明けでタイ旅行にいきThai!!

目次