Warning: file_get_contents(/data/phpspider/zhask/data//catemap/5/excel/26.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Excel 从多个列复制到另一列_Excel_Vba - Fatal编程技术网

Excel 从多个列复制到另一列

Excel 从多个列复制到另一列,excel,vba,Excel,Vba,我有以下问题: 600列,包含25行数据 我需要将数据从第2列复制到第600列,并将它们放在第1列内容的末尾 任何关于我如何做到这一点的信息都将不胜感激 以下是我目前使用的代码: 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 = R

我有以下问题:

600列,包含25行数据

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

任何关于我如何做到这一点的信息都将不胜感激

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

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
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

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

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

  • 将文件另存为csv文件
  • 使用编辑器(如记事本++)打开文件
  • 将“;”替换为“或”
  • 保存文件
  • 用Excel打开文件
  • 现在只剩下一列了


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

    我想您需要的是:

    测试:

    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
    
    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
    

    如果它对你有用,就试试。

    嗨,如果你能把你尝试过的东西和你遇到的困难都写进去,那就太好了。如果您在尝试中遇到错误,请清楚地说明。我是脚本编写的新手。我一直试图解决这个问题,直到我在这个网站上找到了如下解决方案:Sub test()Dim rng1 as Range Dim rng2 as Range Dim cl as Range Dim cl as Range Dim r as Long Set rng1=Range(“A1”,Range(“A104576”).End(xlUp))Set rng2=Range(“B1”,Range(“B1048576”).End(xlUp))r=rng1.Rows.Count+1对于rng2单元格中的每个cl(r,1).Value=cl.Value r=r+1下一个端点子脚本的问题是它只复制B列,而不复制其他列(c.d、e等)。这在同一张表上?将所有列复制到column1是什么意思?连接数据还是只复制整行?如果是后者,请参阅我的帖子。可能我需要澄清我的问题。我的excel表格的内容如下:A1..A25;B2..B25,C2..C25,D2..D25,。。。。我要复制B2..B25并将其粘贴到A26,..A50,复制C2..C25并粘贴到A51..A75等。我需要一个脚本。您的解决方案非常完美,完全符合我的要求。如果您首先必须将数据从行排列到列(转置),然后复制第二个,要连接或附加到第一列的第三列etc?