根据excel中sheet1中的行数在sheet2中创建列
我想根据excel中sheet1中的行数在sheet2中创建列。 例如 我在表1中有数据根据excel中sheet1中的行数在sheet2中创建列,excel,vba,Excel,Vba,我想根据excel中sheet1中的行数在sheet2中创建列。 例如 我在表1中有数据 ROW1:rowvalue1 ROW2:rowvalue2 ROW3:rowvalue3 我想把它做成活页2 column1 column2 column3 rowvalue1 rowvalue2 rowvalue3 使用复制粘贴特殊的“转置”-您可以手动执行此操作 如果要使用VBA: Sub Macro1() Sheets(1).Activate 'ope
ROW1:rowvalue1
ROW2:rowvalue2
ROW3:rowvalue3
我想把它做成活页2
column1 column2 column3
rowvalue1 rowvalue2 rowvalue3
使用复制粘贴特殊的“转置”-您可以手动执行此操作 如果要使用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
如果工作表(1)指的是第一张工作表,工作表(2)指的是第二张工作表,您可以将其替换为工作表的索引或名称(如果您使用名称,请在其周围使用倒逗号),我假设您的数据从A1开始,代码:
Sheets(1).Range("A1:A" & Sheets(1).Range("A" & ActiveSheet.Rows.Count).End(xlUp).Row).Select
选择该列中最后一个单元格的所有数据
若要在多个列上执行此操作,如果它们都在一行中,则可以转置整个块。如:
亚宏观1()
如果只想执行一些列和行,那么需要在原始代码上创建一个循环
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
请尝试以下代码
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
你好,罗文,谢谢你的快速回复。对于给定的条件,您的解决方案非常有效。但是我在sheet1中有多个列。column1 column2 column3 value1 1 4 val2 2 5 val3 3 6将转换为value1 val2 val3 1 2 3 4 5 6如何修改上述脚本以添加此更改?
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