在excel中将两列交错在一起

在excel中将两列交错在一起,excel,Excel,我试图找出如何将两列交错/合并在一起: 如何将两列数据合并为一列,如下所示: Name Age Age_1 ======================== A 18 B 45 C 31 D 15 E 62 进入这个 Name Age ============ A 18 B 45 C

我试图找出如何将两列交错/合并在一起:

如何将两列数据合并为一列,如下所示:

Name   Age    Age_1
========================
A       18       
B              45
C       31       
D       15         
E              62  
进入这个

Name   Age    
============
A       18       
B       45      
C       31       
D       15         
E       62      
在我的例子中,我可能有3-4个类似的列和200行

VBA解决方案 要实现:
在项目资源管理器上打开VBE>此工作簿>粘贴代码>单击播放(顶部的绿色按钮)



非VBA解决方案 创建一个helper列(
column D
),并将以下等式放入
D2

'If your columns may contain text
=IF(B2 = "", C2, B2)

'If your columns only contains positive numbers
=MAX(B2, C2)

一旦你把方程放到底部,你会有一个新的列被合并。您可以粘贴为值,只需删除其他列,或只需引用新列,将其他两列保留在那里供参考

如果可以添加结果列,请尝试以下操作:

这将是单元格D3中的公式,您可以向下复制并自定义B3:C3单元格以包括其他列:

=TEXTJOIN("";TRUE;B3:C3)

您可以使用
串联
功能


已编辑 如果您只想允许“数字”,您可以使用以下函数替换您的函数:

=IFERROR(VALUE(CONCATENATE(R3:U3)),"")

IFERROR()
IFERROR(值,[value\u if\u error])

VALUE()
:将日期/时间/数字字符串转换为数字

CONCATENATE()
CONCATENATE(string1,[string2,…])



我希望我能够帮助您

一个选择是合并B为空的每一行中的B:E单元格,然后立即取消合并。这将产生将C:E中的第一个值捕获到B列的效果。Range.SpecialCells可用于将工作减少到B列为空白的行

dim blnk as range

with worksheets("sheet1")

    with .range(.cells(2, "B"), .cells(.rows.count,"A").end(xlup).offset(0, 1))

        for each blnk in .specialcells(xlcelltypeblanks)

            blnk.resize(1, 4).merge
            blnk.unmerge

        next blnk

    end with

end with

一个简单的选择是

  • 选择下面两列中的任意一列中的数据范围

  • 选择其中一列中的数据范围后,按F5 fn键选择空白单元格,然后选择“空白”,如下图所示

    这将是您案例中的最终选择

  • 您现在必须输入一个公式(虽然通过完成上一步选择了目标列中的所有空白单元格,但您现在输入的公式最初将引用当前处于焦点的单元格。当前处于焦点的单元格可以从地址栏中看到)

    按下“=”符号开始键入公式,如下图所示

    现在选择包含需要复制的值的相邻单元格,如下图所示

  • 如上图所示选择后,按Ctrl+Enter键。瞧


  • 希望这有帮助。应该更容易,因为您可以在更实时的场景中尝试此操作。

    打开VBA解决方案?当然,我不熟悉VBA,我确实了解Python,所以我可能可以将注意力集中在它上。列中是否都填充了正整数?如果是这样,max函数对我来说似乎很理想。空白将被视为0。所以在你的第一行
    MAX(18,0)
    会给你18等。。。。如果您有4列,它将看起来像'MAX(18,0,0,0),这将给出相同的结果output@urdearboy,为什么max会为空白单元格或
    单元格返回零?它应该忽略它们。@user11121185是的。好电话-太累了。Logging offffff这是一个很好的解决方案,因为OP需要扩展到多个列,您只需调整
    TEXTJOIN
    中的范围即可实现这一点。唯一值得怀疑的是,由于过时,该功能相对较新,不适用于所有用户version@urdearboy我同意。应该问他使用的是哪个excel版本。我认为这是一个快速的解决方案,也许可以帮助其他人。这应该是
    =--concatenate(p2:s2)
    ?@user11121185-为什么
    --
    ?另外,我认为这是OP最简单的答案,假设他们的表就是这么简单。没有VBA,没有
    TEXTJOIN()
    (以防OP没有该功能)。好主意。双一元数(或
    --
    )将把Santiago已连接的文本字符串转换成一个真数字。我不确定在这种情况下连接将如何工作。这对我不起作用。我得到了#值错误。@user11121185,我已经编辑了答案,只允许数字
    dim blnk as range
    
    with worksheets("sheet1")
    
        with .range(.cells(2, "B"), .cells(.rows.count,"A").end(xlup).offset(0, 1))
    
            for each blnk in .specialcells(xlcelltypeblanks)
    
                blnk.resize(1, 4).merge
                blnk.unmerge
    
            next blnk
    
        end with
    
    end with