2016-07-20 43 views
-1

我在Excel中有一些數據需要重新組織。這裏的本質是什麼,我需要:Excel VBA - 從多列重新組織數據到新行

Sample Data

數據從單元格A1開始(「名」是在單元格A1)和我「網站」太后有其他列。我不太瞭解VBA,所以如果有人能提供完整的解決方案,我將不勝感激。

謝謝!

+1

你嘗試過什麼等等遠?請發佈您嘗試的任何方法/公式。另外,「約翰卡特」的電子郵件是否可以保持一致,還是永遠是不同的電子郵件地址? – BruceWayne

+1

歡迎來到StackOverflow。請注意,這不是免費的代碼寫入服務。然而,我們渴望幫助其他程序員(和有志之士)編寫他們自己的代碼。請閱讀[我如何提出一個好問題](http://stackoverflow.com/help/how-to-ask)上的幫助主題。您可能還想[參觀](http://stackoverflow.com/tour)。之後,請用您迄今編寫的VBA代碼更新您的問題,以完成您希望實現的任務。我建議像這樣:'對於範圍內的每個rngCell(「D2:I100」):如果rngCell.Value2 <> vbNullString Then' – Ralph

+0

是否只有一個人最多隻能有6個電子郵件地址?我們假設「電話」,「網站」等會移動? –

回答

0
Sub Macro3() 
Dim sh As Worksheet 
Dim i As Integer 
Dim j As Integer 
Dim k As Integer 
Dim m As Integer 
Dim n As Integer 
Set sh = ThisWorkbook.Worksheets("Sheet1") 

sh.Range("a1").End(xlDown).Select 

For m = 2 To Selection.Row 
sh.Range("d" & m & ":" & "i" & m).SpecialCells(xlCellTypeConstants, 2).Copy 
j = sh.Cells(Rows.Count, "g").End(xlUp).Row + 1 
sh.Range("g" & j).PasteSpecial (xlPasteValues), Transpose:=True 
Application.CutCopyMode = False 
sh.Range("a" & m & ":" & "c" & m).Copy 
k = sh.Cells(Rows.Count, "a").End(xlUp).Row + 1 
i = sh.Cells(Rows.Count, "g").End(xlUp).Row 
sh.Range("a" & k & ":" & "c" & i).PasteSpecial (xlPasteValues) 
sh.Range("j" & m & ":" & "l" & m).Copy 
n = sh.Cells(Rows.Count, "d").End(xlUp).Row + 1 
sh.Range("d" & n & ":" & "f" & i).PasteSpecial (xlPasteValues) 
Next m 
End Sub 

我的原始數據駐留A1之間:L1和結果輸出數據駐留到這樣G柱之間...電子郵件手機網站的名字姓氏號碼等欄目郵件