Excel VBA中的公式问题

我遇到了一些问题,试图用相对值填充值不是特定的。

这是工作原理,但是我需要能够做一个相对单元格匹配。 我曾尝试将Formula1改为FormulaR1C1,并尝试使用R2C3而不是B3,但这不起作用。

我的想法是,如果我使用FormulaR1C1,则可以使用R [1] ….来指定我需要匹配的单元格。

x是我已经find的一行。 现在是第2行,这就是x = 2。 categoryColumn和CategoryStart是工作表中定义的命名范围。 这个公式存在填充一个依赖的下拉列表,正如所说,它的工作原理,但不工作,我需要它的工作。

With Cells(x + 1, 3).Validation .Delete .Add Type:=xlValidateList, AlertStyle:=xlValidAlertStop, Operator:= _ xlBetween, Formula1:= _ "=OFFSET(CategoryStart,MATCH(B3,CategoryColumn,0),1,COUNTIF(CategoryColumn,B3),1)" .InCellDropdown = True End With 

你可能不得不玩这个,但我认为这应该工作。 这个想法是使公式stringdynamic变化,以便它随着行的变化而改变,正确吗? 另一种可能的方法是将连接后的预期公式保存到一个string中并以此方式插入。

 With Cells(x + 1, 3).Validation .Delete .Add Type:=xlValidateList, AlertStyle:=xlValidAlertStop, Operator:= _ xlBetween, Formula1:= _ "=OFFSET(CategoryStart,MATCH(B" & (x + 1) & ",CategoryColumn,0),1,COUNTIF(CategoryColumn,B" & x+1 & "),1)" .InCellDropdown = True End With 

我build议如下:设置stringFormula1R1C1为行和列方面的公式例如

 FormulaR1C1="=SUM(R1C1:R4C4)" 

(只是一个例子)

然后做

 Formula1:=Application.Evaluate(Application.ConvertFormula(FormulaR1C1, xlR1C1, xlA1)) 

通过这种方式,可以用相对引用的方式编写公式,然后将其转换为绝对引用,以便在代码中使用(可以使用绝对引用)