每列中的值乘以每列中的第二个单元格

问题描述 投票:0回答:1

我有一张工作表,其中包含:第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
excel vba excel-formula multiplying
1个回答
0
投票

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

在下面的代码中,我将创建一个矩阵来执行两个矩阵的乘法,而不是遍历每个单元格,然后使用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
   For i = 1 To M_size
        matrix(i - 1, i - 1) = Header(1, k): k = k + 1
   Next i
   Rng = Application.WorksheetFunction.MMult(Rng, matrix)
End Sub

enter image description here

希望有帮助!

© www.soinside.com 2019 - 2024. All rights reserved.