Vba 两个量程相乘的最快方法

Vba 两个量程相乘的最快方法,vba,excel,Vba,Excel,我在Excel中有两个大小相同的区域,我想使用vba将它们在另一个区域中相乘。例如: 范围1:图纸(“A”)。范围(“A1:H200”) 范围2:图纸(“B”)。范围(“A1:H200”) 那么我需要: Sheets("C").Range("A1:H200")= Range 1 * Range 2 也就是说,我需要表C的每个单元格都是表A和B中相同单元格的乘法。也许最快的方法是使用Sub操作C中的单元格公式 试试这个,你会明白的 Option Explicit Sub FillFormula

我在Excel中有两个大小相同的区域,我想使用vba将它们在另一个区域中相乘。例如: 范围1:
图纸(“A”)。范围(“A1:H200”)
范围2:
图纸(“B”)。范围(“A1:H200”)
那么我需要:

Sheets("C").Range("A1:H200")= Range 1 * Range 2

也就是说,我需要表C的每个单元格都是表A和B中相同单元格的乘法。

也许最快的方法是使用Sub操作
C
中的单元格公式

试试这个,你会明白的

Option Explicit

Sub FillFormula()
    Worksheets("C").Range("A1:H200").FormulaR1C1 = "=A!RC*B!RC"
End Sub

也许最快的方法是使用Sub来操作
C
中的单元格公式

试试这个,你会明白的

Option Explicit

Sub FillFormula()
    Worksheets("C").Range("A1:H200").FormulaR1C1 = "=A!RC*B!RC"
End Sub

这几乎可以立即实现:

Sheets("C").Range("A1:H200") = [INDEX(A!A1:H200*B!A1:H200,0)]

这几乎可以立即实现:

Sheets("C").Range("A1:H200") = [INDEX(A!A1:H200*B!A1:H200,0)]

evaluate
可能是最快的,但我不知道XD数组应该是紧随其后的一秒?看看R1C1编写公式的方法——简而言之,R1C1编写的公式是相对于其所在单元格的。这将允许您选择您的范围,并为所有单元格输入“相同”的公式。您输入2个二维表格作为乘法。这可以有多种解释。你是说矩阵乘法吗?请详细说明您的预期结果。是的,这将是一个矩阵乘法,其中矩阵是范围。
evaluate
可能是最快的,但我不知道XD数组应该是最短的一秒?查看R1C1编写公式的方法-简言之,R1C1编写与其所在单元格相关的公式。这将允许您选择您的范围,并为所有单元格输入“相同”的公式。您输入2个二维表格作为乘法。这可以有多种解释。你是说矩阵乘法吗?请详细说明您的预期结果。是的,这将是矩阵乘法,其中矩阵是范围。如果范围由vba变量定义,我如何使用这段代码?我的意思是最后一行由vba变量定义(
range(“A1”)。End(xlDown)。row
)Sheets(“C”)。range(“A1:H”&lastrow)=Application.Evaluate(“索引”)(A!A1:H“&lastrow&“*B!A1:H”&lastrow&“0”)`我如何添加
IFERROR
?我得到一些
#值!
…我尝试了
应用程序。评估(“IFERROR(索引(A!A1:H”&lastrow&“*B!A1:H”&lastrow&“0)”)
,但它通常不起作用,当已回答问题的参数发生变化时,它应该是一篇新文章,但
Sheets(“C”).Range(“A1:H”和lastrow)=Application.Evaluate(“INDEX(IFERROR(a!A1:H)”和lastrow&“*B!A1:H”和lastrow&“,”,0)”
已经过测试,可以正常工作。如果范围是由vba变量定义的,我该如何使用这段代码?我的意思是最后一行是由vba变量定义的(
range(“A1”)。End(xlDown)。row
)Sheets(“C”)。range(“A1:H”和lastrow)=Application.Evaluate(“INDEX(a!A1:H”和lastrow&“*B!A1:H”和lastrow&“0”)`我得到了一些
#值!
…我尝试了
应用程序。评估(“IFERROR(索引(A!A1:H)和lastrow&“*B!A1:H”和lastrow&“,”0)”)
,但通常当已经回答的问题的参数更改时,它不起作用,它应该是一个新的帖子,但
Sheets(“C”)。范围(“A1:H”和lastrow)=Application.Evaluate(“索引(IFERROR(A!A1:H“&lastrow&“*B!A1:H”&lastrow&“,”),0)”)
已测试并将正常工作。