Excel公式根據另一列選擇性地搜尋一列?

Excel公式根據另一列選擇性地搜尋一列?

我將如何建立此公式以應用於 C 列(返回布林值)?

如果B2包含“apple”,則查看A2中的數字是否存在於其所在行的任何其他A單元格中B 欄包含「apple」。 (假設其他行的 B 列也有“apple”,且 A 列中可能有或沒有重複的數字)。

以下是 C 列中的一些範例資料和所需結果: 在此輸入影像描述

答案1

使用 IF 和 COUNTIFS:

=IF(B2="apple",COUNTIFS(A:A,A2,B:B,"<>"&B2)>0,"")

首先我們檢查 B2 是否是“apple”

其次,我們檢查是否有任何是蘋果,然後我們看看是否有任何符合 A2 且 B 列中不包含「蘋果」的內容

在此輸入影像描述

答案2

快速回答:

您可以使用陣列公式來完成此操作。在您的儲存格中C2寫入以下內容:

=IF(B2="apple",SUM(ISNUMBER(A:A)*(A:A=A2)*(B:B<>B2))>0,"")

然後使用 Ctrl+Shift+Enter 將其註冊為數組公式。之後將其複製到該列的其餘部分。

解釋:

IF功能是普通的排序:如果在 B 列中我們看到“apple”,我們就做一些事情,否則就寫空字串。有趣的部分是第二個參數——它為我們提供了「apple」案例中的結果。

現在先考慮 Excel 將如何使用更簡單的公式:SUM(A:A=A2)。在 - 的裡面SUM,Excel 看到「範圍 = 值」形式的方程式。如果兩邊都是簡單值,則計算結果為布林值,但這裡因為您使用 Ctrl+Shift+Enter 來開啟陣列公式,Excel將操作分別應用於左側的每個元素,並將它們儲存在記憶體中的臨時數組中,該數組SUM很樂意接受。因此,結果是列中A等於A2...的儲存格數量

嗯,差不多了。如果SUM將值TRUE視為 1,將值視為 0 ,就會出現這種情況FALSE。實際公式中的運算SUM(--(A:A=A2))*也會處理這個問題。

回到實際的總和,我們有附加項ISNUMBER(A:A)。原理是相似的:這將再次對列進行元素操作,A因為它通常不知道如何處理範圍。然後*運算子將兩個包含布林值的臨時範圍按元素「相乘」——基本上將運算AND應用於它們——並給我們一個新的布林值範圍。 (這只是為了確保空白單元格不被計為等於 0,並且NOT(ISBLANK(A:A))同樣有效。)

最後,我們對附加的布林值範圍執行相同的操作,這些布林值描述列中的每個單獨值是否B不是等於B2。最後,SUM然後對結果範圍進行操作。

總之,我們計算了第一列中包含數字的行,其中當前行在 列 中匹配A,但在 列 中不匹配B。你的情況只是表明這些數量是正面的。

備註1:
我們使用*運算子而不是函數,AND因為後者預設接受範圍作為參數,因此它只會消耗臨時範圍,而不是啟動「陣列模式」並執行元素操作。

備註2:
您可以自由地將列設為絕對值,以便將公式複製到其他列,將(絕對)行號新增至範圍中,A:AB:B忽略可能位於同一列中的其他內容(以及效能),甚至為兩個列指定命名範圍IDsFruits,然後將這些名稱而不是範圍放入公式中。

相關內容