Warning: file_get_contents(/data/phpspider/zhask/data//catemap/0/vba/14.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/5/excel/27.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Vba 如何将一个excel工作表中的单元格与另一个excel工作表中的多个单元格相乘_Vba_Excel - Fatal编程技术网

Vba 如何将一个excel工作表中的单元格与另一个excel工作表中的多个单元格相乘

Vba 如何将一个excel工作表中的单元格与另一个excel工作表中的多个单元格相乘,vba,excel,Vba,Excel,我有一份包含两张excel表格的工作簿:sheet1和sheet2。在表1中,我有大量从B列到CE列的数据 目前,我正在使用VBA将范围为“B3:AP3”的Sheet1中的每一行复制到Sheet2,并将每一行复制两次。这很好用 我的问题如表2所示,我现在需要进行计算。在表1中,每行的单元格CE和CF中都有一个数字。由于这些行已重复,我需要将表2的单元格AP3中的数字乘以表1中的CE3,将表2的单元格AP4中的数字乘以表1中的CF3 宏需要继续对后续单元格执行此操作。在总单元格AP中,第一个复制行

我有一份包含两张excel表格的工作簿:sheet1和sheet2。在表1中,我有大量从B列到CE列的数据

目前,我正在使用VBA将范围为“B3:AP3”的Sheet1中的每一行复制到Sheet2,并将每一行复制两次。这很好用

我的问题如表2所示,我现在需要进行计算。在表1中,每行的单元格CE和CF中都有一个数字。由于这些行已重复,我需要将表2的单元格AP3中的数字乘以表1中的CE3,将表2的单元格AP4中的数字乘以表1中的CF3

宏需要继续对后续单元格执行此操作。在总单元格AP中,第一个复制行需要与表1中的数字CE3相乘,第二个复制行的单元格AP需要与表1中的数字CF3相乘。结果应张贴在表2 AQ列中

下面我已经发布了复制和移动行的代码,但我真的在与乘法斗争,非常感谢任何帮助

Sub CopyRows()
Dim ws1 As Worksheet, ws2 As Worksheet
Dim i As Long, k As Long
Dim ws1LR As Long, ws2LR As Long

Set ws1 = Sheets("Bearbejdning")
Set ws2 = Sheets("Sheet8")

ws1LR = ws1.Range("B" & Rows.Count).End(xlUp).Row + 1
ws2LR = ws2.Range("B" & Rows.Count).End(xlUp).Row + 1

i = 2
k = ws2LR
Do Until i = ws1LR
    With ws1
        .Range(.Cells(i, 1), .Cells(i, 43)).Copy
    End With

    With ws2
        .Cells(k, 1).PasteSpecial
        .Cells(k, 1).Offset(1, 0).PasteSpecial
    End With

    Range("k,AR" & ws2LR).Formula = "=ws1.range(.Cells(i, 73)) * ws2.range(.Cells(k, 36))"

    k = k + 2
    i = i + 1
Loop

End Sub

不能以这种方式将对象传递到excel公式中

试试这个:

Range(k,"AR" & ws2LR).Formula = "=" & ws1.range(.Cells(i, 73)).address &" * " & ws2.range(.Cells(k, 36)).address
或者,可以将预先计算的值放置在单元格中

Range(k,"AR" & ws2LR).Value = ws1.range(.Cells(i, 73)) * ws2.range(.Cells(k, 36))
而且,这个范围调用在我看来很奇怪:
Range(“k,AR”)
。 我认为它应该是类似于
细胞(k,“AR”)
的东西


变量不应在引号内,并且范围不接受行/列参数

谢谢你的回复!我尝试了这两种解决方案,尽管它仍然拒绝它们,但将预先计算的值放入单元格似乎是一个天才的解决方案。你知道怎么让它这么做吗?我在Sheet1中每一行的CE和CF单元格中有一个预先计算的数字,需要分别转到sheet2中的一个重复行?
ws2.Range(row,“AQ”).value=ws1.Range(row,“CE”).value
重复CF。当你说它不起作用时,会发生什么?错误还是意外的结果?我在手机上,所以我没有测试代码。再次感谢,虽然它说对象“工作表”的方法“范围”失败了。当我尝试你发给我的最新代码时,由于你的帮助,我终于找到了答案!非常感谢!对于任何感兴趣的人,我最终使用ws2.Cells(k,“AQ”).Value=ws1.Cells(i,“CE”).Value-ws2.Cells(k+1,“AQ”).Value=ws1.Cells(i,“CF”).Value