我正在尝试进行条件格式化,以便如果值与其左边的单元格中的值不同,单元格颜色将会改变(每列是一个月,每行是特定对象的费用.我想监视几个月内价格变化很容易.)
我可以按单元格格式化并拖动它,但我希望将一个通用公式应用于整个工作表.
谢谢!
在Excel中的工作表函数中,如何自引用您所在的单元格,列或行?
请注意,这对条件格式非常有用.
编辑:标题已更改为清晰.
快速摘要:我想知道工作簿范围,工作表依赖命名公式(我将在下面描述)的行为是否是Excel中的文档功能.如果是这样,请指出我某处某些文件的方向 - 我似乎无法在网上找到任何关于此的信息(也许我使用的是错误的搜索条件......?)并且不想使用实际的东西一个bug,可能会在以后的版本中消失!
严格来说,这不是一个关于VBA的问题; 但是,命名公式是我和其他人一直在VBA代码中使用的东西,所以它仍然适用于我认为的主题.
编辑:请注意下面的VBA代码可能不完全正确 - 我还没有测试过.
对于工程/科学计算,我经常需要在同一工作簿中多次使用相同的命名公式/范围,但是在不同的工作表上.作为一个简化的例子,我可能会为圆形区域实现类似的东西:
Dim sht as Worksheet
For Each sht In ThisWorkbook
Call sht.Names.Add(Name:="AreaCircle",RefersTo:="=PI()*'" & _
sht.Name & "'!Radius^2")
Next sht
Run Code Online (Sandbox Code Playgroud)
这导致以下一组命名范围/公式(作用于每个工作表):
=PI()*Sheet1!Radius^2 <--- scoped to Sheet1
=PI()*Sheet2!Radius^2 <--- scoped to Sheet2
etc. etc.
Run Code Online (Sandbox Code Playgroud)
当然这很好用,但它具有难以进行未来变化的主要缺点.因此,例如,如果公式发生变化(圆形区域当然不会改变!例如,AASHTO LRFD公路设计代码中的公式,几乎每个版本都会改变!),我必须编辑每个实例每个名称公式.即使我写了一个VBA程序来为我做这件事,这也很乏味.
我前几天在Excel 2013中发现了以下事故,并且无法在网上任何地方找到任何相关信息.这使我开始使用它犹豫不决.
假设我运行以下单行代码:
Call ThisWorkbook.Names.Add(Name:="AreaCircle",RefersTo:="=PI()*!Radius^2")
Run Code Online (Sandbox Code Playgroud)
这导致以下SINGLE命名范围/公式(作用于工作簿):
=PI()*!Radius^2<---公式的范围是工作簿; 请注意!Radius,不是Radius.
请注意,这与以下内容不同(没有感叹号):
=PI()*Radius^2<---请注意,这里Radius的范围是工作簿.
现在,AreaCircle将产生与上面第一种方法完全相同的行为:它将根据本地工作表定义的Radius值生成结果.因此,如果有两个命名范围Radius(一个用于Sheet1和一个用于Sheet2),AreaCircle将根据Radius其使用的工作表中的值进行计算.而且每次添加新工作表时,我都不再需要添加新版本(以及其他所有!)公式的额外好处(这是巨大的!).
这是难以描述的行为; …