excel不规则多列转行

有相同的列,想要把每段列转成行,如图 转成这样

用excel里面的VB吧,把下面的sheet7改成你自己工作簿的名字

Sub 测试()
 
 iCols = Worksheets("sheet7").UsedRange.Columns.Count '获取sheet7这个工作簿有效的列
For y = 1 To iCols - 1 'Y循环每个列
    irows = Sheets("sheet7").Range("A1").End(xlDown).Row '获取A1当前多少行
    ir = Sheets("sheet7").Range("A1").Offset(0, y).End(xlDown).Row ''获取A1偏移0行1列的有效行数是多少
    Sheets("sheet7").Cells(irows + 1, 1).Resize(ir, 1) = Sheets("sheet7").Range("A1").Offset(0, y).Resize(ir, 1).Value '在原来A列有效行的下一行扩展指定大小,来存放之前获取的数据
Next
Sheets("sheet7").Range("b1:xx10000").ClearContents '清除之前B1到XX10000的数据,不清楚把这个去掉
End Sub

如果不要标题修改成

Sub 测试()
 
 iCols = Worksheets("sheet7").UsedRange.Columns.Count '获取sheet7这个工作簿有效的列
For y = 1 To iCols - 1 'Y循环每个列
    irows = Sheets("sheet7").Range("A1").End(xlDown).Row '获取A1当前多少行
    ir = Sheets("sheet7").Range("A1").Offset(0, y).End(xlDown).Row ''获取A1偏移0行1列的有效行数是多少
    Sheets("sheet7").Cells(irows + 1, 1).Resize(ir - 1, 1) = Sheets("sheet7").Range("A2").Offset(0, y).Resize(ir - 1, 1).Value '在原来A列有效行的下一行扩展指定大小,来存放之前获取的数据
Next
Sheets("sheet7").Range("b1:xx10000").ClearContents '清除之前B1到XX10000的数据,不清楚把这个去掉
End Sub

温馨提示:答案为网友推荐,仅供参考
第1个回答  2017-07-15
选择—剪切—粘贴
相似回答