检查excel列的值,如果他们是相等的

我有这样的桌子

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

我在货币列中使用filter,在价格列中使用小计(109)公式来合计价格。 因此,如果从filter中select美元,则会以美元价格过滤所有产品并将它们相加。 但是,如果货币没有被过滤,小计(109)总结价格,这是错误的(1美元+ 1欧元不是2)。

只有当货币列中的值相等时,我才会激发小计(109)公式。 就像在过滤的行中计数不是唯一的值,如果这等于1个激发小计(109)。

注意:我知道如何通过在单独的单元格中放置货币的下拉列表来实现SUMIF。 但是我想用filter来完成这个任务。

假设我们有一个autofiltered表,如下所示:

在这里输入图像说明

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

我们需要检测多个货币。

首先在标准模块中input以下用户自定义function:

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中 ,replace:

 =SUBTOTAL(109,B2:B6) 

有:

 =IF(countvisibleunique(C2:C6)>1,"multiple currencies",SUBTOTAL(109,B2:B6))