そのため、レポートを実行し、同じ請求書番号を持つすべてのレコードを取得して、同じ請求書のすべての行の合計である日付を1つの行にまとめるマクロを作成する必要がありました。番号の拡張価格、該当する場合は注文貨物、および拡張価格と注文貨物の合計。
これらの値を取得して、新しいシートに配置します。
これが私が問題にぶつかっているところです。ほとんどの場合、マクロは機能しているように見えますが、特定のレコードに到達すると、実際には番号(123456)の請求書が次の行(123457)に変更されます。したがって、123456であった請求書はなくなります。既存であり、代わりに123457と一緒にグループ化されます。
私はそれをステップスルーしましたが、他のセルでは変更されなかったため、セルの値が変更される理由はないはずです。なぜこれがそれをしているのかについて誰かが理由を持っていますか?
これが私のコードです。前もって感謝します。
Sub CombineInvoice()
Dim InvoiceNum As String, InvoiceDate As String, SoldToAcct As String
Dim ExtPrice As Double, OrderFreight As Double, OrderTotal As Double
Dim WS2 As Worksheet
Application.ScreenUpdating = False
Set WS2 = Sheets.Add
With Sheet1.Range("A1,C1,D1,BB1,BD1")
.Copy Destination:=Sheet2.Range("A1:F1")
End With
Sheet1.Select
InvoiceNum = Range("A2").Value
InvoiceDate = Range("C2").Value
SoldToAcct = Range("D2").Value
Sheet2.Select
Selection.Offset(0, 5).Value = "Order Total"
Range("A2").Select
Sheet1.Select
Range("A2").Select
Do
'Set order freight
OrderFreight = OrderFreight + Selection.Offset(0, 55)
'Set invoice date
InvoiceDate = Selection.Offset(0, 2)
'Set Sold to account
SoldToAcct = Selection.Offset(0, 3)
'Get extended price
Do Until Selection.Value <> InvoiceNum
ExtPrice = ExtPrice + Selection.Offset(0, 53)
'Make sure orderFreight is the same
If (OrderFreight <> OrderFreight Or OrderFreight = 0) Then
OrderFreight = OrderFreight + Selection.Offset(0, 55)
Else
OrderFreight = OrderFreight
End If
Selection.Offset(1, 0).Select
Loop
'Add Extended Price to Order Freight
OrderTotal = ExtPrice + OrderFreight
'Populate Sheet 2 with data
Sheet2.Select
With Selection
.Value = InvoiceNum
.Offset(0, 1).Value = InvoiceDate
.Offset(0, 2).Value = SoldToAcct
.Offset(0, 3).Value = ExtPrice
.Offset(0, 4).Value = OrderFreight
.Offset(0, 5).Value = OrderTotal
.Offset(1, 0).Select
End With
'Return to sheet 1 for next invoice number
Sheet1.Select
Selection.Value = Selection.Offset(1, 0)
InvoiceNum = Selection.Value
ExtPrice = 0
OrderFreight = 0
If (Selection.Value = "") Then Exit Do
Loop
Application.ScreenUpdating = True
End Sub