检查excel列值是不是相等
Posted
技术标签:
【中文标题】检查excel列值是不是相等【英文标题】:Check excel column values if they are equal to each other检查excel列值是否相等 【发布时间】:2016-01-30 09:39:38 【问题描述】:我有一张这样的桌子
产品 价格 货币 ________ _____ ________ 产品 1 10 美元 产品 2 11 欧元 产品 3 12 美元 产品 4 13 人民币 产品 5 14 欧元 _____ =小计(109)
我在货币列中使用过滤器,在价格列中使用小计(109)公式来汇总价格。因此,如果从过滤器中选择了美元,它将过滤所有具有美元价格的产品并将它们相加。但是如果没有过滤货币 subtotal(109) 总和价格,这是错误的(1 美元 + 1 欧元不是 2)。
仅当货币列中的值彼此相等时,我才想触发 subtotal(109) 公式。例如,在过滤的行中计算 NOT 唯一值,如果等于 1,则触发小计 (109)。
注意:我知道如何使用 SUMIF 进行操作,方法是在单独的单元格中放置一个包含货币的下拉列表。但我想使用过滤器来完成这项任务。
【问题讨论】:
这里有一些通过公式计算过滤列表中唯一值的想法blog.contextures.com/archives/2010/10/04/… 【参考方案1】:假设我们有一个自动过滤表,例如:
但如果选择了多个货币,我们需要警告而不是 SUBTOTAL()。
我们需要检测不止一种货币。
首先在标准模块中输入以下User D定义的F函数:
Option Explicit
Public Function CountVisibleUnique(rng As Range) As Long
Dim c As Collection, r As Range
Set c = New Collection
On Error Resume Next
For Each r In rng
If r.EntireRow.Hidden = False Then
c.Add r.Text, CStr(r.Text)
End If
Next r
On Error GoTo 0
CountVisibleUnique = c.Count
End Function
然后在单元格B8中,替换:
=SUBTOTAL(109,B2:B6)
与:
=IF(countvisibleunique(C2:C6)>1,"multiple currencies",SUBTOTAL(109,B2:B6))
【讨论】:
太棒了!这可行,但我正在寻找无宏的东西,如下所示:=SUBTOTAL(IF(COUNTUNIQUE(C2:C6)>1),"multiple currency",109,B2:B6),而 COUNTUNIQUE 是一些相关的 excel公式(不是UDF,所以不需要VBA),但找不到那个公式。如果我找不到任何无宏解决方案,我将使用它。非常感谢,这很有帮助。 @Farrukh 我稍后会参考 formula 解决方案来更新它。 非常感谢。感谢您的努力。以上是关于检查excel列值是不是相等的主要内容,如果未能解决你的问题,请参考以下文章