2017-04-18 36 views
1

我有一個帶有兩個「標題列」的轉置表。該表格向右延伸太長,我希望能夠將該表格分成幾個「n」列,同時還將兩個標題列複製到每個新表格。我可以找到的所有示例只分割每個「n」行,而我想分割每個「n」列。VBA Excel每隔n列拆分一張表

我發現很難用純文本解釋這一點,所以附上屏幕截圖:在此示例中,第一張工作表包含原始數據,後續工作表包含宏的已知結果,工作表在此處分割每兩列:

enter image description hereenter image description hereenter image description hereenter image description here

回答

2
Sub colsplit() 
Dim wssrc As Worksheet 
Dim wsdest As Worksheet 
Application.ScreenUpdating = False 
Application.DisplayAlerts = False 
Set wssrc = ActiveWorkbook.Sheets("Source") 
'getting No of columns 
lcol = wssrc.Cells(1, Columns.Count).End(xlToLeft).Column 
On Error GoTo resetsettings 
'getting User input to split count 
col = InputBox("Enter Number of columns to split") 
If IsNumeric(col) And col <> "" And col > 0 Then 
desti = 1 
For i = 3 To lcol 
Set wsdest = Sheets.Add(After:=Sheets(Sheets.Count)) 
wsdest.Name = "split" & desti 
'copying header columns to new sheets 
wssrc.Columns(1).EntireColumn.Copy Destination:=wsdest.Cells(1, 1) 
wssrc.Columns(2).EntireColumn.Copy Destination:=wsdest.Cells(1, 2) 
desti = desti + 1 
x = 3 
For j = i To (i + col - 1) 
'Copying other columns to new sheet 
wssrc.Columns(j).EntireColumn.Copy Destination:=wsdest.Cells(1, x) 
x = x + 1 
Next j 
i = i + col - 1 
Next i 
Else 
End If 
resetsettings: 
Application.ScreenUpdating = True 
Application.DisplayAlerts = True 
End Sub 

此代碼將拆分列並將它們粘貼到新工作表。

+0

哇,那正是我一直在尋找的!非常感謝! – LarsS

-2

這不是我清楚你需要什麼,宏? SE不是一種編碼服務。請嘗試freelancer.com或類似的來源。

如果您想要一個快速而有趣的解決方案:記錄您的手動任務以將此表拆分爲宏。然後,如果你需要它,你可以運行它的僕人時間。 如果您不知道如何手動執行此操作,請發表評論,然後我會解釋。

+0

好點,我忘了我可以錄製手動宏。我會嘗試。我嘗試過發佈代碼段時遇到了一些困難,所以我僅限於截圖。我會嘗試用代碼更新問題。 – LarsS

+0

請使用評論部分來傳達你的遺憾,而不是回答部分 –

+0

我不能使用50聲望下面的評論部分。好的,也許最好在這種情況下保持安靜,但StackOverflow不是一個編碼服務。 – Enrico