我建議在獲得最終的「結果單元格」之前,在多個「幫助」單元格中設置公式。這將問題分解成更小的步驟,更容易制定,並在未來需要時更新。設置完成後,您可以通過右鍵單擊列字母並選擇「隱藏」來隱藏幫助列。
要設置的第一列是不同產品名稱的列表。對於下面的公式來說,產品/ IP列表需要按升序排序。如果列表尚未排序,則先對其進行排序,然後突出顯示整個列表,包括標題。然後選擇數據→排序;選擇按「產品」排序,確保選擇單選按鈕「升序」,然後按確定。
就本例而言,假設產品名稱位於A列,從第2行開始,IP位於列B從第2行開始(第1行是標頭標籤)。在要列出不同產品名稱的列中(我使用D列),請在頂部單元格=A2
中輸入。另外,在單元下方輸入
=INDEX($A$2:$A$13;MATCH(D2;$A$2:$A$13;1)+1)
匹配公式具有1作爲第三個變量,這意味着該範圍將按升序排序並MATCH
將返回最後匹配單元的位置。我們在最後一個匹配單元格的位置上加1,這將成爲第一個具有新產品名稱的單元格的位置。該位置被輸入到INDEX
函數中以顯示下一個產品名稱。
根據需要複製並粘貼該單元格,以顯示所有產品名稱。
現在我們將設置一系列單元格來顯示每個IP地址。我使用的列F到我顯示多達4個地址:
=IF(MATCH(D2;$A$2:$A$13;0)<=MATCH($D2;$A$2:$A$13;1);INDEX($B$2:$B$13;MATCH($D2;$A$2:$A$13;0));"")
=IF(MATCH(D2;$A$2:$A$13;0)+1<=MATCH(D2;$A$2:$A$13;1);INDEX($B$2:$B$13;MATCH(D2;$A$2:$A$13;0)+1);"")
=IF(MATCH(D2;$A$2:$A$13;0)+2<=MATCH(D2;$A$2:$A$13;1);INDEX($B$2:$B$13;MATCH(D2;$A$2:$A$13;0)+2);"")
=IF(MATCH(D2;$A$2:$A$13;0)+3<=MATCH(D2;$A$2:$A$13;1);INDEX($B$2:$B$13;MATCH(D2;$A$2:$A$13;0)+3);"")
MATCH
與1返回最後匹配單元的位置的所述第三可變; MATCH
與第三個變量0返回匹配單元的第一個的位置。
IF
語句檢查第一個匹配單元格(在第一個查找列中)或低於該單元格的位置(在第二個查找列中)或低於第一個匹配的單元格(在第三個查找列中)等等小於或等於最後匹配單元的位置。如果是,則查找相關的IP地址。如果否,則顯示空白。
在上面的公式中,您需要在每列的首行中手動輸入公式。如果您有一些具有大量IP地址的產品,則可能需要設置公式,以便您可以在行和列之間複製和粘貼。一旦你有你頂行設置爲你想要的,複製和粘貼下來,你需要然而,許多行
=IF(MATCH($D2;$A$2:$A$13;0)+COLUMN()-6<=MATCH($D2;$A$2:$A$13;1);INDEX($B$2:$B$13;MATCH($D2;$A$2:$A$13;0)+COLUMN()-6);"")
:如果你在F列開始這會工作。
如果你想所有的IP地址相結合以逗號分隔的單個單元格,可以用這樣一個公式:
=CONCATENATE(F2;IF(G2<>"";","&G2;"");IF(H2<>"";","&H2;"");IF(I2<>"";","&I2;""))
每個IF
語句將添加一個逗號分隔符,然後在單元格內容,如果選中的單元格不爲空,否則返回空白字符串。您需要手動調整以添加額外的IF
語句,但是要連接多個最大列。再次,一旦你設置了最上面的一行,複製並粘貼下去你需要的東西。
您在查找產品名稱是否在一列中,並且在後續列中的同一行中使用IP地址(每個IP使用一列)?或者你是否需要將IP連接成一個單元格? – Lyrl