Excel VBA将单元格值设置为公式

嗨每个人我都有一些在Excel VBA的硬代码,将设置一个给定的单元格值=一个公式,我有多行代码,这是为每个单元格值,但更改公式,以查看其特定列下。

所以我的问题是,是否有任何方法来编写1行以下的东西,以便该公式将自动更改它所看到的列取决于实际在其中的列。

Sheets("Standalone Non Clustered").Range("G10").Formula = "=CEILING(Worksheet!$G$9*(1+Worksheet!$G$10+Info!$B$14),5)" Sheets("Standalone Non Clustered").Range("H10").Formula = "=CEILING(Worksheet!$H$9*(1+Worksheet!$H$10+Info!$B$14),5)" Sheets("Standalone Non Clustered").Range("I10").Formula = "=CEILING(Worksheet!$I$9*(1+Worksheet!$I$10+Info!$B$14),5)" Sheets("Standalone Non Clustered").Range("J10").Formula = "=CEILING(Worksheet!$J$9*(1+Worksheet!$J$10+Info!$B$14),5)" Sheets("Standalone Non Clustered").Range("K10").Formula = "=CEILING(Worksheet!$K$9*(1+Worksheet!$K$10+Info!$B$14),5)" Sheets("Standalone Non Clustered").Range("L10").Formula = "=CEILING(Worksheet!$L$9*(1+Worksheet!$L$10+Info!$B$14),5)" Sheets("Standalone Non Clustered").Range("M10").Formula = "=CEILING(Worksheet!$M$9*(1+Worksheet!$M$10+Info!$B$14),5)" Sheets("Standalone Non Clustered").Range("N10").Formula = "=CEILING(Worksheet!$N$9*(1+Worksheet!$N$10+Info!$B$14),5)" Sheets("Standalone Non Clustered").Range("O10").Formula = "=CEILING(Worksheet!$O$9*(1+Worksheet!$O$10+Info!$B$14),5)" Sheets("Standalone Non Clustered").Range("P10").Formula = "=CEILING(Worksheet!$P$9*(1+Worksheet!$P$10+Info!$B$14),5)" 

看看每个范围是如何从G到P的字母表,每行的公式都是针对G到P列进行调整的。 是否有一种方法可以为Range(“G10:P10”)添加一行,并根据其实际在电子表格中的列进行公式更改?

编辑:

删除$语法解决了这个问题,但是我想出现另一个问题:

说我有范围设置为一个variables,我想添加一行到该范围variables,并在上面的公式行中使用该variables。 我将如何去增加1的variables。

  Set shownDatabaseRows = Sheets("Standalone Non Clustered").Range("10:10") Set hiddenDatabaseRows = Sheets("Standalone Non Clustered").Range("11:108") hiddenDatabaseRows.EntireRow.Hidden = True shownDatabaseRows.EntireRow.Hidden = False Sheets("Standalone Non Clustered").shownDatabaseRows.Formula = "=CEILING(Worksheet!G$9*(1+Worksheet!G$10+Info!$B$14),5)" For Each cell In rng If cell.Value >= 2048 Then shownDatabaseRows = shownDatabaseRows.Count + 1 shownDatabaseRows.EntireRow.Hidden = False Sheets("Standalone Non Clustered").shownDatabaseRows.Formula = "=(CEILING(Worksheet!G$9*(1+Worksheet!G$10+Info!$B$14),5))/2" ... 

我在公式行得到一个错误,所以即时通讯认为我设置shownDatabaseRowsvariables的方式是错误的。 有任何想法吗?

Sheets("Standalone Non Clustered").Range("G10:P10").Formula = "=CEILING(Worksheet!R9C[0]*(1+Worksheet!R10C[0]+Info!$B$14),5)"

你可以随时设定一个范围的公式,例如G10:P10

 Sheets("Standalone Non Clustered").Range("G10:P10").Formula = "=CEILING(Worksheet!G9*(1+Worksheet!G10+Info!$B$14),5)" 

只需从应该dynamic更改的单元格引用中删除$

您也可以按照Set公式设置一系列单元格来进一步说明。

就像是….

 Sheets("Standalone Non Clustered").Range("G10").Formula = "=CEILING(Worksheet!$G$9*(1+Worksheet!$G$10+Info!$B$14),5)" Sheets("Standalone Non Clustered").Range("G10:P10").FillRight