2017-12-27 136 views
0

我有一個長的工作表,其中包括3列:如何創建宏以拆分列和行?

柱A =發票號碼
列B =接收量
列C - 支付金額

在列中的每個號碼A需要分割到兩行:付款和接收。
對於收費將採取準數從列C
對於接收將準數從塔B

Test excel

+0

如果你看看powerquery,你可以設置你的數據了一個表,那麼這個表裏面去powerquery或數據(2016)選項卡>從表查詢,然後在出現的窗口選擇最後2列並右鍵單擊unpivot列 – QHarr

+0

感謝您的回覆。這個powerquery在哪裏?我有Office 2013 – tasoik

+0

2013它是一個免費的微軟[加載項](https://www.microsoft.com/en-gb/download/details.aspx?id=39379) - 如果工作機器檢查你是允許安裝。 – QHarr

回答

0

我已經創建簡單的VBA代碼的行從工作表Sheet分成列向的Sheet 2中Activeworkbook。您可以根據需要修改代碼。

Dim sel As Range, b As Range 
Dim rcount As Integer: rcount = 1 
ActiveWorkbook.Sheets(2).Range("A:C").Delete Shift:=xlDown 
With ActiveWorkbook.Sheets(1) 
Set sel = .Range("A2:C" & .UsedRange.Rows.Count) 
For Each b In sel.Rows 
ActiveWorkbook.Sheets(2).Cells(rcount, 1).Value = b.Value2(1, 1) 
ActiveWorkbook.Sheets(2).Cells(rcount, 2).Value = .Cells(1, 2).Value 
ActiveWorkbook.Sheets(2).Cells(rcount, 3).Value = b.Value2(1, 2) 
ActiveWorkbook.Sheets(2).Cells(rcount + 1, 1).Value = b.Value2(1, 1) 
ActiveWorkbook.Sheets(2).Cells(rcount + 1, 2).Value = .Cells(1, 3).Value 
ActiveWorkbook.Sheets(2).Cells(rcount + 1, 3).Value = b.Value2(1, 3) 
rcount = rcount + 2 
Next 
End With 
1

假設你的數據在Sheet1,我們將讓Sheet2的splited數據。這裏有一個簡單的解決方案:

Sub Split_Column() 

Set st1 = ThisWorkbook.Sheets("Sheet1") 
Set st2 = ThisWorkbook.Sheets("Sheet2") 

j = 1 
For i = 1 To st1.UsedRange.Rows.Count 

    st2.Cells(j, 1) = st1.Cells(i, 1) 
    st2.Cells(j, 2) = "Pay" 
    st2.Cells(j, 3) = st1.Cells(i, 3) 
    j = j + 1 
    st2.Cells(j, 1) = st1.Cells(i, 1) 
    st2.Cells(j, 2) = "Receive" 
    st2.Cells(j, 3) = st1.Cells(i, 2) 
    j = j + 1 

Next 

End Sub 
+0

謝謝你們兩位。這是我正在尋找的。 :) – tasoik

+0

如果有效,請將其設置爲答案。 :) – Phil