在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
一个简单的选择是
希望这有帮助。应该更容易,因为您可以在更实时的场景中尝试此操作。打开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