我有一個電子表格,其中列出了參加我們其中一個家庭作業中心的學生。電子表格列出了學生使用的語言,我想計算學生使用特定語言的實例,如下例所示,其中學生語言列的命名範圍設定為 registerListLanguage:
學生姓名 | 學生語言 |
---|---|
假名 | 阿爾巴尼亞語 |
其他 | 烏爾都語 |
學生1 | 烏爾都語、旁遮普語、義大利語 |
學生2 | 旁遮普語 |
學生3 | 烏爾都語和旁遮普語 |
當學生只講一種語言(例如阿爾巴尼亞語)時,這很容易,只需使用簡單的 =SUM(COUNTIFS(registerListLanguage, "阿爾巴尼亞語”)
然而,在許多情況下,我們的學生會說兩種或多種語言,這意味著我們需要列出他們所說的語言(如上例中的學生 1)
我的領主希望我能夠報告說烏爾都語或旁遮普語的學生,而我真的很難獲得準確的計數......目前我正在使用以下公式:
=SUM(COUNTIFS(registerListLanguage, {"*Urdu*","*Punjabi*"}))
但這是將同時講旁遮普語和烏爾都語的學生計算兩次,因此上例中的學生 1 和學生 3 被計算兩次...
我整個下午都在努力思考如何讓它只對包含烏爾都語或旁遮普語的單元格進行一次計數...
有人能指出我哪裡出了問題嗎?
謝謝!
答案1
你可以減去一個 COUNTIFS 來計算它們都在那裡的位置:
=SUM(COUNTIFS(B2:B6, {"*Urdu*","*Punjabi*"}))-COUNTIFS(B2:B6,"*Urdu*",B2:B6,"*Punjabi*")
或使用 SUMPRODUCT 檢查其中一個是否在單元格中,並且僅將其計為 1 而不是 2:
=SUMPRODUCT(--((ISNUMBER(SEARCH("Urdu",B2:B6)))+(ISNUMBER(SEARCH("Punjabi",B2:B6)))>0))
這將建立兩個 1 和 0 數組,然後將它們相加。如果新增的陣列中的任一行大於 0,則傳回 1。