行いたい処理内容
ExcelのB列~I列までが処理対象の列
・B列で「1」が検出された場合、「1」が検出された行の上に空白行を挿入したい
※「1」の値をキーにして空白行を挿入
・挿入された空白行には各列で行いたい処理がある
- B列:「0」を表記
- C列/F列:任意の文字列(例:ZZ、XX)を表記
- D列/E列/G列:処理なし(空白のまま)
- H列/I列:空白であれば次行の値をコピー
※データの行数は毎回変動するため、最終行を取得しながら処理できたら有難いです。
処理前のデータ例
|A|B|C|D|E|F|G|H|I|
|:--|:--:|--:|
||1|A1|a|a|1A|a|01|11
||2|A2|b|b|2A|b|02|22
||3|A3|c|c|3A|c|03|33
||1|B1|d|d|1B|d|04|44
||1|C1|e|e|1C|e|05|55
処理後のデータ例 ※希望形です
|A|B|C|D|E|F|G|H|I|
|:--|:--:|--:|
||0|ZZ|||XX||01|11
||1|A1|a|a|1A|a|01|11
||2|A2|b|b|2A|b|02|22
||3|A3|c|c|3A|c|03|33
||0|ZZ|||XX||04|44
||1|B1|d|d|1B|d|04|44
||0|ZZ|||XX||05|55
||1|C1|e|e|1C|e|05|55
現状のマクロ(テストデータ)
データを処理して空白行の挿入まではネットで調べながらマクロを組めたのですが、
「下のセルをコピー」、「複数の条件を設定」で躓いて先に進めません…。
高望みは重々承知で知恵をお借りできたら嬉しいです。
>sazi様
以下はテスト用として作成途中のマクロです。
質問では"B列の「1」をキー"としていますが、
テスト段階では以下の処理を行っています。
("マークダウンで括る"の認識が間違っていたら申し訳ございません)
・A列(データ毎にナンバリング)を最終行から読んでいき、値が変化したら空白行を挿入
・挿入した空白行のB列に文字列"AA"を挿入
・(1行目はヘッダーが設定されているので)2行目の空白行は書式設定クリア
▼テストデータ
|A|B|C|D|E|
|:--|:--:|--:|
|1|赤|a|a|A1|
|2|青|d|d|B1|
|2|青|d|d|B2|
|3|黄|e|e|C1|
|3|黄|e|e|C2|
|3|黄|e|e|C3|
Sub Macro1() Dim i As Long Dim S As String For i = Range("A" & Rows.Count).End(xlUp).Row To 2 Step -1 If Range("A" & i).Value <> Range("A" & i - 1).Value Then Rows(i).Insert Cells(i, 2).Value = "AA" Cells(i, 3).Value = Cells(i, 1).Value End If Next i Rows(2).ClearFormats End Sub
本番データにもあるナンバリングが信頼できるデータではないため、
できれば質問にある値をキーにしたいです。
補足情報(FW/ツールのバージョンなど)
Excel2010
回答2件
あなたの回答
tips
プレビュー