【发布时间】:2013-07-22 12:27:29
【问题描述】:
大家好,我在 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 变量的方式有问题。有什么想法吗?
【问题讨论】:
-
你最好开始另一个问题。
Count是只读的,不能更改。我真的不明白你想要什么。向显示的DatabaseRows 添加新行?Set shownDatabaseRows = Union(shownDatabaseRows, cell.EntireRow)?Sheets("Standalone Non Clustered").shownDatabaseRows毫无意义。 -
我开始了一个新问题:stackoverflow.com/questions/17789077/…
标签: excel vba range cell formula