HASALL 函數

套用到
Microsoft 365 Excel Mac 版 Microsoft 365 Excel

HASALL 函數可讓您檢查陣列或範圍是否包含您要尋找的每個值。 只有在找到所有值時,才會傳回 TRUE,如果遺漏任何值,則傳回 FALSE。

HASALL 會搜尋巢狀陣列的每一層,因此您可以在儲存於單一儲存格內的陣列上使用它。

語法

HASALL 函數會判斷陣列是否包含所有值。

HASALL 函數的語法為:

HASALL (陣列、值)

引數 說明
陣列
(必要)
要在其中搜尋的陣列或範圍。 搜尋巢狀陣列的每一層。
值
(必要)
要檢查的值。 只有在找到所有項目時,HASALL 才會傳回 TRUE。

注意

  • 無論您搜尋多少值,HASALL 都會傳回單一 TRUE 或 FALSE。 若要每個值取得一個結果,請改用 HAS 函數。 若要檢查是否至少有一個值存在,請使用 HASANY 函數。
  • HASALL 會檢查每個值是否存在,而不是檢查它出現的次數。 重複 值 中的值並不需要它在 陣列中出現多次。
  • 比較對類型很嚴格。 數字 1 與文字 “1” 不符,且數字 1 不符合 TRUE。 文字比較不區分大小寫,因此 “apple” 會符合 “APPLE”。
  • 如果 陣列 為空,HASALL 會傳回 #CALC! 錯誤。
  • 如果 值 包含錯誤,則會傳回該錯誤。

範例

複製範例資料,並將其貼到新 Excel 工作表的儲存格 A1 中。 如有需要,您可以調整欄寬來查看所有資料。

範例 1

檢查某個範圍是否包含集合中的所有值。

資料        
1 2 3 4 5
公式 問題
=HASALL (A2:E2,{2,4}) 2 和 4 都在清單中嗎?
=HASALL (A2:E2,{2,9}) 2 和 9 都在清單中嗎?
=HASALL (A2:E2,{1,2,3,4,5,6}) 這六個值是否都在清單中?

下圖顯示結果。

使用 HASALL 檢查範圍是否包含集合中的所有值

範例 2

查看 HASALL 如何處理重複值。 它檢查值是否存在,而不是出現的頻率。

資料  
1 2
公式 描述
=HASALL (A2:B2,{2,2,2}) 傳回 TRUE。 值 2 存在,這是所需要的全部
=HASALL (A2:B2,{1,2,3}) 傳回 FALSE。 遺失值 3

下圖顯示結果。

使用 HASALL 來顯示重複搜尋的值只需要存在一次

範例 3

在巢狀陣列內搜尋。 儲存格 A1 中的公式 ={{{1,2};{3,4}}} 會將巢狀陣列儲存在單一儲存格中。

公式 描述
=HASALL (A1,{2,3}) 傳回 TRUE。 HASALL 會搜索每一層,所以裡面 {1,2} 有 2 個,裡面有 3 個 {3,4}
=HASALL (A1,{2,5}) 傳回 FALSE。 值 5 不會出現在任何層級

下圖顯示結果。

使用 HASALL 在儲存於單一儲存格中的巢狀陣列內部進行搜尋

範例 4

檢查某列是否已標記為所有必要標籤。 欄 B 中的每一個儲存格都含有一份標籤清單,並以逗號分隔顯示。

貼上資料之後,選取 B2:B3 並按下 Ctrl+J ,將每個儲存格轉換成清單。 在此之前,每個儲存格都含有單一文字片段,而下列公式將找不到個別的標籤。

項目 標籤
產品 A 緊急, 審查, Q1
產品 B 緊急,Q1
公式 描述
=HASALL (B2,{“urgent”,“review”}) 傳回 TRUE。 產品 A 同時具有這兩個標籤
=HASALL (B3,{“urgent”,“review”}) 傳回 FALSE。 產品 B 未標記評論

下圖顯示結果。

使用 HASALL 檢查包含巢狀標籤陣列的儲存格是否包含所有必要的標籤