如何計算 Excel 中逗號分隔清單和參考列之間的符合數?

如何計算 Excel 中逗號分隔清單和參考列之間的符合數?

我有一組用逗號分隔的數字。每組代表一系列與項目相關的唯一數字。如何編寫公式來在參考表中搜尋列表中任意數量的項目,並傳回硬編碼值?

我將在下面為每張紙添加示例(去識別化)(表1-5)和預期/預期輸出。我想這與 SUM、FREQUENCY、INDEX 或其他一些陣列公式有關,但我無法弄清楚。你可以看看我的問題這裡也,但它有很多相同的訊息。

我用過“屁股” “F艾爾”和“中號iss」但一切都有效。

邏輯:

該公式應執行以下步驟。

  1. 從 C 列的每個儲存格中提取數字列表表4
  2. 搜尋表3(D 列)用於列表中數字的實例。
    2b.如果清單中出現任何數字,請檢查審核是否失敗(由 B 列中的文字「失敗」表示)表3)。
    2c.如果有,則列印F
    2d.如果沒有,則列印
  3. 如果清單中沒有出現任何數字,則列印中號

表格:

表格1

該表為主要參考表。它根據名稱、伺服器和項目列出了每個 UID。

 Unique ID     Name         Server Address     Project
 10000         Company 1    Server 1           Project 1
 10001         Company 2    Server 2           Project 2
 10002         Company 3    Server 3           Project 3
 10003         Company 3    Server 3           Project 4
 10004         Company 3    Server 3           Project 5
 10005         Company 3    Server 3           Project 6
 10006         Company 4    Server 4           Project 7
 10007         Company 4    Server 4           Project 7
 10008         Company 4    Server 4           Project 7
 10009         Company 5    Server 5           Project 8
 10010         Company 6    Server 6           Project 9
 10011         Company 7    Server 7           Project 10
 10012         Company 8    Server 8           Project 11
 10013         Company 8    Server 8           Project 11
 10014         Company 8    Server 8           Project 11
 10015         Company 8    Server 8           Project 11
 10016         Company 8    Server 8           Project 11
 10017         Company 8    Server 8           Project 11
 10018         Company 8    Server 8           Project 11
 10019         Company 8    Server 8           Project 11
 10020         Company 8    Server 8           Project 11
 10021         Company 9    Server 9           Project 12
 10022         Company 10   Server 10          Project 13
 10023         Company 11   Server 10          Project 14
 10024         Company 12   Server 10          Project 15
 10025         Company 13   Server 10          Project 16
 10026         Company 14   Server 10          Project 17
 10027         Company 15   Server 10          Project 18
 10028         Company 16   Server 10          Project 19
 10029         Company 17   Server 10          Project 20
 10030         Company 18   Server 10          Project 21
 10032         Company 19   Server 10          Project 23
 10033         Company 19   Server 10          Project 24

表2

該表具有與以下所有相同的信息表格1而是將每個 UID 分組到各自的項目中。我目前並沒有實際使用它,但它可能會有幫助?如果沒有我會刪除。

 Company Trading Name     Project     UID     UID     UID     UID
 Company 1                Project 1   10000
 Company 2                Project 2   10001
 -----------------------------------------------------
 Company 4                Project 7   10006   10007   10008

表3

該表是貼上審計結果的地方。它們完全遵循此佈局,如果審核未通過,則註釋列中包含“失敗”一詞(條件格式當前突出顯示此內容),並且通過簡單的 LEFT 函數提取 UID。然後,名稱和公司欄位對 UID 使用 VLOOKUP表格1取得名稱/伺服器。

Notes                                   Time Rec.      UID     Name        Server
Audit for company passed:10001          auto           10001   Company 2   Server 2  
Audit for company passed:10006          auto           10006   Company 4   Server 4
Audit for company failed:10007          auto           10007   Company 4   Server 4  

表4

這是審計表。該公式將進入 D 列,並且每天將輸出複製/貼上為值。我在這裡填寫了一些範例,說明之後的樣子。

 Server     Name         Project (UID)                          Today's Date
 Server 1   Company 1    Project 1 (10000)                       P
 Server 2   Company 2    Project 2 (10001)                       N
 Server 3   Company 3    Project 3 (10002,10003,10004,10005)     F
 Server 4   Company 4    Project 4 (10006,10007,10008)           P
 -----------------------------------------------------
 Server 10  Company 10  Project 13 (10022)                       P
 Server 10  Company 11  Project 14 (10023)                       M
 Server 10  Company 12  Project 15 (10024)                       P
 Server 10  Company 13  Project 16 (10025)                       P
 Server 10  Company 15  Project 18 (10027)                       F
 Server 10  Company 16  Project 19 (10028)                       P
 Server 10  Company 17  Project 20 (10029)                       M
 Server 10  Company 18  Project 21 (10030)                       P
 Server 10  Company 19  Project 22 (100310)                      P
 Server 10  Company 19  Project 23 (10032)                       P
 Server 10  Company 19  Project 24 (10033)                       M

