我最初的想法是:
=SUM(MIN (1,COUNTIFS(Sheet1!A1:A18,Sheet2!$A1,Sheet1!B1:B18,{"za","zc","zd"}))
,但我不是,我可以測試MIN將正確地應用到結果COUNTIFS陣列。 ;-)
EDITED:MIN函數在COUNTIFS數組中最少取1個或所有項,而不是COUNTIFS數組中的最小值1和每個項,這就是我所害怕的。使用
=MIN(COUNTIFS(Sheet1!A$1:A$18,Sheet2!$A1,Sheet1!B$1:B$18,"za"),1)+MIN(COUNTIFS(Sheet1!A$1:A$18,Sheet2!$A1,Sheet1!B$1:B$18,"zc"),1)+MIN(COUNTIFS(Sheet1!A$1:A$18,Sheet2!$A1,Sheet1!B$1:B$18,"zd"),1)
將獲得期望的結果。它有點笨重,但比數組公式更簡單。如果你想要一個數組公式,你可以使用:
=SUM(FREQUENCY(IFERROR(MATCH({"za","zc","zd"},(IF(Sheet1!$A$1:$A$18=$A5,Sheet1!$B$1:$B$18)),0),""),IFERROR(MATCH({"za","zc","zd"},(IF(Sheet1!$A$1:$A$18=$A5,Sheet1!$B$1:$B$18)),0),"")))
本機利用頻率函數取一組值,看看在另一組值的許多項目是如何落入每個數據範圍。由於您需要文本而不是數字,因此我們使用MATCH函數來首次查找列表中出現的值,如果沒有,則返回帶IFERROR函數的「」。 (我們只需要首次出現,因爲您不想知道有多少次出現)。由於它是文本,因此我們對FREQUENCY的兩個參數使用相同的輸入。
因此,如果您需要更改要查找的值或您正在搜索的範圍,請務必同時更改!或者,您可以在某處列出這些值,例如在F1:F3中,爲此命名範圍,另一個爲A1:A18,另一個爲B1:B18。你的公式會看起來像這樣:
=SUM(FREQUENCY(IFERROR(MATCH(SearchValues,(IF(colA=$A2,colB)),0),""),IFERROR(MATCH(SearchValues,(IF(colA=$A2,colB)),0),"")))
然後你只需要改變你命名的範圍定義,你的公式就會更新。 :-)
注意:由於這是一個數組公式,因此您必須按CTRL + SHIFT + ENTER鍵而不是僅輸入關閉單元格。當你看到配方欄時,你應該看到
{=SUM(FREQUENCY(IFERROR(MATCH(SearchValues,(IF(colA=$A2,colB)),0),""),IFERROR(MATCH(SearchValues,(IF(colA=$A2,colB)),0),"")))}
它不適用於自己輸入大括號。 ;-)
非常感謝您的幫助。我試過了你的建議,但它只返回0. – franciscofcosta
我現在有機會測試數據和公式並更新了我的答案。 :-) –
謝謝艾琳。我無法用數組公式工作,但它使用MIN。謝謝。 – franciscofcosta