|
▼nonoka さん:
おはようございます。
まだ、勘違いがあるかもしれません。
コード記述としては、できる限り、【列記号】で書きましたので
列の勘違いがあれば修正願います。
式は、H列にセットしていますが、最初は空白の結果になります。
コード実行後、G列に何か値がはいれば、引き算の結果がH列に表示されます。
Sub 実績計算3()
Dim dic As Object
Dim c As Range
Dim v() As Variant
Dim z As Long
Dim key As String
Dim i As Long
Dim n 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")
n = UBound(v, 1) '行数
.Range("B5").Resize(n, UBound(v, 2)).Value = v
With .Range("F5").Resize(n).Font
.ColorIndex = xlAutomatic
.FontStyle = "標準"
End With
For Each c In .Range("F5").Resize(dic.Count, UBound(v, 2))
With c.EntireRow
If .Range("F1").Value < .Range("E1").Value Then
.Range("F1").Font.Color = vbRed
.Range("F1").Font.FontStyle = "太字"
End If
End With
Next
.Range("H5").Resize(dic.Count).Formula = "=IF(G5=0,"""",F5-G5)"
.Select
End With
End Sub
|
|