我有一个包含公式的excel表,例如
=M9-C9*10-D9*10-C9*H9/100
我想将这些公式转换为使用公式中使用表列名称的结构化单元格引用,例如这个假公式:
=[Sales Amount]-[Profit]*10-[Costs]*10-[Profit]*[Risk]/100*10-[Capital]*[Gross]/100
有没有办法自动转换所有显式列名(M9)以使用结构化引用([Sales Amount])。
容易出错并手动执行。
答案 0 :(得分:0)
编辑:您可以遍历要替换的显式单元格引用。在玩这个之前一定要备份你的文件!
Sub replaceformulas2()
Dim c As Object
For Each c In Selection.Cells
With c
.Formula = Replace(.Formula, "$", "") 'delete the cell-fixation
.Formula = Replace(.Formula, "E2", "Yourtable[Sales Amount]")
.Formula = Replace(.Formula, "F2", "Yourtable[Profit]")
' ...and so on
End With
Next c
End Sub
注意:强>
A10
或BA5
之类的内容之前,您必须更换A1
或B5
等单元格,原因显而易见。对于A1:A100
等范围也是如此。Selection.Cells
您可能希望使用Table1.UsedRange.Cells
或Table1.Range("A1:B100").Cells
Debug.Print .Formula
首先了解您拥有的所有不同公式A1
- 标题的坐标A1
- 字符串,例如,将其调整为第9行,如示例所示.Value
替换任何替换字符串的出现次数答案 1 :(得分:0)
我知道这个问题是前一段时间提出的,但是我只是解决了这个问题。我想我会分享。
首先将您的数据转换为表格。 (如果需要,您可以创建多个表,但是您需要在随后的顺序中指定表名作为引用的一部分)。
在另一张纸上,我创建了一个参考表,其中包含两列,分别由旧参考和新参考组成。为了生成旧的引用,我在列中使用了一个方程式:
=SUBSTITUTE(ADDRESS(1,COLUMN(),4),"1","")
,然后将其连接到第一行的编号。
对于第二列,我使用了要创建结构化引用的表标题中的copy and paste special; values; transpose
。
然后我从这里使用了宏Sub Multi_FindReplace()
:
https://www.thespreadsheetguru.com/the-code-vault/2014/4/14/find-and-replace-all
就是这样。完成第一行。然后,我可以填写表格以完成表格。
(注意,如果您有固定的引用(即使用$
),则可能需要先删除它们,因为结构化引用中不需要它们。如果需要固定引用到表外的位置,如果您不小心将其删除,则可以使用上述过程的变体将它们放回原处。)