【发布时间】:2020-03-31 13:24:51
【问题描述】:
我继承了一个非常大的电子表格,并正在尝试将其迁移到数据库中。该表有 300 多列,其中许多列引用了其他列。
通过将其转换为Excel中的表格(ListObject),我认为解构逻辑会更容易......基本上是转公式:
=CJ6-CY6
进入
=[@[Sale Price]]-[@[Standard Cost]]
将其转换为表格效果很好……不幸的是,它并没有改变任何嵌入的公式。他们仍然引用范围。
我想我可能从概念上理解为什么 - 如果一个公式引用另一行中的一个值,那么它就不再是一个原始计算。但是对于都在同一行的公式,我想知道是否有任何方法可以转换它们,而无需手动进入这 300 多列中的每一列并重新编写它们。其中一些是野兽。不开玩笑,这是一个例子:
=IF(IF(IF(HD6="",0,IF(HD6=24,0,IF(HD6="U",((FI6-(ES6*12))*$I6),($ I6*FI6)*HS6)))GO6,GO6,IF(IF(HD6="",0,IF(HD6=24,0,IF(HD6="U",(( FI6-(ES6*12))*$I6),($I6*FI6)*HS6)))
这还不是最糟糕的。
如果有人有想法,我会欢迎他们。我对任何事情都持开放态度。包括 VBA。
【问题讨论】:
-
我自己也为此苦苦挣扎,但没有找到解决方案。保持引用结构化的提示:您可以使用 OFFSET 公式与表外值的命名范围配对来引用当前行上方/下方的值。
-
^ 但是 OFFSET 是不稳定的,因此对于非常大的电子表格可能不是一个好的建议。
-
在一个表中你只需要改变一行。你不能做一个查找和替换吗?
-
@SJR -- 是的,但它会是 300 多个查找和替换操作,一次一个。我正在尝试暴力破解 VBA,但我希望某处有一个优雅的解决方案
-
我希望主人能把它做成一张桌子开始......但是虽然我很希望,但我也真的想要一匹小马
标签: excel excel-formula listobject