Vba 基于变量和偏移函数将公式插入数组
我试图让我的代码根据数据集中有多少数据点将公式插入数组。下面的代码几乎可以工作,但在X的第一次迭代完成后,它不会将公式插入到列中的所有行中Vba 基于变量和偏移函数将公式插入数组,vba,excel,Vba,Excel,我试图让我的代码根据数据集中有多少数据点将公式插入数组。下面的代码几乎可以工作,但在X的第一次迭代完成后,它不会将公式插入到列中的所有行中 Worksheets(" Branded").Range("C3").Formula = "=COUNTIFS(" & r.Address(ReferenceStyle:=xlR1C1) & ",RC2, " & r2.Address(ReferenceStyle:=xlR1C1) & ",R2C)" For Y = 1 T
Worksheets(" Branded").Range("C3").Formula = "=COUNTIFS(" & r.Address(ReferenceStyle:=xlR1C1) & ",RC2, " & r2.Address(ReferenceStyle:=xlR1C1) & ",R2C)"
For Y = 1 To Column_Limit1 - 1
Range("C3").Offset(0, Y).Formula = "=COUNTIFS(" & r.Address(ReferenceStyle:=xlR1C1) & ",RC2, " & r2.Address(ReferenceStyle:=xlR1C1) & ",R2C)"
For X = 1 To Row_Limit1 - 1
Range("C3").Offset(X, 0).Formula = "=COUNTIFS(" & r.Address(ReferenceStyle:=xlR1C1) & ",RC2, " & r2.Address(ReferenceStyle:=xlR1C1) & ",R2C)"
Next X
Next Y
更改为:
With Worksheets(" Branded")
.Range(.Cells(3, 3), .Cells(Row_Limit1 + 2, Column_Limit1 + 2)).FormulaR1C1 = "=COUNTIFS(" & r.Address(ReferenceStyle:=xlR1C1) & ",RC2, " & r2.Address(ReferenceStyle:=xlR1C1) & ",R2C)"
.Range(.Cells(Row_Limit1 + 3, 3), .Cells(Row_Limit1 + 3, Column_Limit1 + 2)).FormulaR1C1 = "=SUM(R3C:R[-1]C)"
End With
使用R1C1时,不需要循环。更改为:
With Worksheets(" Branded")
.Range(.Cells(3, 3), .Cells(Row_Limit1 + 2, Column_Limit1 + 2)).FormulaR1C1 = "=COUNTIFS(" & r.Address(ReferenceStyle:=xlR1C1) & ",RC2, " & r2.Address(ReferenceStyle:=xlR1C1) & ",R2C)"
.Range(.Cells(Row_Limit1 + 3, 3), .Cells(Row_Limit1 + 3, Column_Limit1 + 2)).FormulaR1C1 = "=SUM(R3C:R[-1]C)"
End With
使用R1C1时不需要循环。使用R1C1样式通常不需要循环。假设您希望在
A2
中使用公式=A1+1
和A3
=A1+1
中使用R1C1公式=R[-1]C+1
,但该公式不变,因此您可以直接输入[A2:A10]。公式R1C1=“=R[-1]C+1
。看看你的公式,它不会改变,你可以直接使用整个范围来输入它。(这也很快,每次循环都只覆盖第一行和第一列。大概是Range(“C3”).Offset(X,0)。公式=
应该更像Range(“C3”).Offset(X,Y).Formula=
。使用R1C1样式通常不需要循环。假设您希望在A2
中使用公式=A1+1
和A3
=A1+1
中使用R1C1公式=R[-1]C+1
,但该公式不会更改,因此您可以直接输入[A2:A10]。FormulaR1C1=“=R[-1]C+1”
。查看没有更改的公式,您可以直接使用整个范围来输入它。(这也很快,每次循环都只覆盖第一行和第一列。大概是range(“C3”).Offset(X,0)。公式=
应该更像range(“C3”).Offset(X,Y).Formula=
。我刚试过,但是代码给了我一个语法错误。你知道是什么原因吗?我错过了一个结束语()
和以
结尾。请参阅edit@Tonypt,它修复了语法错误。但它不会填充整个数组。数组应为5列14行。这将填充2列11行。啊!我假设您正在将列号传递给循环,您正在传递计数。请参阅edit@TonyP@TonyP我通常告诉警察继续问另一个问题,但请参见编辑。我刚试过,但代码给了我一个语法错误。您认为是什么原因造成的吗?我错过了一个接近的)
,而以
结束,请参见edit@tonypt修复了语法错误。但它并没有填充整个数组。数组应为5列14行。这将填充2列11行。啊!我假设您正在将列号传递给循环,您正在传递计数。参见编辑@TonyP@TonyP我通常会告诉对方再问一个问题,但请参见编辑。