大家好,我在 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") 设置一行,并根据电子表格中实际所在的列让公式自行更改?
编辑:
删除 $ 语法解决了这个问题,但我想出了另一个问题:
假设我将范围设置为一个变量,并且我想向该范围变量添加一行并在上面的公式行中使用该变量。我将如何将该变量增加 1。
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"
...
我在公式行中遇到错误,所以我认为我设置 shownDatabaseRows 变量的方式有问题。有任何想法吗?