如果我有這樣一個很長的列中的所有數據:移動數據的某些行插入列
A
B
C
1
2
3
D
E
F
4
5
6
G
H
I
7
8
9
是否可以移動這樣的數據?
Column1 Column2 Column3 Column4 Column5 Column6
A B C 1 2 3
D E F 4 5 6
G H I 7 8 9
我試過特殊粘貼+轉,但我有10多個幾千條記錄,所以它會帶我太多的時間,使用此方法。
我是新來的excel和宏,非常感謝。
編輯:
我甚至試過所有的數據轉成多列,然後選擇我要讓他們都變成一列與此宏柱:
Sub OneColumn()
' Jason Morin as amended by Doug Glancy
' http://makeashorterlink.com/?M19F26516
''''''''''''''''''''''''''''''''''''''''''
'Macro to copy columns of variable length
'into 1 continuous column in a new sheet
''''''''''''''''''''''''''''''''''''''''''
Dim from_lastcol As Long
Dim from_lastrow As Long
Dim to_lastrow As Long
Dim from_colndx As Long
Dim ws_from As Worksheet, ws_to As Worksheet
Application.ScreenUpdating = False
Application.Calculation = xlCalculationManual
Set ws_from = ActiveWorkbook.ActiveSheet
from_lastcol = ws_from.Cells(1, Columns.Count).End(xlToLeft).Column
'Turn error checking off so if no "AllData" trying to delete doesn't generate Error
On Error Resume Next
'so not prompted to confirm delete
Application.DisplayAlerts = False
'Delete if already exists so don't get error
ActiveWorkbook.Worksheets("AllData").Delete
Application.DisplayAlerts = True
'turn error checking back on
On Error GoTo 0
'since you refer to "AllData" throughout
Set ws_to = Worksheets.Add
ws_to.Name = "AllData"
For from_colndx = 1 To from_lastcol
from_lastrow = ws_from.Cells(Rows.Count, from_colndx).End(xlUp).Row
'If you're going to exceed 65536 rows
If from_lastrow + ws_to.Cells(Rows.Count, 1).End(xlUp).Row <= 65536 Then
to_lastrow = ws_to.Cells(Rows.Count, 1).End(xlUp).Row
Else
MsgBox "This time you've gone to far"
Exit Sub
End If
ws_from.Range(ws_from.Cells(1, from_colndx), ws_from.Cells(from_lastrow, _
from_colndx)).Copy ws_to.Cells(to_lastrow + 1, 1)
Next
' this deletes any blank rows
ws_to.Columns(1).SpecialCells(xlCellTypeBlanks).EntireRow.Delete
Application.ScreenUpdating = True
Application.Calculation = xlCalculationAutomatic
End Sub
但它只是加入所有列成一列,但不是所選列。
對於Remou參考:
這裏是輸出:
A D G
B E H
C F I
1 4 7
2 5 8
3 6 9
重要的是要表明你已經嘗試過。記錄一個宏,它執行一些你想做的事情,看看你是否可以修改它來做所有事情。張貼你卡住的位。 – Fionnuala 2012-02-10 13:09:21
爲了更好地理解,在列A中的每個中斷處,您希望下面的數據下面的數據在下一個中斷的上方轉換爲下一個可用的行中的B - *列? – Raystafarian 2012-02-10 13:20:59
@Raystafarian謝謝你的回覆。就是這樣。 – 2012-02-10 13:22:08