User Rating: 5 / 5     Count Values Once (Unique) or as many times they Occur, Condition in Either 1 or Both Columns

Count Values where Multiple Occurrences are (i) Counted Once (Unique values) or (ii) Counted as many times they Occur - Condition of "Yes" in Either 1 or Both Columns

Column E COUNTS column A Names, Once (Unique) or Multiple Times (as many times they Occur) where Either or Both Column B & C have "Yes".

Cell E4: Count number of Unique Names in column A (Multiple Occurrences are Counted Once), if Either or Both Column B & C have "Yes".

Cells E8:E10 and Cell E12: Count number of Names in column A including Duplicates (Multiple Occurrences are Counted as many times they Occur), if Either or Both Column B & C have "Yes".

-----------------------------------------------------------------------------------------------

Cell E4 formula Counts number of Unique Names in column A (Multiple Occurrences are Counted Once), if Either or Both Column B & C have "Yes".

"Open Image in New Tab" for a full and clear view.

Cell E4 formula:

Returns 4 for the Unique Names "John", "Stacey", "Mary" & "White".

=SUM(IF( FREQUENCY(IF(( B2:C20="Yes"), IF(A2:A20<>"", MATCH(A2:A20, A2:A20,0))), ROW(A2:A20)- ROW(A2)+1), 1))

Explanation - Cell E4 formula (Array Formula - Ctrl+ Shift+ Enter):

1) IF((B2:C20= "Yes"), IF(A2:A20<>"", MATCH(A2:A20, A2:A20, 0))): returns an array of numbers and FALSE values comprising of 2 columns and 19 rows - {1,FALSE; 2,2; FALSE,3; FALSE, FALSE; FALSE, FALSE;1,1; FALSE, FALSE; FALSE, FALSE; 8,FALSE;...} - the numbers indicate the relative position of each column A value (where either or both column B & C = "Yes") with similar values having the same position. Blank cells, or where there is no "Yes" in even one of the 2 columns (column B & C), return FALSE. Where "Yes" is present in both columns B & C, the number will appear as a pair, viz "2,2". For example, the 1st number 1 indicates the name occurs the 1st position of cell A2 and only column B = "Yes", the next number 2 indicates the name in the 2nd position of cell A3 and both column B & C = "Yes" (number 2 occurs as "2,2"), the next number 3 indicates the name in the 3rd position of cell A4 and and only column C = "Yes", then the number 1 is repeated again in the 6th position but because it already appears in the 1st position of cell A2 it apepars as 1 and both column B & C = "Yes" (number 1 occurs as "1,1"), and so on. This is the data_array argument of the FREQUENCY function.

2) ROW(A2:A20)- ROW(A2)+1: This returns an array of values 1 to 19 - {1;2; 3;4;5; 6;7;8; 9;10;…} - against which the Frequency of each data_array value in 1) above is determined. This is the bins_array argument of FREQUENCY function. Note that the FREQUENCY function enables calculating the FREQUENCY of a value ONLY ONCE (ie. if a value occurs multiple times, say thrice, then its Frequency is returned as 3 but the value is considered only once, at the position of its 1st occurrence. This enables determination of UNIQUE values.

3) FREQUENCY( IF((B2:C20= "Yes"), IF(A2:A20<>"", MATCH(A2:A20, A2:A20, 0))), ROW(A2:A20)- ROW(A2)+1): returns an array of numbers and zeros - {3;2; 1;0; 0;0; 0;1; 0;0; 0;0; 0;0;0; 0;0; 0;0;0} - the numbers indicate the frequency ie. the number of times each number in 1) above occurs (these are the frequency of row numbers / positions of non-blank column A cells where either or both column A & B = "Yes"). For example, the 1st number 3 in the 1st position indicates that the number 1 (1st position in bins_array argument) appears thrice in the data_array argument of 1) above (it appears thrice because for cell A2 the value in cell B2 = "Yes" & for cell A7 where A2 name appears again the value of both cells B7 & C7 = "Yes" and each "Yes" is counted as 1). Similarly, the number 2 in the 2nd position indicates that the number 2 (2nd position in bins_array argument) is appears twice in the data_array argument of 1) above (it appears twice because for cell A3 value both cells B3 & C3 = "Yes"), and so on. As explained, the Frequency of the bins_array argument number is returned only once at the position of its 1st occurrence.

4) IF(FREQUENCY(IF(( B2:C20="Yes"), IF(A2:A20<>"", MATCH(A2:A20, A2:A20, 0))), ROW(A2:A20)- ROW(A2)+1), 1): returns an array of 1s and FALSE values - {1;1;1; FALSE; FALSE; FALSE; FALSE; 1;FALSE; FALSE;...} - the non-blank cells in column A where either or both column B & C = "Yes" with a frequency of 1 or more return 1, only once even for multiple occurrences of the same value, and used with the SUM function returns the total number of unique values in column A.

Cells E8:E10 and Cell E12 formulas Count number of Names in column A including Duplicates (Multiple Occurrences are Counted as many times they Occur), if Either or Both Column B & C have "Yes"

Cell E8 Formula: Array formula (Ctrl+Shift+Enter) using Frequency. Returns 5 for the Names "John", "Stacey", "Mary", "John" & "White".

Cell E9 Formula: Array formula (Ctrl+Shift+Enter) using MMULT. Returns 5 for the Names "John", "Stacey", "Mary", "John" & "White".

Cell E10 Formula: Non-Array formula using MMULT - hard codes the number of columns (array2 of MMULT) which consider "Yes". If 3 columns are to be considered instead of 2 (ie. B:D instead of B:C, the formula will be: =SUMPRODUCT(1*( MMULT(1*( B2:D20= "yes"), {1;1;1}) >0)). For 2 columns ROW(1:2) can be used instead of {1;1}, & for 3 columns ROW(1:3) can be used instead of {1;1;1}. Returns 5 for the Names "John", "Stacey", "Mary", "John" & "White".

Cell E12 Formula: Non-Array formula using SUMPRODUCT. Returns 5 for the Names "John", "Stacey", "Mary", "John" & "White".

Note: Formulas in cells E8:E10 are amenable to check "Yes" in multiple columns in one go ("B2:C20" range can be expanded to include multiple columns) whereas cell E12 formula considers each column separately to check "Yes" ie. "B2:B20" & "C2:C20".

Only One of the Multiple formulas is illustrated above. For full details and explanation refer to Ebook of Excel Formulas.