- ベストアンサー
エクセルVBAで同じ番号の請求書の金額をまとめる方法
- エクセルVBAを使用して、同じ番号の請求書の金額をまとめる方法について教えてください。
- 上記のデータには、日付、請求書番号、金額、金額合計が含まれており、M列にも同じ請求書番号の金額の合計を表示したいと考えています。
- 現在のプログラムに加筆することで、目的を達成することができるのでしょうか。
- みんなの回答 (1)
- 専門家の回答
質問者が選んだベストアンサー
修正しました。 I列とL列とは同じ構造で連動していることが条件です。 前回から修正を加えたのは、書式で右側を開け、桁揃えをすることにしました。 '.HorizontalAlignment = xlCenter '修正 そのために、コメントブロックしています。 合計欄のコメントブロックを外すと、K列、M列に最後のデータの次に合計が出ます。 '// Sub MacroTest2() Dim i As Long, j As Long Dim buf As Variant, ret As Double Dim buf2 As Variant, ret2 As Double Application.ScreenUpdating = False For i = 1 To Cells(Rows.Count, 1).End(xlUp).Row buf = Val(Cells(i, 9).Value) 'I buf2 = Val(Cells(i, 12).Value) 'M If Cells(i, 2).Value <> Cells(i + 1, 2).Value Then If j = 0 Then j = i With Range(Cells(j, 11), Cells(i, 11)) 'K .MergeCells = True '.HorizontalAlignment = xlCenter '修正 .VerticalAlignment = xlCenter End With With Range(Cells(j, 13), Cells(i, 13)) 'L .MergeCells = True '.HorizontalAlignment = xlCenter '修正 .VerticalAlignment = xlCenter End With ''0の場合は出力しないが、0を出力する場合はIf--End If を辞める If buf + ret > 0 Then Cells(j, 11).Value = buf + ret End If If buf2 + ret2 > 0 Then Cells(j, 13).Value = buf2 + ret2 End If Cells(j, 11).NumberFormat = "#,##0_ " Cells(j, 13).NumberFormat = "#,##0_ " ret = 0: j = 0 ret2 = 0 Else If j = 0 Then j = i ret = buf + ret ret2 = buf2 + ret2 End If Next ''合計欄 ' With Cells(i, 11) ' .NumberFormat = "#,##0_ " ' .Formula = "= SUM(R1C:R[-1]C)" ' .Offset(, 2).Formula = "= SUM(R1C:R[-1]C)" ' End With ' Application.ScreenUpdating = True End Sub p.s.おそらく、この先に、見栄えを整えるために、罫線を入れたいという要求があるかもしれませんが、とりあえずは、ここまでにします。必要な場合は、画像を入れてくださるとありがたいです。
お礼
稼働しました。 夜遅くにもかかわらず、たいへんありがとうございました。 再度のご対応に感謝いたします。