| 
    
     |  | ▼UO3 さん: おはようございます。
 返信遅くなって申し訳ありません。
 
 >質問です。
 >
 >>J列に数字が入ればE列−F列の計算結果をG列に記入したいです。
 >
 >ここでいう J列は Shipped のJ列ですよね?
 いえ、"send list"になります。
 Shippedは下記コードでOKでした。
 
 あとはsend listでの処理となります。
 下記コードでB列からF列に"Shipped"からのデータが集計されました。
 "send list"単体での作業で
 E列引くF列の計算結果をG列にという意味です。
 ですが、一行挿入したので、F引くGはHとしたいです。
 G列は手入力で記入しますので、記入した時点でHに数字が入るとしたいです。
 
 計算式をH列に=F-Gといれれば済むことですが、データ量が増加した場合を想定してマクロでおねがいしたいと思います。
 
 U03様はたぶんすごい複雑なことを考えておられたのですね。
 書き方がまずかったです。申し訳ありません。
 
 Sub 実績計算()
 
 Dim dic As Object
 Dim c As Range
 Dim v() As Variant
 Dim z As Long
 Dim key As String
 Dim i As Long
 
 Set dic = CreateObject("Scripting.Dictionary")
 
 With Sheets("Shipped")
 z = .Range("D" & .Rows.Count).End(xlUp).Row - 9 'データ行数
 ReDim v(1 To z, 1 To 5) '転記用配列。行数は最大可能行数
 For Each c In .Range("D10").Resize(z)
 key = Join(WorksheetFunction.Index(c.Resize(, 4).Value, 1, 0), vbTab)
 If Not dic.exists(key) Then dic(key) = dic.Count + 1 '配列行番号
 i = dic(key)
 v(i, 1) = c.Value
 v(i, 2) = c.Offset(, 1).Value
 v(i, 3) = c.Offset(, 2).Value
 v(i, 4) = c.Offset(, 3).Value
 v(i, 5) = v(i, 5) + c.Offset(, 6).Value
 Next
 End With
 
 With Sheets("send list")
 .Range("B5").Resize(UBound(v, 1), UBound(v, 2)).Value = v
 .Select
 End With
 
 End Sub
 
 |  |