エクセルvbaで、同じ番号の請求書の金額をまとめる方法 2
すみません、前回質問して良い回答をいただいたのですが、こちらの手違いで
用件がひとつぬけていました。
A B I K L M
11/5 B575 3000 7500 5000 13500
11/5 B575 4500 8500
11/6 B578 3000 3000 4000 40000
上記のように A日付 B請求書番号 I金額 K金額合計 が入力されています。
(IからKにとんでいるのは間違いではありません)
M列にも同じようにL列の同じ請求書番号の金額の合計をセルを結合して中央揃えで表示したいのです。
以前のプログラムに加筆することで可能になるでしょうか。
下に貼り付けます。
Dim i As Long, j As Long
Dim buf As Variant, ret As Double
For i = 1 To Cells(Rows.Count, 1).End(xlUp).Row
buf = Val(Cells(i, 9).Value) '修正
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))
.MergeCells = True
.HorizontalAlignment = xlCenter
.VerticalAlignment = xlCenter
End With
If buf + ret > 0 Then
Cells(j, 11).Value = buf + ret
End If
Cells(j, 11).NumberFormat = "#,##0"
ret = 0: j = 0
Else
If j = 0 Then j = i
ret = buf + ret
End If
Next
''合計欄
'With Cells(i, 4)
' .NumberFormat = "#,##0"
' .HorizontalAlignment = xlCenter
' .Formula = "= SUM(R1C:R[-1]C)"
'End With
ご多忙の中申し訳ございませんがよろしくお願いします。
No.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.おそらく、この先に、見栄えを整えるために、罫線を入れたいという要求があるかもしれませんが、とりあえずは、ここまでにします。必要な場合は、画像を入れてくださるとありがたいです。
お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!
似たような質問が見つかりました
- Visual Basic(VBA) VBA 請求書自動作成 3 2022/04/24 01:58
- Visual Basic(VBA) オブジェクトが見つかりません 1 2023/06/24 19:43
- Visual Basic(VBA) 最終列の右へSUM関数を作成するため下記コードを実行しましたが、最終列「10月28日」が上書きされて 3 2022/12/05 20:32
- Excel(エクセル) VBAの指示の内容 昨日こちらでご教示頂いたのですが初心者な為、一つ一つの指示が何をやっているのかわ 2 2022/10/25 18:08
- Visual Basic(VBA) VBA処理追加 こちらでご教示頂いたのですが回答完了させてしまいましたのでこちらからまた質問させてく 2 2022/10/27 09:57
- Visual Basic(VBA) VBA Userformで一部別シートに転記がしたいのですが 2 2023/05/24 13:08
- Excel(エクセル) VBAで組み合わせ算出やCOUNTIFSの処理を高速化したいです。 4 2022/04/07 02:38
- Visual Basic(VBA) フォルダの場所を可変にしたいです(マクロ) 4 2023/05/11 10:00
- Visual Basic(VBA) いつもお世話になっております、VBAで教えて頂きたいのですが 2 2022/05/05 22:20
- Visual Basic(VBA) 別シートから年齢別の件数をカウントしたいの続き 5 2023/01/24 00:16
関連するカテゴリからQ&Aを探す
おすすめ情報
デイリーランキングこのカテゴリの人気デイリーQ&Aランキング
-
SUMIFとCOUNTIFを合わせたよう...
-
エクセルでの複数条件下での標...
-
EXCEL 経過年数の平均を求めた...
-
エクセル シフト表 6連続勤...
-
【スプレッドシート】指定の日...
-
エクセルで年月の合計の関数を...
-
Excelの表以外が暗い?
-
エクセル2010で合計5000に近い...
-
ある一定時間を超えた場合の超...
-
エクセルにて「週」から日付を...
-
エクセルで灯油の配送予定日を...
-
【エクセル】日付入力
-
エクセルで条件に当てはまる曜...
-
エクセルで「ぶら下げ」書式を...
-
【Excel2003で条件付き書式3つ...
-
隣のセルに入力したら自動的に...
-
エクセル:該当日にアラートを...
-
EXCEL 年月表示をするVBAを教...
-
excelでの文字を隠す方法
-
エクセル2003 MONTH関数で
マンスリーランキングこのカテゴリの人気マンスリーQ&Aランキング
-
SUMIFとCOUNTIFを合わせたよう...
-
エクセルでの複数条件下での標...
-
エクセルで年月の合計の関数を...
-
【スプレッドシート】指定の日...
-
ある一定時間を超えた場合の超...
-
EXCEL 経過年数の平均を求めた...
-
スプレッドシート、Excelでの数...
-
エクセルにて「週」から日付を...
-
Excelの表以外が暗い?
-
エクセルで角度の計算できますか?
-
Excelにいついて質問です。
-
隣のセルに入力したら自動的に...
-
エクセルで「ぶら下げ」書式を...
-
エクセルで、一つのセルに二つ...
-
EXCEL 年月表示をするVBAを教...
-
Excel:月またぎを含む日数の差...
-
エクセル シフト表 6連続勤...
-
vbaで「/」を削除したい
-
excelでの文字を隠す方法
-
SUMIF関数の結果が0になってし...
おすすめ情報