2015-09-12 5 views
-1

У меня есть таблица превосходных значений: A1 = "YES", B1 = "YES" и C1 = "YES". Я хочу знать, сколько «ДА» в моей таблице, которая легко решается с =COUNTIF(A1:C1,"YES") и он точно даст мне ответ 3.Непрерывный диапазон в функции excel

A B C 
1 YES YES YES 

Но если хотите знать, сколько «YES» в A1 и C1 и игнорировать все, что B1 становится сложным. Эта же функция дает мне 3, в то время как я хочу, чтобы он дал мне 2 в качестве ответа, так как я хочу считать только A1 и C1.

Я хочу знать, есть ли способ управлять данными, поэтому я могу работать только с такими непоследовательными ячейками? Я обнаружил, что решение будет использовать что-то вроде =if(A1="YES",1)+if(C1="YES",1), и оно работает как шарм, поскольку оно всегда даст мне правильный ответ; однако это не удовлетворительное решение, потому что, несмотря на простоту в моем примере, моя реальная ситуация требует, чтобы около 100 ячеек из диапазона 500 использовались для нескольких комбинаций, которые могут стать несколько тяжелыми.

Я пробовал использовать диапазоны имен, но кажется, что функции if не позволяют мне использовать их так, как я хочу. Так что любая помощь будет оценена, спасибо.

+0

Да, функции, такие как COUNTIF, имеют ограничения, как и все, если в столбце указано, почему не 'COUNTIF' в нижней части каждого столбца, который вы хотите включить а затем суммировать суммы? – hammus

+0

'CountIf' появляется [не поддерживает диапазоны без последовательных значений] (http://superuser.com/a/447560/52365). – GSerg

+0

Есть ли шаблон для столбца? 'MOD (COLUMN(), x)' где x обозначает, что может использоваться шатёр. Требуется больше информации, чем «около 100 ячеек из диапазона 500». – Jeeped

ответ

0

Если VBA является опцией, и вопрос «не последовательные диапазоны в функциях excel», то вы можете создать User Defined Function, который принимает ParamArray и возвращает массив из всех заданных параметров.

Пример

Public Function getMatrix(ParamArray aValues() As Variant) As Variant 
Dim i As Long 
Dim aReturnValues() As Variant 
For Each vValue In aValues 
    For Each vSingleValue In vValue ' possible the vValue is also an array 
    ReDim Preserve aReturnValues(i) 
    aReturnValues(i) = vSingleValue 
    i = i + 1 
    Next 
Next 
getMatrix = aReturnValues 
End Function 

Это может затем использоваться как:

enter image description here

Формула в A4:

=SUMPRODUCT(--(getMatrix(A1,C1,E1:G1,D2:E3)="Yes")) 

Отметим, что UDF возвращает массив, а не Range. Вот почему мы не можем использовать COUNTIF. В качестве первого параметра COUNTIF нуждается в Range.

0

Зачем искать формулу, если у вас есть другие функции в Excel? Добавьте строку (# 2) и укажите A2 = 1, B2 = 0, C2 = 1 до последнего столбца [Перетащите его, чтобы заполнить, убедитесь, что вы копируете ячейки]. Затем выберите строку и см. Строку «Сумма в строке состояния».

0

Посмотрите на this нить. В основном то, что вам нужно, это что-то вроде этого:

=SUM(COUNTIF(INDIRECT({"A1:A10","C1:c10"}),"a")) 

Или просто использовать несколько COUNTIFS, и добавить их. (Countif (...) + countif (...) и т. Д.)

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