簡體   English   中英

檢查一列的任何值是否包含另一列的任何值

[英]Check if any values of one column contains any values from another column

因此,我有一個公式一直在使用,以查看一列中的任何單元格是否與另一組值中的任何單元格相匹配(在另一個稱為公司的工作表中):

 =IF(ISERROR(VLOOKUP(K1,companies!A:A,1,FALSE)),"Keep","Delete")

現在,我嘗試做完全相同的事情,只是現在,我想查看是否有任何單元格包含單元格的任何子字符串(companies!A:A),而不是匹配。 不確定如何執行此操作。

=IF(ISERROR(VLOOKUP(CONCATENATE("*",K1,"*"),companies!A:A,1,FALSE)),"Keep","Delete")

只需將您的K1引用更改為CONCATENATE("*",K1,"*") ,即可基於vlookup通配符。

這是一張顯示此工作方式的圖像,盡管將其修改為一張紙。 您會看到一個,四個和五個被刪除,因為它們包含在列表中,但不完全包含在列表中。

編輯因此,在評論中進行了一些討論之后,發現以上內容是對需求的一種誤解。 這個問題實際上是想知道某個值是否包含另一列中的任何字符串,這在問題上要困難得多-但這使我感到煩惱,所以我進行了研究,我認為我有所收獲這樣可行。

公式如下:

=IF(OR(ISNUMBER(SEARCH("*"&$H$2:$H$14&"*",I2))),"Delete","Keep")

必須使用CTRL-SHIFT-ENTER輸入它,以使其成為數組函數才能工作

還必須明確定義引用列(即H#:H#,而不是H:H),否則所有內容將返回true,因為數據下方的空白單元格將匹配任何內容。

話雖如此,您將知道它是一個數組函數,因為它將在公式欄中的公式兩邊帶有方括號,如下所示。

數組公式

我強烈建議您瀏覽“評估公式”工具,以了解自己的工作方式,但是我將在下面以匹配行的示例為依據,對其進行詳細說明,因為它更加明顯。

首先,excel將您的引用和連接評估為單元格值的數組,並將您的引用替換為要搜索的字符串,因此我們得到如下信息:

=IF(OR(ISNUMBER(SEARCH({"*john*";"*jack*";"*fake*";"*bill*";"*bob*";"*test*";"*blah*";"*hey*";"*words*";"*ten*";"*eleven*";"*jim*";"*susie*"},"fake@example.org"))),"Delete","Keep")

然后,Excel將針對您要搜索的字符串對每個術語進行搜索,這將返回結果的數組。 沒有匹配項時,注釋搜索將返回“ #VALUE”。

=IF(OR(ISNUMBER({#VALUE;#VALUE;1;#VALUE;#VALUE;#VALUE;#VALUE;#VALUE;#VALUE;#VALUE;#VALUE;#VALUE;#VALUE})),"Delete","Keep")

然后,Excel對這個數組執行IsNumber,然后再次將True / False結果存儲在數組中。

=IF(OR({FALSE;FALSE;TRUE;FALSE;FALSE;FALSE;FALSE;FALSE;FALSE;FALSE;FALSE;FALSE;FALSE}),"Delete","Keep")

然后,我們添加了OR,它將對數組求值,如果任何結果為True,則返回True,然后對If求值。

似乎可以正常工作,盡管性能可能會影響大型數據集。 這種東西將更適合某種SQL工具。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM