首页 文章

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

提问于
浏览
1

我有一个包含两个Excel工作表的工作簿:sheet1和sheet2 . 在sheet1中,我有从B列到CE的大量数据 .

使用VBA我当前正在将每行从“B3:AP3”范围内的Sheet1复制到Sheet2复制每一行,这样它将被表示两次 . 这工作正常!

我在Sheet2中遇到的问题我现在需要进行计算 . 在Sheet1中,每行的单元格CE和CF都有一个数字 . 由于这些行已被复制,我需要将Sheet2的单元格AP3中的数字与Sheet1中的CE3的数字和Sheet2中的AP4的数字与Sheet1中的CF3的数字相乘 .

宏需要继续使用后续单元格 . 在总单元AP中,第一个复制线需要与Sheet1中的数字CE3相乘,第二个复制线的单元AP需要与sheet1中的数字CF3相乘 . 结果应发布在Sheet2列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

1 回答

  • 1

    您不能以这种方式将对象传递给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调用看起来很奇怪: Range("k,AR") . 我认为它应该像 Cells(k,"AR") .

    变量不应在引号内,Range不接受行/列参数 .

相关问题