从多个列复制到另一个列

时间:2013-11-20 09:34:27

标签: excel excel-vba vba

我有以下问题:

600列,包含25行数据。

我需要从第2列到第600行复制数据,并将它们放在 column1 中内容的末尾。

我将非常感谢有关如何做到这一点的任何信息。

以下是我目前使用的代码:

Sub test()

  Dim rng1 As Range 
  Dim rng2 As Range 
  Dim cl As Range 
  Dim r As Long 

  Set rng1 = Range("A1", Range("A1048576").End(xlUp)) 
  Set rng2 = Range("B1", Range("B1048576").End(xlUp)) 
  r = rng1.Rows.Count + 1

  For Each cl In rng2 
    Cells(r, 1).Value = cl.Value 
    r = r + 1 
  Next 

End Sub

问题是它只复制B列而不复制其他列(例如C,D,E等)

2 个答案:

答案 0 :(得分:0)

我不会只在Excel中解决这个问题。

  1. 将文件另存为csv文件
  2. 使用类似编辑器(例如Notepad ++)
  3. 打开文件
  4. 替换“;”用“”或“,”
  5. 保存文件
  6. 使用Excel打开文件
  7. 现在你只剩下1列了。

    如果您需要自动完成此操作,则需要一个脚本。

答案 1 :(得分:0)

我猜你需要什么:

<强>测试:

Sub Test()

Dim ws as WorkSheet
Dim C1_lrow, C2_lrow, lcolumn, i as Long
Dim rng as Range

Set ws = Thisworkbook.Sheets("Sheet1") 'change this to what you have

With ws
    C2_lrow = .Range("B" & .Rows.Count).End(xlup).Row
    lcolumn = .Cells(1, .Columns.Count).End(xlToLeft).Column
    Set rng = .Range("B1:B" & C2_lrow)
End With

For i = 0 to lcolumn - 1
    C1_lrow = ws.Range("A" & Rows.Count).End(xlup).Row
    rng.Offset(0, i).copy ws.Range("A" & C1_lrow + 1)
Next i

End Sub

尝试它是否适合你。