2016-01-30 7 views
1

У меня есть таблица, как этот
Проверьте первенствует столбцов значения, если они равны друг другу

Продукт               Цена           Валюта
________       _____       ________
Продукт 1                     USD
Продукт 2                     EUR
Продукт 3                     USD
Продукт 4                     CNY
Продукт 5                     EUR
                                    _____
                        = субтотальное (109)

I U se фильтр в колонке «Валюта» и промежуточную (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() если более чем одна валюта была выбрана.

Нам необходимо обнаружить более одной валюты.

Сначала введите следующую U 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 

Затем в клетке В8, заменить:

=SUBTOTAL(109,B2:B6) 

с:

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

Отлично! Это работает, но я искал что-то макро-бесплатное, что-то вроде этого: = SUBTOTAL (IF (COUNTUNIQUE (C2: C6)> 1), «несколько валют», 109, B2: B6), тогда как COUNTUNIQUE - это какое-то релевантное преимущество формула (не UDF, поэтому нет необходимости в VBA), но не может найти эту формулу. Я буду использовать это, если я не найду никакого решения без макросов. Большое вам спасибо, это полезно. – Farrukh

+0

@Farrukh Я расскажу об этом позже ссылкой на ** формулу **. –

+0

Большое вам спасибо. Я ценю ваши усилия. – Farrukh

 Смежные вопросы

  • Нет связанных вопросов^_^