シート1のA列には、印刷を実行するタイミングとなる値が
入力されています。
【例】
A列 B列
a 静岡県静岡市
b 東京都中央区
b 東京都港区
c 神奈川県小田原市
c 神奈川県藤沢市
c 神奈川県南足柄市
Sheet2の動きは、「静岡県静岡市」を転記して印刷する。
「東京都中央区」を転記して、その次の行に「東京都港区」を転記して印刷する。
「神奈川県小田原市」を転記して、その次の行に「神奈川県藤沢市」を転記して、
その次の行に「神奈川県南足柄市」を転記して印刷する、となります。
A列の値が同じかどうかを確認しながら、1行目からシート2へ内容をコピーします。
A列の値が変わったら、PrintOutメソッドでシート2を印刷します。
下記のマクロを実行する際には、次の点に注意してください。
(1)シート2の印刷ページ設定をあらかじめ行っておく。
(2)データは2列以上用意する。
(3)A列に空白がないようにデータを入力する。
Sub TEST()
Dim iData As Integer
Dim iCntSame As Integer
Dim sChkSame As String
Dim WS2 As Worksheet
Dim i As Integer
Worksheets("Sheet1").Select
Set WS2 = Worksheets("Sheet2")
WS2.Cells.Clear
iData = Cells(1, 1).End(xlDown).Row
sChkSame = Cells(1, 1).Value
iCntSame = 0
For i = 1 To iData
If Cells(i, 1).Value = sChkSame Then
iCntSame = iCntSame + 1
WS2.Cells(iCntSame, 1).Value = Cells(i, 2).Value
Else
WS2.PrintOut
Worksheets("Sheet1").Select
WS2.Cells.Clear
iCntSame = 1
WS2.Cells(1, 1).Value = Cells(i, 2).Value
sChkSame = Cells(i, 1).Value
End If
Next
WS2.PrintOut
End Sub
変数「iData」は「データ総数」、変数「iCntSame」はA列の同じデータの
カウント用、変数「sChkSame」は現在処理しているA列のデータの保存
に使っています。
For〜Nextステートメント内では、i行のA列データとひとつ上のA列データを
比較して、同じだったらi行B列のデータをシート2に記述、違っていたら
シート2のデータを印刷してクリア後、i行A列のデータをシート2に記述してい
ます。
最後に全てのデータを印刷して終了します。
|