
下記の様な表(処理前)があるとします。
2行目から行毎に"A列 = C列 AND B列 = D列"という比較を行い、
TRUEなら次の行へ、FALSEなら該当行のC列とD列に
空白セルを挿入し(処理後の表の様にしたいです)次の行へ進む
という処理をマクロにて実現したいです。
どのようなマクロを組めば宜しいでしょうか?ご教授お願い致します。
<処理前>
A列B列C列D列
東京斎藤東京斎藤
東京田中東京後藤
東京伊藤東京井上
東京後藤東京三沢
東京井上
大阪田中
東京三沢
<処理後>
A列B列C列D列
東京斎藤東京斎藤
東京田中<両列に空白セル挿入>
東京伊藤<両列に空白セル挿入>
東京後藤東京後藤
東京井上東京井上
大阪田中<両列に空白セル挿入>
東京三沢東京三沢
No.3ベストアンサー
- 回答日時:
No.1です。
> C列とD列に空白を挿入、というのは空白のセルを挿入し、
> 元々あった値を下にシフト(遷移)させたいです。
理解できました。
以下のようにマクロを修正してみましたが、これでいかがでしょうか。
Sub Macro1()
Dim EndRow As Integer, i As Integer
EndRow = Range("A65536").End(xlUp).Row
For i = 1 To EndRow
If Cells(i, 1).Value <> Cells(i, 3).Value Or _
Cells(i, 2).Value <> Cells(i, 4).Value Then
Cells(i, 3).Insert Shift:=xlShiftDown
Cells(i, 4).Insert Shift:=xlShiftDown
End If
Next
End Sub
この回答への補足
ご回答ありがとうございます。
教えて頂いた内容でやりたいことは実現可能でした。
ありがとうございます。
重ねて質問してもよろしいでしょうか?
下記の部分なのですが、1文にまとめることは可能でしょうか?
Cells(i, 3).Insert Shift:=xlShiftDown
Cells(i, 4).Insert Shift:=xlShiftDown
No.5
- 回答日時:
> やはりセル分記述するしかないのでしょうか?
いえ、その必要はありません。たとえば、
Range(Cells(i, 3), Cells(i, 10)).Insert Shift:=xlShiftDown
とすると、「i行3列目からi行10列目まで」という意味になり、たとえばiが1の場合、C1:K1の範囲を意味します。(C1とK1ではありません)
また、
Cells(i, 3).Resize(1, 2).Insert Shift:=xlShiftDown
は、「i行3列目から横に2列」を意味し、これを
Cells(i, 3).Resize(1, 10).Insert Shift:=xlShiftDown
にすると、「i行3列目から横に10列」を意味し、iが1の場合、C1:L1を意味します。
No.4
- 回答日時:
No.1です。
補足拝見しました。Cells(i, 3).Insert Shift:=xlShiftDown
Cells(i, 4).Insert Shift:=xlShiftDown
を1行にまとめるなら、
Range(Cells(i, 3), Cells(i, 4)).Insert Shift:=xlShiftDown
とするか、あるいは
Cells(i, 3).Resize(1, 2).Insert Shift:=xlShiftDown
とすればいいです。
早急なご回答ありがとうございます。
やはりセル分記述するしかないのでしょうか?
もし仮に該当行のC列からJ列に対して挿入したい場合、"3-10"の様に範囲指定することは不可でしょうか?
重ね重ねで申し訳御座いませんが、ご回答宜しくお願い致します。
No.2
- 回答日時:
回答の前の質問です。
下記部分は、***と解釈していいのですか?。下記の様な表(処理前)があるとします。
2行目から行毎に"A列 = C列 AND B列 = D列"という比較を行い、
TRUEなら次***の行へ何もせず進む、FALSEなら該当行のC列とD列を空白セルにして(処理後の表の様にしたいです)次の行へ進む
という処理をマクロにて実現したいです。
但し、他の列には、データがない。
または、あっても関与しない。・・・・・ですか??。
この回答への補足
ご回答ありがとうございます。
言葉足らずで申し訳ございません。
C列とD列に空白を挿入、というのは空白のセルを挿入し、
元々あった値を下にシフト(遷移)させたいです。
このシフトは比較結果がTRUEになるまで継続させます。
>但し、他の列には、データがない。
>または、あっても関与しない。・・・・・ですか??。
比較元は常にA列とB列、比較先はC列とD列となります。
その他の列(E列以降)は関与しません。
以上です。
No.1
- 回答日時:
C列とD列に空白を挿入、というのは空白のセルを挿入して右にシフト、というわけではなくて、元々入っていた値を空白で上書きするということでよろしいですか?(処理後のようにしたいです、と言うことでそう解釈したので、違ったら補足願います)
1行目からデータが入っていると仮定して、以下のようなマクロを書いてみました。
Sub Macro1()
Dim EndRow As Integer, i As Integer
EndRow = Range("A65536").End(xlUp).Row
For i = 1 To EndRow
If Cells(i, 1).Value <> Cells(i, 3).Value Or _
Cells(i, 2).Value <> Cells(i, 4).Value Then
Range(Cells(i, 3), Cells(i, 4)).Clear
End If
Next
End Sub
データが2行目以降から入っているのなら、
For i = 1 To EndRow
の1の値をデータが始まる行に変更してください。
※質問文のように「A列 = C列 AND B列 = D列 の条件がFALSEのとき」という書き方をしたいなら、
If (Cells(i, 1).Value = Cells(i, 3).Value And _
Cells(i, 2).Value = Cells(i, 4).Value) = False Then
と書いても同じです。
この回答への補足
ご回答ありがとうございます。
言葉足らずで申し訳ございません。
C列とD列に空白を挿入、というのは空白のセルを挿入し、
元々あった値を下にシフト(遷移)させたいです。
このシフトは比較結果がTRUEになるまで継続させます。
以上です。
お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!
似たような質問が見つかりました
- Visual Basic(VBA) A列と完全一致したセルとその右隣だけを残す 3 2023/06/21 05:01
- Excel(エクセル) スプレットシートでA1~G1にデータが入っていて、 それを1列ずつ空けて表示する関数がわかる方いまし 4 2022/08/25 09:39
- Excel(エクセル) Excelのtextbox 1 2022/04/15 15:26
- Excel(エクセル) エクセルのマクロを教えてください。 2 2022/03/28 13:14
- Visual Basic(VBA) 置換について 3 2023/04/02 11:54
- Excel(エクセル) Excei で、項目の横展開 2 2023/07/15 09:56
- Excel(エクセル) 指定値をマクロで検索&シート移動 2 2022/04/27 23:29
- Visual Basic(VBA) 指定文字以外のカウント 4 2023/05/03 14:37
- Excel(エクセル) エクセルのマクロで置換を教えてください 1 2022/05/19 10:27
- PHP ファイルの書き込みについて教えて下さい。 1 2023/03/20 12:01
このQ&Aを見た人はこんなQ&Aも見ています
関連するカテゴリからQ&Aを探す
おすすめ情報
このQ&Aを見た人がよく見るQ&A
デイリーランキングこのカテゴリの人気デイリーQ&Aランキング
-
B列の最終行までA列をオート...
-
Worksheets メソッドは失敗しま...
-
Excelで、あるセルの値に応じて...
-
Cellsのかっこの中はどっちが行...
-
vba 2つの条件が一致したら...
-
VBA 何かしら文字が入っていたら
-
データグリッドビューの一番最...
-
VBAのFind関数で結合セルを検索...
-
文字列があるセルを認識したい...
-
IIF関数の使い方
-
Changeイベントでの複数セルの...
-
Excel VBAでフォントの色が違う...
-
エクセルVBA シートモジュール...
-
rowsとcolsの意味
-
空白セルをとばして転記
-
URLのリンク切れをマクロを使っ...
-
難問 VBA 今日の日付より前に対...
-
Sheet1をフィルターで「りんご...
-
VB2005EE:DataGridViewでチェ...
-
【VBA】2つのシートの値を比較...
マンスリーランキングこのカテゴリの人気マンスリーQ&Aランキング
-
Excelで、あるセルの値に応じて...
-
vba 2つの条件が一致したら...
-
Worksheets メソッドは失敗しま...
-
B列の最終行までA列をオート...
-
Cellsのかっこの中はどっちが行...
-
IIF関数の使い方
-
Changeイベントでの複数セルの...
-
【VBA】2つのシートの値を比較...
-
VBA 何かしら文字が入っていたら
-
URLのリンク切れをマクロを使っ...
-
VBAのFind関数で結合セルを検索...
-
DataGridViewに空白がある場合...
-
VBAを使って検索したセルをコピ...
-
文字列の結合を空白行まで実行
-
データグリッドビューの一番最...
-
VBAでのリスト不一致抽出について
-
エクセル 2つの表の並べ替え
-
rowsとcolsの意味
-
【Excel VBA】 B列に特定の文字...
-
VBA 列が空白なら別のマクロへ...
おすすめ情報