或者我有第五張桌子,表5,它會自動尋找任何缺少的 ID表3使用以下公式:

=INDEX(Reference!$A$2:$A$160, SMALL(IF(ISERROR(MATCH(Reference!$A$2:$A$160, Check!$D$2:$D$350, 0)), (ROW(Reference!$A$2:$A$160)-MIN(ROW(Reference!$A$2:$A$160))+1), ""), ROWS($A$1:A1)))

什麼時候表3是空的(每天都會清除),這只是列出了每個項目。當任意數量的審核被貼到表3然而,在列表中表5將更新以顯示缺少的內容。也許有一種方法可以將其合併到最終公式中。

如果有人想要使用的話,我有一個去識別化的版本。

謝謝。

edit1:有人要求更多系統詳細資訊。這是在使用 Excel 365 的 Windows 10 環境中。

答案1

我試圖組合一種方法,我承認這種方法的可擴展性不是很好,並且使用了一些輔助列。我不太確定是否有直接的方法可以一次找到逗號分隔的值。也許有可能,但我不是 Excel 專家。

此外,我認為Office 365桌面版支援VBA巨集。如果您有桌面版本,您可以選擇更精簡的 VBA 巨集解決方案。但我認為線上版本不支援巨集。

請參閱下面的快照。

在此輸入影像描述

有 5 個輔助列。 H、M、N、O、P。 H 可能是可選的,但我更喜歡使用簡單的數字序列,因為您的伺服器名稱可能實際上沒有最後一個字元作為數字,例如伺服器 1、伺服器 2 按此順序。

在M4中輸入以下公式並將其向下拖曳。

=SUBSTITUTE(RIGHT(K4,LEN(K4)-FIND("(",K4)),")","")

這將創建一個正確的逗號分隔的 UID 列表

在 N4 中輸入以下公式並將其向下拖曳到臨時儲存格數。當沒有任何內容可顯示時,儲存格內容將為空白,但會向下擴展以供以後配置,因為 UID 計數可能會有所不同。

=VALUE(TRIM(MID(SUBSTITUTE(TEXTJOIN(",",TRUE,$M$4:$M$22),",",REPT(" ",99)),(ROW(1:1)-1)*99+1,99)))

在O4中輸入以下公式並將其向下拖曳。

=IF(ISNUMBER(VALUE(N4)),MATCH("*"&N4&"*",$M$4:$M$22,0),"")

這列出了稍後將使用的 UID 的位置。

在P4中輸入以下公式並將其向下拖曳。

=IF(ISNUMBER(VALUE(N4)),IF(ISNUMBER(FIND("passed",INDEX($B$4:$B$22,MATCH(VALUE(N4),$D$4:$D$22,0)))),"P",IF(ISNUMBER(FIND("failed",INDEX($B$4:$B$22,MATCH(VALUE(N4),$D$4:$D$22,0)))),"F","M")),"")

這決定了表 4 中每個 UID 的狀態。

現在是我的範例中的輸出列 L。

在L4中輸入以下公式並將其向下拖曳。

=IF(COUNTIFS($O$4:$O$22,H4,$P$4:$P$22,"M")=COUNTIF($O$4:$O$22,H4),"M",IF(COUNTIFS($O$4:$O$22,H4,$P$4:$P$22,"P")+COUNTIFS($O$4:$O$22,H4,$P$4:$P$22,"M")=COUNTIF($O$4:$O$22,H4),"P","F"))

這將應用最終邏輯來根據幫助程式列中的轉置清單來決定審核狀態「通過」「失敗」或「缺失」。

您可以將這些資料集轉換為 Excel 表格,並使用表格[標題]引用使其更加動態。

嘗試一下並決定這是否對您有用。我承認它不是那麼好,因為它使用了幾個輔助列。這個想法是將逗號分隔的清單轉置為連續的儲存格,然後套用查找。

相關內容