2016-01-06 72 views
0

我有一個calc(excel)產品的列表,每個都有一個關聯的IP地址。許多名稱都有多個IP地址,但是它們一次只能組織一列。我正在嘗試刪除所有倍數,並將所有IP地址都以單一名稱進行提取。我曾嘗試nslookup和索引匹配,但它們不能很好地處理多個輸出。現在看起來像這樣刪除重複項並保留相關數據Calc(Excel)

a | 1

a | 2

a | 3

b | 1

b | 2

b | 3 等等

我想它看起來像這樣

1,2,3-

b 1,2,3

有沒有辦法做到這一點不浪費大量時間,我有幾種方法可行,但他們會永遠帶我去設置。

+0

您在查找產品名稱是否在一列中,並且在後續列中的同一行中使用IP地址(每個IP使用一列)?或者你是否需要將IP連接成一個單元格? – Lyrl

回答

0

我建議在獲得最終的「結果單元格」之前,在多個「幫助」單元格中設置公式。這將問題分解成更小的步驟,更容易制定,並在未來需要時更新。設置完成後,您可以通過右鍵單擊列字母並選擇「隱藏」來隱藏幫助列。

要設置的第一列是不同產品名稱的列表。對於下面的公式來說,產品/ 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語句,但是要連接多個最大列。再次,一旦你設置了最上面的一行,複製並粘貼下去你需要的東西。

+0

這是完美的!謝謝! –

相關問題