【发布时间】:2013-10-04 04:37:42
【问题描述】:
在工作中调试或检查 Excel 报告时,我发现问题是由于文本在公式中被硬编码。我听说这是一个常量和公式混合单元格。
以下是我所看到的示例。
常量 =100
常量 =Facility
公式单元格=INDIRECT(ADDRESS(5,MATCH($A7&$B7&C$2,Data!$4:$4,0),,,$A$2))
混合单元格=INDIRECT("Data!"&ADDRESS(5,MATCH($A7&$B7&C$2,Data!$4:$4,0)))
"Data!" 是混合单元格中的常量,在本例中为工作表名称。如果该工作表名称发生更改,则公式将中断。我发现并正在使用两种条件格式来突出显示常量单元格和使用 "Identify formulas using Conditional Formatting" 的公式单元格。我需要想出一种方法来格式化那些在公式中包含这些常量的单元格。
我有 found this question 并尝试使用 =IF(COUNT(SEARCH(CHAR(34),A1,1)),TRUE,FALSE) 和 FIND() 来查看是否可以检查单元格中是否包含双引号,但 SEARCH() 会返回 FALSE,因为它正在查看单元格价值而不是它的内容。如果单元格包含"Constant",则返回TRUE,但如果是公式,则返回FALSE,例如单元格包含="Constant"。
如何在整个工作表或工作簿的公式中找到常量?
编辑*
感谢下面 Sidd 的代码,我在一个模块中创建了一个函数,我可以在条件格式中使用它来至少突出显示单元格内包含引号的单元格。
Function FormulaHasQuotes(aCell)
If InStr(1, aCell.Formula, """") Then
FormulaHasQuotes = True
Else
FormulaHasQuotes = False
End If
End Function
【问题讨论】:
-
其复杂且并非万无一失,您需要解析公式。我的插件
Mappit!使用正则表达式来识别公式中的常量,但在上面的情况下,它会选择5而不是Data!,这实际上是一个位置而不是一个常量。 -
非常令人印象深刻的插件谢谢。
标签: excel excel-2007 excel-formula vba