2017-04-05 13 views
0

我有這個數據集包含100K +記錄。 而在1行單元中,其包含多個產品代碼,以逗號(,)分隔。該單元格可能包含1-5個以逗號分隔的產品代碼。如何在單元格內拆分數據後自動在Excel中創建新的數據行

有一個唯一的ID號。標籤到每個產品代碼。 這裏是棘手的部分:

  1. 我需要拆分所以每個單元只包含1項
  2. 併爲每個產品代碼下面創建一個新的列
  3. 然後與包含在其他數據填充新列行

意思就是說

Row A  | Row B  | Row C | Row D| 
Unique ID | Product ID | Price | MSRP | 
1232  | 123,342,432| $5  | $10 | 

,我需要改變這個記錄到,

Row A  | Row B  | Row C | Row D| 
Unique ID | Product ID | Price | MSRP | 
1232  | 123  | $5  | $10 | 
1232  | 342  | $5  | $10 | 
1232  | 432  | $5  | $10 | 

有沒有辦法旁邊,「文本到列」,複製和粘貼其他數據的記錄? 我完全是VBA的新手,但我願意嘗試一下。

+1

*但我願意嘗試* - 請顯示您嘗試過的努力以及失敗的方式。那麼我們可以幫你解決它們。 SO不是「爲我編寫代碼」服務。 –

+0

首先提示:遍歷所有行。使用['yourArray = split()'](https://msdn.microsoft.com/en-us/library/6x627e5f(v = vs.90).aspx)將它們分隔成一個由分隔符組成的數組, '。用'x = UBound(yourArray)'獲取數組大小並複製實際的行x次。然後將數組中的值寫入實際和生成的行中。 –

+0

@Scott, 我現在正在做的是手動。 第1步:將列B移動到列的末尾 第2步:按列分隔劃分(,) 第3步:複製無論從列D開始分割並傳輸到最後一行 第4步:將列A - C的信息down –

回答

0

爲了一些樂趣,我在添加了5 + 2助手colmuns之後,由Google Sheets完成了此操作。它主要使用arrayformula(),filter(),split(),join(),regexreplace(),它們不被支持或在Excel中作爲內置公式提供。

  1. 首先,K:K得到5個pid S代表每個記錄由=split(B2, ",")。它將擴展到欄目O:O
  2. 獲取每個uid s的所有記錄的一行=regexreplace(join("/", arrayformula(if(K2:O2<>"",$A2&","&K2:O2&","&$C2&","&$D2,""))), "/+$" , "")Q:Q。它將每列加入,,並將每個記錄加入/。 (您可以使用substitute()等代替regexreplace()。)
  3. 現在加入Q2:Q會給出所有記錄。 R2上只有一個公式=transpose(split(join("/", filter(Q2:Q, Q2:Q<>"")), "/"))
  4. 現在將R:R上的每個記錄與,分開一個公式=arrayformula(split(filter(R2:R, R2:R<>""), ",")),F2

樣張是here以下是它的scrrenshot。 enter image description here

另一個屏幕截圖顯示帶公式的單元格。 enter image description here

+0

謝謝@Sangbok李, 我試過你在Excel上做的事情,這是好的,如果即時通過它。 我需要的是每個新的ID由單元格B拆分創建,我需要在下面創建一個新記錄並用所有其他信息替換它。 如果您知道我的意思,請不要太確定 –

+0

DV在請求的應用程序之外提供解決方案。 –

相關問題