特定データの下(右)に行(列)を挿入2021.04.06
シート内から特定のデータを検索し、該当セルの下に一行挿入(または右に一列挿入)するマクロです。
下図はマクロ実行例です。
「りんご」と「リンゴ」をアクティブシートから検索し、一致セルの下に一行が挿入されます。
【お薦め】マクロ・プロシージャを管理する無料のツール!
Excelマクロ管理ツール
Excelマクロ管理ツール
サンプルコード2021.04.06
コードの貼り付け場所 VBAコードをカラーで印刷・Web掲載するためのツールはこちら
Sub Insert_RCs_BasedOnData() '対象:アクティブシート Dim varArray As Variant Dim v As Variant Dim strAddress As String Dim rngFnd As Range Dim rngUni As Range varArray = Array("りんご", "リンゴ") '検索文字列 For Each v In varArray Set rngFnd = Cells.Find(What:=v, _ LookIn:=xlValues, _ LookAt:=xlPart, _ SearchOrder:=xlByRows, _ MatchCase:=False, _ MatchByte:=False) '検索 1周目「りんご」2周目「リンゴ」 If Not rngFnd Is Nothing Then ' strAddress = rngFnd.Address '最初に検索一致したセルの番地格納 If rngUni Is Nothing Then Set rngUni = rngFnd Do Set rngUni = Union(rngUni, rngFnd) 'セルを集合 Set rngFnd = Cells.FindNext(rngFnd) '次の一致セルを検索 Loop Until strAddress = rngFnd.Address 'セルのアドレスが一致したらループを抜ける End If Next If Not rngUni Is Nothing Then With rngUni If MsgBox("行挿入:はい 列挿入:いいえ", vbYesNo, "行を挿入しますか?") = vbYes Then Union(.Offset(1), .Offset(1)).EntireRow.Insert '行の挿入 Else Union(.Offset(, 1), .Offset(, 1)).EntireColumn.Insert '列の挿入 End If End With End If End Sub
「検索文字列」
検索する文字列です。検索文字列の追加は、次の例を参考にしてください。
例:Array("りんご", "リンゴ") → Array("りんご", "リンゴ", "みかん", "ぶどう")
「LookAt:=xlPart」
検索文字列が、セル内のデータに含まれる場合も一致判定となります。
【例】検索文字列:りんご セル内データ:青りんご → 一致判定
セルと完全一致のみを一致とする場合:xlPart → xlWhole
「Union(rngUni.Offset(1), rngUni.Offset(1)).EntireRow.Insert」
Unionメソッドは、行が重複して選択された際、適切な形の選択に変更するために用いています。