我有一张这样的桌子
产品价格货币
________ _____ ________
产品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。但我想使用过滤器来完成这项任务。
答案 0 :(得分:1)
假设我们有一个自动过滤的表格,如:
但如果选择了多种货币,我们需要警告而不是 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))