前回日付順に並べ替えるマクロを記録しました。
私は普段VBAばかり使っていますが、たまにマクロを使います。
マクロで記録したことは、実はVBAでコードとして記録されています。
日付の並べ替えをマクロに記録します。
開発タブのマクロの記録をクリックします。
マクロの名前はそのままで、OK
続きを読む
前回一番下のセルまで移動させるマクロを作りましたが、次は
日付が前後した場合、ワンクリックで日付順に並べ替えるマクロを紹介します。
今までセルの指定の仕方は、Cells(1,5)といった指定の仕方でした。
この指定の仕方だと、一つのセルしか指定できません。
ある範囲のセルを指定したい場合、次のように記述します。
行数が100、200となると次入力するところまで行を移動させる
必要が出ていきます。
かといって、シートを変えるのは後で会計ソフトにインポートさせる
ことを考えるとあまりお勧めできません。
今回は、ワンクリックで入力行まで移動するマクロを紹介します。
日付の欄に空白がある場合の処理の追加の解説です。
B列の動きについて解説をします。
コードです。
If Cells(a, 2).Value = “” Then
※Cells(a, 2).Value = Cells(a – 1, 2).Value
End If
これもaに数字を当てはめていけば難しくはありません。
シート間のデータのやりとりについて追加したプログラムです。
Dim a As Integer
a = 3
Worksheets(“元のデータ”).Activate
Do Until Cells(a, 1).Value = “”
Worksheets(“インポート”).Cells(a – 1, 1).Value = Cells(a, 1).Value
Worksheets(“インポート”).Cells(a – 1, 5).Value = Cells(a, 2).Value
If Cells(a, 4).Value = “” Then
Worksheets(“インポート”).Cells(a – 1, 2).Value = 101
Worksheets(“インポート”).Cells(a – 1, 3).Value = 999
Worksheets(“インポート”).Cells(a – 1, 4).Value = Cells(a, 3).Value
Else
Worksheets(“インポート”).Cells(a – 1, 3).Value = 101
Worksheets(“インポート”).Cells(a – 1, 2).Value = 999
Worksheets(“インポート”).Cells(a – 1, 4).Value = Cells(a, 4).Value
End If
If Cells(a, 2).Value Like “*印紙*” Then
Worksheets(“インポート”).Cells(a – 1, 2).Value = 726
End If
If Cells(a, 2).Value Like “*切手*” Then
Worksheets(“インポート”).Cells(a – 1, 2).Value = 724
End If
If Cells(a, 2).Value Like “*引出し*” Then
Worksheets(“インポート”).Cells(a – 1, 3).Value = 121
End If
a = a + 1
Loop
End Sub
①シート名「インポート」を参照しているときは、Cells(a-1,1)
②シート名「元のデータ」を参照しているときは、Cells(a,1) となっています。
これはシート名「インポート」では、3行目からデータがスタートしていますが、
シート名「元のデータ」では2行目からデータがスタートしています。
このずれを調整するためにシート名「インポート」ではa-1としています。
Worksheets(“インポート”).Cells(a – 1, 1).Value = Cells(a, 1).Value
a=3のとき
Worksheets(“インポート”).Cells(a – 1, 1).Value →A2
Cells(a, 1).Value →A3
・・・
a=12のとき
Worksheets(“インポート”).Cells(a – 1, 1).Value →A11
Cells(a, 1).Value →A12
このようにシートによってどの行からスタートさせるのか違う場合は変数に対して
引き算で調整します。
今までは同じシート間でのデータのやり取りでしたが、同じシート同士よりも
出納帳のデータとインポートするデータは、別のシートの方が管理しやすいです。
続きを読む