1

我想根据 excel 中 sheet1 中的行数在 sheet2 中创建列。例如,我在 sheet1 中有数据

ROW1:rowvalue1
ROW2:rowvalue2
ROW3:rowvalue3

我想把它放在 sheet2 中

column1       column2      column3
rowvalue1     rowvalue2    rowvalue3
4

2 回答 2

2

使用复制和粘贴特殊的“转置” - 您可以手动执行此操作。

如果你想使用 VBA:

Sub Macro1()

    Sheets(1).Activate 'open the first sheet
    Sheets(1).Range("A1:A" & Sheets(1).Range("A" & ActiveSheet.Rows.Count).End(xlUp).Row).Select  'select all values in column
    Selection.Copy
    Sheets(2).Select
    ActiveSheet.Range("A1").Select   'this is where your data will be pasted
    Selection.PasteSpecial Paste:=xlPasteValues, Operation:=xlNone, SkipBlanks _
        :=False, Transpose:=True  'transpose=true flips your data around

End Sub

其中 sheet(1) 指第一个工作表,而 sheet(2) 指第二个工作表,您可以将它们替换为工作表的索引或名称(如果您使用名称,请在其周围使用引号),我假设您的数据从A1开始,代码:

    Sheets(1).Range("A1:A" & Sheets(1).Range("A" & ActiveSheet.Rows.Count).End(xlUp).Row).Select

选择该列中最后一个单元格的所有数据。

要在多列上进行这项工作,如果它们都在一行中,您可以转置整个块。例如:子宏 1()

    Sheets(1).Activate 'open the first sheet
    Sheets(1).Range("A1:X" & Sheets(1).Range("A" & ActiveSheet.Rows.Count).End(xlUp).Row).Select  'select all values in column
    Selection.Copy
    Sheets(2).Select
    ActiveSheet.Range("A1").Select   'this is where your data will be pasted
    Selection.PasteSpecial Paste:=xlPasteValues, Operation:=xlNone, SkipBlanks _
        :=False, Transpose:=True  'transpose=true flips your data around

End Sub

如果您只想做一些列行,那么您需要在原始代码上创建一个循环。

Sub Macro1()
    y = Array(1, 3, 5, 9) 'this is the index of columns A,C,E,F
    For x = 0 To 3
    Sheets(1).Activate 'open the first sheet
    RowCount = Sheets(1).Range(Cells(ActiveSheet.Rows.Count, y(x)).End(xlUp), Cells(ActiveSheet.Rows.Count, y(x)).End(xlUp)).Row
    Sheets(1).Range(Cells(1, y(x)), Cells(RowCount, y(x))).Select 'select all values in column
    Selection.Copy
    Sheets(2).Activate
    ActiveSheet.Range(Cells(x + 1, 1), Cells(x + 1, 1)).Select 'this is where your data will be pasted
    Selection.PasteSpecial Paste:=xlPasteValues, Operation:=xlNone, SkipBlanks _
        :=False, Transpose:=True  'transpose=true flips your data around
Next
End Sub
于 2013-08-02T04:47:30.187 回答
1

试试下面的代码

Sub PerformAction()
    Application.ScreenUpdating = False
    With Worksheets(Sheet1.Name)
     LastRow = .Cells(.Rows.Count, 1).End(xlUp).Row
    End With
    For i = 1 To LastRow
     Sheet2.Cells(1, i).Value = Sheet1.Range("A" & i).Value
    Next
    Application.ScreenUpdating = True
End Sub
于 2013-08-02T04:55:10.763 回答