首页 > 解决方案 > 将每列中的值乘以每列中的第二个单元格

问题描述

我有一张表,其中包含: 在第 1 行中:在第 2 行中检查容器的日期:在特定日期第 3 行中每个坏的平均公斤数:每个容器拾取的袋子数量。我的测试表的范围为 A1:D8

我试图将此表从“Sheet1”复制到“Sheet2”,同时计算每个容器在特定日期有多少公斤乘以每个容器的袋数。我能够用一个固定值计算单元格。但是,我正在努力如何将下面第 3 行中的每一列乘以第 2 行中的值。

Private Sub CommandButton1_Click()

Dim ws1 As Worksheet
Dim ws2 As Worksheet
Dim rng As Range
Dim myVal As Range

Set ws1 = Worksheets("Sheet1")
Set ws2 = Worksheets("Sheet2")
Set rng = ws2.Range("A3:D8")

Sheets("Sheet1").Range("A3:D8").Copy Destination:=Sheets("Sheet2").Range("A8:D3")

For Each myVal In rng
myVal = myVal.Value * ws1.Range("A1")
Next myVal

End Sub

标签: excelvbaexcel-formulamultiplication

解决方案


据我了解,这可能是您需要的:

在下面的代码中,我将创建一个矩阵来执行 2 个矩阵的乘法,而不是遍历每个单元格,然后使用 MMULT 函数返回结果(见我的图片)

注意:这种方法可能不是很有效,只是暂时的想法。

Sub Test()
Dim ws1 As Worksheet: Set ws1 = Sheets("Sheet1")
Dim ws2 As Worksheet: Set ws2 = Sheets("Sheet2")
Dim Rng As Range: Set Rng = ws2.Range("A3:D8")
Dim Header:   Header = ws1.[a2:d2].Value2
M_size = Rng.Columns.Count

ws1.Range("A3:D8").Copy Destination:=Rng

   Dim matrix() As Integer 
   ReDim matrix(M_size - 1, M_size - 1) As Integer:k = 1 'initialize matrix element=0

   For i = 1 To M_size
        matrix(i - 1, i - 1) = Header(1, k): k = k + 1   'change diagonal values
   Next i
   Rng = Application.WorksheetFunction.MMult(Rng, matrix)'multiply 2 matrices
End Sub

.

在此处输入图像描述

希望能帮助到你!


推荐阅读