使用Excel VBA扩大数据范围

3
我正在使用以下代码从"RawImport"表中提取数据到"PullData"表中。
Dim lrA As Integer

    lrA = RawImport.Range("B" & Rows.Count).End(xlUp).Row

    PullData.Range("A2:A" & lrA - 6).Value = RawImport.Range("G8:G" & lrA).Value
    PullData.Range("A2:A" & lrA).NumberFormat = "d mmm yyyy h:mm;@"
    PullData.Range("A:A").Columns.AutoFit

    PullData.Range("B2:B" & lrA - 6).Value = RawImport.Range("E8:E" & lrA).Value

    PullData.Range("C2:C" & lrA - 6).Value = RawImport.Range("C8:C" & lrA).Value

    PullData.Range("D2:D" & lrA - 6).Value = RawImport.Range("D8:E" & lrA).Value

    PullData.Range("E2:E" & lrA - 6).Value = RawImport.Range("B8:B" & lrA).Value

    PullData.Range("F2:F" & lrA - 6).Value = RawImport.Range("F8:F" & lrA).Value

    Application.Calculation = xlCalculationAutomatic

    Application.ScreenUpdating = True

现在我想要对E和F列进行乘法运算(从第2行开始),然后将结果加到G列。我尝试添加以下代码:
PullData.Range("G2:G" & lrA - 6).Value = PullData.Range("F2:F" & lrA - 6).Value * PullData.Range("E2:E" & lrA - 6).Value

但是当我运行这段代码时,出现了 类型不匹配 错误。最佳的方法是什么来将这些值相乘并分配到 G 列中?


lrA 的值是多少? - user4039065
@Jeeped Ira是一个整数,用于计算RawImport表格的行数。 - acr
2
在编程中,不要使用Integer,而应该始终使用Long。特别是在处理行数时:Excel具有比Integer可以处理的更多行。 - Pᴇʜ
你不能按照你现在的方式来乘以两个范围。查看这个问题获取有关如何乘以两个范围的更多信息。 - danieltakeshi
那不是我问的。如果它不是 8,由于多个数学运算,你将会得到类型不匹配错误。 - user4039065
@Jeeped 谢谢。明白了,你的回答解决了这个问题。 - acr
3个回答

3

编写一个简单的公式并计算出公式结果。

PullData.Range("G2:G" & lrA - 6).Formula = "=F2*E2"
PullData.Range("G2:G" & lrA - 6) = PullData.Range("G2:G" & lrA - 6).Value

如果你不想写公式,可以创建一个数组并循环遍历它,将每行的乘法操作结果存储在其中。


2

您还可以使用自动填充功能。

PullData.Range("G2") = "=F2*E2"
PullData.Range("G2").Autofill Destination:=PullData.Range("G2:G" & lrA-6)

这会导致一个表达乘法运算的公式,而不是OP所指示的原始值。 - user4039065

1

Please use this code:

For i = 2 To lrA - 6
    PullData.Range("G" & i).Value = PullData.Range("F" & i).Value * PullData.Range("E" & i).Value
Next i

希望这可以帮助到你。

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接