excel - 将每列中的值乘以每列中的第二个单元格
问题描述
我有一张表,其中包含: 在第 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
解决方案
据我了解,这可能是您需要的:
在下面的代码中,我将创建一个矩阵来执行 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
.
希望能帮助到你!
推荐阅读
- java - Java 8 - 在 CompleteableFuture 的 thenCompose 方法中处理元素列表
- android - Recyclerview 上方的标题
- python - Scikit Learn - K Means - Silhouette 方法将 1 点作为最佳 K
- javascript - 在添加单元格渲染器时出现角度滚动的 ag-grid 问题
- sql - 无法在 bash 脚本中将变量传递给 sqlite(而其他变量确实通过)
- nginx - nginx-rtmp on_publish 不工作抛出错误无法访问 OBS 上的指定频道或流密钥
- javascript - 使用缩放正确缩放不同的屏幕尺寸
- sql - 在grafana中绘制来自clickhouse的过滤结果不起作用
- azure - 如何从 Azure API 管理服务将消息记录到 Azure 事件中心
- reactjs - React Native useContext 错误:元素类型无效