2016-01-30 55 views
1

我有这样
检查Excel列的值,如果它们彼此相等

产品             价格         货币
________       _____      表________
产品1                     USD
产品2                     EUR
产品3                     USD
产品4                     CNY
产品5                     EUR
                                    _____
                        =小计(109)

I U在“货币”列中过滤,在价格栏中输入小计(109)公式以汇总价格。因此,如果从过滤器中选择美元,则会以美元价格过滤所有产品并将它们相加。但是,如果货币不被过滤,小计(109)总结价格,这是错误的(1美元+ 1欧元不是2)。

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

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

+0

根据公式计算过滤列表中的唯一值有一些想法http://blog.contextures.com/archives/2010/10/04/count-unique-items-in-excel-filtered-list/ –

回答

1

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

enter image description here

但我们希望有一个警告而不是SUBTOTAL()如果超过一个货币已被选中。

我们需要检测多种货币。

首先输入以下û SER d标准模块中efined ˚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)) 
+0

太棒了!这是有效的,但我正在寻找一些宏观的东西,像这样:= SUBTOTAL(IF(COUNTUNIQUE(C2:C6)> 1),“Multiple currency”,109,B2:B6),而COUNTUNIQUE是一些相关的excel公式(不是UDF,所以不需要VBA),但无法找到该公式。如果我没有找到任何宏观解决方案,我会使用它。非常感谢,这很有帮助。 – Farrukh

+0

@ Farrukh我稍后会参考** formula **解决方案进行更新。 –

+0

非常感谢。我感谢你的努力。 – Farrukh

相关问题