|
チョット、意味が理解できない部分が有り怪しいのですけれど?
乗算の結果をE列以降に、D列の行数だけ書き込みます
Public Sub TestCalc2()
Dim i As Long
Dim j As Long
Dim lngTop As Long
Dim lngEnd As Long
Dim vntData As Variant
Dim vntResult As Variant
'データ先頭行
lngTop = 4
'データ最終行取得
lngEnd = Cells(65536, 1).End(xlUp).Row
'結果書き込み用配列の確保
ReDim vntResult(1 To (lngEnd - lngTop + 1), _
1 To (lngEnd - lngTop + 1))
'データを配列に取得
vntData = Range(Cells(lngTop, 1), Cells(lngEnd, 4)).Value
'最終行まで繰り返し
For i = 1 To lngEnd - lngTop + 1
'D列の最終行まで繰り返し
For j = 1 To lngEnd - lngTop + 1
'集計用配列に計算結果を代入
If vntData(i, 2) <> "S" Then
'B列が"S"以外の場合
vntResult(i, j) = vntData(i, 1) * vntData(i, 2)
Else
'B列が"S"の場合、D列の値に因り計算
vntResult(i, j) = vntData(i, 1) * vntData(j, 4)
End If
Next j
Next i
'集計用配列をセルに書き込み
Range(Cells(lngTop, 5), _
Cells(lngEnd, 5 + lngEnd - lngTop)).Value = vntResult
End Sub
|
|