如何将4列合并为1列?

问题描述:

使用office 2010.
一切都在同一张表中。
数据在列A B C & d可以改变(增加或减少每日)如何将4列合并为1列?


我有4列列A B C & d可以增加减少的

      OUTPUT --> IN column F should be 
---A-----B-----C------D---------------------------------------F 
    1  5  8  AP          1 
    2  6  9  BP          2 
    3  7  1  CD          3 
    4   5  QW          4 
                   5 
                   6 
                   7 
                   8 
                   9 
                   1 
                   5 
                   AP 
                   BP 
                   CD 
                   QW 

长度。

+0

护理,告诉我们你试图让这个做了什么? – 2013-02-08 14:34:10

+0

嗨朋友)假设“数据在列A B C&D可以改变” - 我会看VBA。你有尝试过什么吗? – 2013-02-08 14:34:10

+0

我已经知道它可以在1列中组合,但不会跟上范围。 – Mowgli 2013-02-08 14:37:13

这个怎么样?

Sub move() 
    Dim ws As Worksheet 
    Dim outputColumn As Long 
    Dim currentColumn As Long 
    Dim currentOutputRow As Long 

    Set ws = ActiveSheet 
    outputColumn = 6 ' column f 

    For currentColumn = 1 To 4 
     currentOutputRow = ws.Cells(ws.Rows.Count, outputColumn).End(xlUp).Row 
     If (currentOutputRow > 1) Then 
      currentOutputRow = currentOutputRow + 1 
     End If 

     ws.Range(ws.Cells(1, currentColumn), ws.Cells(ws.Rows.Count, currentColumn).End(xlUp)).Copy _ 
      ws.Cells(currentOutputRow, outputColumn) 
    Next 
End Sub 
+0

感谢它的工作,但仍然很少的事情,它也包括行1,它不应该,我知道这将总是弄乱了东西,如果它不是A B C D?如果是I,O,P Q? – Mowgli 2013-02-08 14:50:39

+0

@Mowgli你可以通过修改它从'ws.Cells(1,currentColumn)'复制到'ws.Cells(2,currentColumn)'的最后一行来修改它以使用第2行和第2行。对于列问题,您将不得不创建一个包含所需列的数组,然后循环而不是'1到4' – 2013-02-08 18:27:07

使用以下。它接受你需要改变的范围,并返回一个垂直的数组值。要填充值,请使用数组公式。

Function ToVector(rng As Range) 

    Dim cells() 
    ReDim cells(rng.cells.Count) 

    Dim i As Double 

    For Each cell In rng 

     cells(i) = cell 
     i = i + 1 

    Next cell 

    ToVector = Application.WorksheetFunction.Transpose(cells) 

End Function 

有了这个网站get-digital-help.com/

Combine Columns的帮助但这仅仅是静态的。

我将它转换为动态含义变化范围。

例如我张贴ABCD IN F

为了使配方更加清楚将在名称管理器中输入公式

下面是每一列动态公式(以名马槽云)

ALIST = =OFFSET($A$1,0,0,COUNTA($A:$A),1) 
BLIST = =OFFSET($B$1,0,0,COUNTA($B:$B),1) 
CLIST = =OFFSET($C$1,0,0,COUNTA($C:$C),1) 
DLIST = =OFFSET($D$1,0,0,COUNTA($D:$D),1) 

公式栏F并拖下去

=IFERROR(INDEX(ALIST, ROWS(F$1:$F1)), 
    IFERROR(INDEX(BLIST, ROWS(F$1:$F1)-ROWS(ALIST)), 
    IFERROR(INDEX(CLIST, ROWS(F$1:$F1)-ROWS(ALIST)-ROWS(BLIST)), 
    IFERROR(INDEX(DLIST, ROWS(F$1:$F1)-ROWS(ALIST)-ROWS(BLIST)-ROWS(CLIST)),"")))) 

截图

enter image description hereenter image description here