在Excel中将两列交织在一起

时间:2019-02-28 04:26:06

标签: excel

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

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

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行

5 个答案:

答案 0 :(得分:3)

VBA解决方案

要实施:Open VBE > On Project Explorer > ThisWorkbook > Paste Code > Click Play (Green button up top)


Option Explicit

Sub Merger()

Dim ws As Worksheet: Set ws = ThisWorkbook.Sheets("Sheet1")
Dim Target As Range, LR As Long

LR = ws.Range("B" & ws.Rows.Count).End(xlUp).Row

For Each Target In ws.Range("B2:B" & LR)
    If Target = "" Then
        Target.Value = Target.Offset(0, 1).Value
    End If
Next Target

'If you want to delete Column C after
ws.Range("C1").EntireColumn.Delete

End Sub

非VBA解决方案

创建一个帮助列(Column D)并将以下等式放入D2

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

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

将方程式放到最下面时,将合并一个新列。您可以将其粘贴为值,然后删除其他列,或者引用新列,然后在其中保留其他两个列作为参考

答案 1 :(得分:3)

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

enter image description here

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

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

答案 2 :(得分:3)

您可以使用CONCATENATE功能

enter image description here


已编辑

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

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

enter image description here

IFERROR()IFERROR(value, [value_if_error])

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

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


希望我能为您提供帮助

答案 3 :(得分:1)

一种更简单的选择是

  1. 在如下两列中选择数据范围,

    fillupBlanksWithDataFromAdjacentColumn-1

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

    fillupBlanksWithDataFromAdjacentColumn-select-blank-cells

    这将是您所选择的结果,

    fillupBlanksWithDataFromAdjacentColumn-select-blank-cells-result

  3. 您现在必须输入一个公式(虽然通过完成上一步选择了目标列中的所有空白单元格,但是现在输入的公式最初将参考当前处于焦点状态的单元格。可以从地址栏中知道当前焦点所在的单元格)

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

    fillupBlanksWithDataFromAdjacentColumn-enter-formula-in-blank-cell

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

    fillupBlanksWithDataFromAdjacentColumn-enter-formula-in-blank-cell-select-copy-source-cell

  4. 如上图所示选择后,按Ctrl + Enter。瞧!

    fillupBlanksWithDataFromAdjacentColumn-enter-formula-in-blank-cell-select-paste-down-to-all-by-Ctrl+Enter

希望这会有所帮助。应该会更容易,因为您可以在更实时的场景中进行尝试。

答案 4 :(得分:0)

一个选项是合并B:E的每一行中的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