相关疑难解决方法(0)

Excel公式引用'CELL TO THE LEFT'

我正在尝试进行条件格式化,以便如果值与其左边的单元格中的值不同,单元格颜色将会改变(每列是一个月,每行是特定对象的费用.我想监视几个月内价格变化很容易.)

我可以按单元格格式化并拖动它,但我希望将一个通用公式应用于整个工作表.

谢谢!

excel excel-2007 excel-formula

73
推荐指数
5
解决办法
27万
查看次数

工作表函数中单元格,列和行的自引用

在Excel中的工作表函数中,如何自引用您所在的单元格,列或行?

请注意,这对条件格式非常有用.

excel worksheet-function self-reference

20
推荐指数
3
解决办法
15万
查看次数

Excel VBA:工作簿范围,工作表相关的命名公式/命名范围(结果更改取决于活动工作表)

编辑:标题已更改为清晰.

快速摘要:我想知道工作簿范围,工作表依赖命名公式(我将在下面描述)的行为是否是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其使用的工作表中的值进行计算.而且每次添加新工作表时,我都不再需要添加新版本(以及其他所有!)公式的额外好处(这是巨大的!).

这是难以描述的行为; …

excel vba excel-vba named-ranges

13
推荐指数
1
解决办法
4514
查看次数