Loading [MathJax]/jax/output/CommonHTML/config.js
首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
社区首页 >问答首页 >Excel条件格式公式和范围(VBA)

Excel条件格式公式和范围(VBA)
EN

Stack Overflow用户
提问于 2018-11-10 21:11:50
回答 2查看 564关注 0票数 0

我有一个FormatCondition。我正在读.Formula1.AppliesTo

我想知道公式是否包含一个单元格引用,它将在AppliesTo指定的范围内改变,例如在range C3:D10中的=NOT(ISNUMBER(C3))

据我所知,这种引用可能是相对的(如C3)或混合(如$C3C$3),但不是绝对的。它也将是基于https://www.ablebits.com/office-addins-blog/2014/08/07/relative-absolute-cell-references-excel-conditional-formatting/和其他一些站点的“应用范围内最左上角的单元格”。

如果范围类似于C3:D10,那就很容易了。使用例如myRange.Cells(1, 1)查找左上角,将其转换为使用.Address或类似的字符串,然后在公式中查找该字符串,以及添加$的相关变体。当然,我必须小心处理字符串之类的事情(例如左上角的单元格是C3' and formula is=“CC3NE”),但这是可能的(尽管如此,我还是欢迎关于如何更好地做到这一点的建议,但这不是问题)。

真正的问题是范围是否更复杂,就像条件格式中经常发生的那样。$CQ$39:$FT$39,$BE$39,$BE$8:$BE$9,$CU$8:$FT$9,$CU$12:$FT$14,$BE$12:$BE$14,$BE$16:$BE$30,$CQ$16:$FT$30,$CQ$32:$FT$36,$BE$32:$BE$36就是一个例子。.Cells(1, 1)没有给出正确的答案(根据BE8的公式)。

此外,如果范围是类似$A$5,$E$1 -没有‘左上角’。那么excel (或用户)是如何决定公式中哪一个的呢?

因此,主要的问题是:用于确定在公式中使用哪个单元格的Excel系统是什么,因为我不认为它是“左上角”--可能是“找到最顶层的行,然后在那里找到最左边的单元格”,或者可能是相反的,或者是完全不同的。

第二个问题是:,我怎样才能最好地找到来自给定范围的单元格?

一个额外的问题(如果这里没有答案的话,我很高兴)是:是否有一个很好的方法,然后在一个公式中找到该单元格的引用,包括单元格的相对版本和混合版本?

请注意,这些奇怪的范围来自在带有条件格式的工作表上剪切和粘贴的行和列,结果Excel分割条件格式(更改范围和更改公式,都不需要用户输入)。因此,最重要的是处理Excel在这种情况下自行设置的公式,而不一定是用户可能做的事情--但是处理两者都会更好。

EN

回答 2

Stack Overflow用户

回答已采纳

发布于 2018-11-11 19:40:21

First回答:短版本: Excel确实使用了最左上角的单元格,但它确实使用了,即使单元格不是范围的一部分。

我创建了一个空白表,选择了A5,E1,并将条件格式设置为非空白( Excel使用公式)。Excel创建了以下内容:

范围:$E$1,$A$5

公式:=LEN(TRIM(A1))>0

因此,即使A1不是范围的一部分,这也是公式中所使用的。

我通过在纸上复制它来检查这个,并且保持了一致性。

因此, Excel找到范围中最左边的列和范围中的最顶层行,并将它们组合起来生成应该被认为是范围的“左上角”的单元格,即使结果单元格实际上不是范围的一部分。

这也给出了第二个问题的答案:在范围中找到最上面的行;找到最左边的列;然后使用一个将两者结合在一起的单元格来与公式进行比较。您可以通过遍历范围字符串,或者通过范围本身逐个单元格来实现这一点;也许有更好的方法(建议欢迎)。

这并不好看,但如果我能找到一种好的方法来做这两件事的话,它会奏效的。

我仍然欢迎:

  • 任何能够改进这个公式中使用哪一个单元格的人(我没有对此进行广泛的测试)。
  • 任何能建议找到上面的“左上角单元格”的好方法的人
  • 任何能建议搜索公式字符串的好方法的人都可以找到左上角单元格。

编辑-这是Usmanhaq的优秀方法的另一种代码方法--它以字符串的形式贯穿范围:

代码语言:javascript
运行
AI代码解释
复制
Private Function FindTopLeft(rangeStr As String, rowabs As Boolean, colabs As Boolean) As String
    newRange = Replace(rangeStr, ":", ",")
    newRangeArray = Split(newRange, ",")
    Dim lowestRow As Long
    Dim lowestCol As Long
    lowestRow = 2147483647
    lowestCol = 2147483647

    For Each cell In newRangeArray
        cell = Trim(cell)
        If cell <> "" Then
            cCol = range(relativeCell).Column
            cRow = range(relativeCell).Row
            If cCol < lowestCol Then lowestCol = cCol
            If cRow < lowestRow Then lowestRow = cRow
        End If
    Next

    FindTopLeft = Cells(lowestRow, lowestCol).Address(rowabs, colabs)

End Function
票数 1
EN

Stack Overflow用户

发布于 2018-11-11 23:55:58

谢谢你更新你的问题,并在下面找到我的评论

用于确定在公式中使用哪个单元格的系统是什么,因为我不认为它是“左上角”--它可能是“找到最上面的行,然后在那里找到最左边的单元格”,或者可能是相反的,或者是完全不同的。

通常Excel中的范围类似于长度和宽度固定的框或矩形,例如B3:C8。在这种简单的框类型范围内,最左上角的大多数单元格是所有条件格式公式的基。换句话说,在开始计算公式时,该单元格的值将与应用于条件格式中的公式进行检查。(让我们称这个细胞为母细胞)

例如

  • 如果条件格式应用于单元格A1:D10,且条件公式为B2 > 0,则意味着如果值为B2 > 0,则对单元格A1应用格式化;对于其他单元格,如果偏移量为(1,1)的单元格(即A1情况下的B2 )的值大于0,则对任何单元格应用格式设置。即,用于格式化B2值的C3将被选中。
  • 如果条件格式应用于单元格A1:D10,且条件公式是和( $B1 >= 30,$B1 <= 60),则意味着如果条件值为真,则将格式化应用于单元格A1,但现在出现了差异,因为B现在是静态的,因为$B是静态的,对于B2的条件格式,对于C1和D1,条件格式将再次是和($B1 >= 30,$B1 <= 60),而对于A2、B2、C2和D2则是这样,但对于A2、B2、C2和D2则是和(B2 30,#D1 20# 60)。

在第一种情况下,根据公式检查的第一个单元是A1,即使在第二种情况下,根据条件公式检查的单元是A1 (我们称之为母细胞)。

如果这个区域不像一个框,它是一个由逗号分隔的混合区域,即使在这种情况下,如果我们在该范围周围设置一个框,母单元格是左上角的单元格,它不是区域的第一个单元格,而是框的第一个单元格。

关于您的第二个问题,我如何才能从给定的范围内找到这个单元格呢?

如果您想在一个类似简单范围的框中找到母单元格,那么它就是单元格(1,1)。

如果您想要找到混合范围内的单元格,可能存在一些函数,但我不知道;我可以通过使用下面这样的循环来找到它

代码语言:javascript
运行
AI代码解释
复制
Sub find_topleft()

 Dim r, full_range As Range

 Set r = Range("$O$8:$O$17,$Q$4:$Q$13,$S$4:$S$6")

 Set full_range = Sheets("Sheet1").UsedRange

 row_num = full_range.Rows.Count + full_range.Row - 1
 col_num = full_range.Columns.Count + full_range.Column - 1

 For Each c In r
    If c.Row < row_num Then
    row_num = c.Row
    End If

    If c.Column < col_num Then
    col_num = c.Column
    End If
 Next

 Debug.Print row_num
 Debug.Print col_num

End Sub

是否有一个很好的方法可以在公式中找到对该单元格的引用,包括单元格的相对版本和混合版本?

该单元格与您在回答第一个问题时所述的公式直接相关。

票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/53246020

复制
相关文章
精通Excel数组公式023:使用数组公式的条件格式
条件格式是有趣的,特别是使用公式并链接条件到单元格中时。下面是使用公式的条件格式的一些说明:
fanjy
2021/03/12
3K0
使用VBA操作Excel公式栏
在Excel公式栏中,我们可以看到当前单元格中的内容,或者当前单元格中使用的公式,如下图1所示。
fanjy
2022/06/04
1.5K0
使用VBA操作Excel公式栏
Excel公式?VBA?还是Power Query!
最近,一直有朋友问我到底学不学VBA,我一般不建议他们学,除非对编程很感兴趣,或者本身已经有一定的编程基础,否则,将耗费大量的精力,而收效甚微。
大海Power
2021/08/30
3K0
Excel公式练习91:计算条件累积和
引言:本文的练习整理自chandoo.org。多一些练习,想想自己怎么解决问题,看看别人又是怎解决的,能够快速提高Excel公式编写水平。
fanjy
2021/08/31
1.7K0
Excel公式练习91:计算条件累积和
Excel公式技巧27: 在条件格式中使用公式来突出显示单元格
条件格式与公式相配合,往往能够发挥很大的威力,其中之一就是用来突出显示单元格。如下图1所示,在“新建格式规则”对话框中:
fanjy
2020/04/14
3.4K0
Excel公式技巧27: 在条件格式中使用公式来突出显示单元格
excel 的条件格式(一)
5.点击确定,便得到了如下结果,excel 对值大于 60 的单元格进行了突出显示。
mr.songw
2021/02/03
3.6K0
excel 的条件格式(一)
excel 的条件格式(二)
使用条件格式中的数据条可以非常方便地对一定区域内的单元格的数值进行可视化。照着以下步骤执行,便可以添加数据条。
mr.songw
2021/02/04
1.4K0
excel 的条件格式(二)
excel 的条件格式(三)
在 excel 中,使用色阶可以很方便地对一定区域内单元格的值进行可视化,渐变的颜色表示单元格中值的大小。照着以下步骤,便可以添加色阶。
mr.songw
2021/02/07
2.3K0
excel 的条件格式(三)
Excel公式练习79: 多个OR条件计数
本次的练习是:在Excel中,我们经常要基于多个OR条件进行计数或求和。如下图1所示,我们想要获取左侧数据中:“项目”是“T恤衫”或“连帽衫”,“颜色”是“红色”、“蓝色”或“绿色”,“城市”是“北京”或“上海”的数量。
fanjy
2020/12/08
2.2K0
Excel公式练习79: 多个OR条件计数
疯狂的Excel公式,只为条件求和
示例数据如下图1所示。工作表中有两个表,一个是活动的全部数据,另一个列出了其中暂停活动的列表。
fanjy
2022/11/16
1.2K0
疯狂的Excel公式,只为条件求和
Excel公式技巧97:多条件查找
有时候,我们需要根据多个条件在数据表中查找值,此时,就需要使用一些公式技巧了。本文的示例使用INDEX函数/MATCH函数组合的数组公式来实现多条件查找。
fanjy
2021/07/12
1.8K0
Excel公式技巧97:多条件查找
Excel公式技巧80:多条件查找值
我们经常会碰到要查找满足多个条件的值,如下图1所示,想要查找以“凉”开头且价格高于20的商品。
fanjy
2021/01/20
1.1K0
Excel公式技巧80:多条件查找值
Excel公式技巧50: 根据条件来排序
有时候,我们想基于指定的条件对数据进行排序,如下图1所示,记录了不同区域员工的销售额。
fanjy
2020/09/04
2.7K0
Excel公式技巧50: 根据条件来排序
条件概率和乘法公式
一、条件概率 “一切概率,都是条件概率”,这话说的非常经典,所以我把他放在最前面,希望大家能看到。例如$P(x)$,实际上是$P(x|S)$,$S$表示样本空间,$x|S$就是$x$在$S$中的“比
mathor
2018/06/22
2.3K0
在Excel中创建条件格式图表
问题:希望图表中对于比率为90或以上的呈现绿色,70至90的呈现黄色,低于70的呈现红色。可以在图表中设置条件格式吗?如下图1所示。
fanjy
2023/09/15
5290
在Excel中创建条件格式图表
Excel公式技巧51: 根据条件来排序(续)
在《Excel公式技巧50:根据条件来排序》中,我们基于指定的一个条件对数据进行排序,所举示例为给不同区域的员工按销售额从大到小的顺序排序,结果如下图1所示。
fanjy
2020/09/04
2.2K0
Excel公式技巧51: 根据条件来排序(续)
Excel公式技巧:基于单列中的多个条件求和
基于列中的条件求和通常使用SUMIF函数或者SUMIFS函数,特别是涉及到多条件求和时。然而,随着条件的增多,公式将会变得很长,难以理解。而使用SUMPRODUCT函数,可以判断同一列中的多个条件且公式简洁。
fanjy
2022/11/16
5.1K0
Excel公式技巧:基于单列中的多个条件求和
Excel公式技巧105:带条件的部分匹配计数
引言:本文学习整理自myspreadsheetlab.com,很好的一个应用示例,特辑录于此,也供有兴趣的朋友参考。
fanjy
2021/09/22
5.6K0
Excel公式技巧67:按条件将数据分组标识
如下图1所示的工作表,我们想使用数字将数据分成几组,其标准是:第1次出现笔记本且在区域A至第2次出现笔记本且在区域A之间的数据为第1组,标识为1;第2次出现笔记本且在区域A至第3次出现笔记本且在区域A之间的数据为第2组,标识为2,依此类推。
fanjy
2020/12/08
3.7K0
Excel公式技巧67:按条件将数据分组标识
一行 pandas 代码搞定 Excel 条件格式!
Excel的 “条件格式” 是非常棒的功能,通过添加颜色条件可以让表格数据更加清晰的凸显出统计特性。
Python数据科学
2023/08/29
3020
一行 pandas 代码搞定 Excel 条件格式!

相似问题

Excel VBA -将条件格式公式应用于范围

31

Excel VBA条件格式删除公式

13

公式中的Excel VBA条件格式公式

35

Excel‘条件格式’公式的多个条件范围

11

Excel VBA条件格式自定义公式

13
添加站长 进交流群

领取专属 10元无门槛券

AI混元助手 在线答疑

扫码加入开发者社群
关注 腾讯云开发者公众号

洞察 腾讯核心技术

剖析业界实践案例

扫码关注腾讯云开发者公众号
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档