检查excel列值是否彼此相等

时间:2016-01-30 09:39:38

标签: excel count unique countif subtotal

我有一张这样的桌子

产品价格货币
________ _____ ________
产品1 10美元
产品2 11欧元
产品3 12美元
产品4 13 CNY
产品5 14 EUR _____
=小计(109)

我在货币列中使用过滤器,在价格列中使用小计(109)公式来汇总价格。因此,如果从过滤器中选择美元,则会过滤所有具有美元价格的产品并对其进行求和。但是如果货币未被过滤小计(109)总和价格,这是错误的(1美元+ 1欧元不是2)。

我想仅在货币列中的值彼此相等时才触发小计(109)公式。比如,在过滤的行中计算NOT唯一值,如果它等于1 fire subtotal(109)。

注意:我知道如何通过将包含货币的下拉列表放在单独的单元格中来使用SUMIF。但我想使用过滤器来完成这项任务。

1 个答案:

答案 0 :(得分:1)

假设我们有一个自动过滤的表格,如:

enter image description here

但如果选择了多种货币,我们需要警告而不是 SUBTOTAL()

我们需要检测多种货币。

首先在标准模块中输入以下 U ser 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))