【发布时间】:2018-12-09 23:37:03
【问题描述】:
我有一些包含以下公式的单元格(还有很多,但我只是将其中一个作为示例,它们都遵循使用 + 或 - 等基本操作的相同模式以及某些单元格内的值)
=+$O11+$N11+$M11
我需要将每一列向左移动一列,最终得到类似
=+$N11+$M11+$L11
问题是我已经编写了检测单元格是否有公式或只有值的代码
for each cell in Selection // im using a selection for testing purposes only
if cell.hasFormula() = true then
end if
next cell
但我仍在研究如何将所有列引用向左移动一个,我编写的唯一尝试这样做的代码不起作用
auxiliary = "=offset(" + Replace(cell.formula, "=","") + ",0,1)"
cell.formula = auxiliary
更新 1
有些公式只使用 1 个单元格来检查其是否设置,最多 8 个引用的单元格。数字或参考在前面提到的 2 个数字周围移动
更新 2
我发现以下名为 Precedents 的属性返回引用范围,至少如果我将其应用于公式化引用时会这样做,即在第一个示例中,precedents 将返回 $O$11:$M$11
更新 3
除了上述的公式之外,还有两种类型的公式,第一种是带有 Sum 的公式,即
=Sum($R20:$AC20)
还有 IF 即
=IF($BG20=0,1," ")
此公式中的所有单元格引用都必须向左移动 1。
【问题讨论】:
-
每个公式是否使用三个参考单元格?公式是否在同一列?
-
您在示例中向左移动了一个。
-
感谢 SJR 的提醒,已修复 :),示例是正确的,它必须向左,但我不知道为什么我写了 Right。
-
我认为您需要提供更多示例。是否所有公式都只是一个或多个以 + 或 - 号分隔的单元格地址?他们都有美元符号吗?可以有括号等吗?
-
经过反思,如果您只是移动列,那么变化可能并不重要。等我有时间再看看。