EXCEL将3列合并为一列

EXCEL将3列合并为一列,excel,Excel,我有3列,其中包含文本数据,但也有一些空白单元格。 我需要把这3个列组合在一起,去掉空白单元格。 不确定是否最好先对列进行分组,然后去掉空格,或者相反。 这是我到目前为止所拥有的 1) 去掉B栏的空格 =IFERROR(INDEX($B$1:$B$64,(SMALL(IF(($B$7:$B$64)<>"",ROW($B$7:$B$64),""),ROW(B1)))),"") 我只是不知道如何把它们放在一起,这样两者都可以。 谢谢你的帮助。这个公式行得通吗:=iferror(替代品(

我有3列,其中包含文本数据,但也有一些空白单元格。 我需要把这3个列组合在一起,去掉空白单元格。 不确定是否最好先对列进行分组,然后去掉空格,或者相反。 这是我到目前为止所拥有的

1) 去掉B栏的空格

=IFERROR(INDEX($B$1:$B$64,(SMALL(IF(($B$7:$B$64)<>"",ROW($B$7:$B$64),""),ROW(B1)))),"")
我只是不知道如何把它们放在一起,这样两者都可以。
谢谢你的帮助。

这个公式行得通吗:
=iferror(替代品(A1&B1&C1,“,”),”)
这个公式行得通吗:
=iferror(替代品(A1&B1&C1,“,”,”)
在用除灰器一起刨削之后,(让我们现在选择/做)说什么,但关键是

=替换(“/”&A1&“/”&B1&“/”&C1&“/”、“//”、“/”
,或

=SUBSTITUTE("/"&A1&"/"&B1&"/"&C1&"/","//","/"),"/")
或者更好,一次全部替换(“/”&A1&“/”&B1&“/”&C1&“/”、“/”、“/”、“/”、“/”)、“/”、“/”)、“/”

您也可以在合并前在列中包含空白或空单元格的位置进行标记,方法如下:

=substitute(SUBSTITUTE("/"&A1&"/"&B1&"/"&C1&"/","//","/was_blank/"),""),"/ /","/was_sneaky_space/")
在一起挖坑之后,与去火化者一起,(让我们挑选/暂时)按照所说的做,但至关重要的是

=替换(“/”&A1&“/”&B1&“/”&C1&“/”、“//”、“/”
,或

=SUBSTITUTE("/"&A1&"/"&B1&"/"&C1&"/","//","/"),"/")
或者更好,一次全部替换(“/”&A1&“/”&B1&“/”&C1&“/”、“/”、“/”、“/”、“/”)、“/”、“/”)、“/”

您也可以在合并前在列中包含空白或空单元格的位置进行标记,方法如下:

=substitute(SUBSTITUTE("/"&A1&"/"&B1&"/"&C1&"/","//","/was_blank/"),""),"/ /","/was_sneaky_space/")

您没有显示任何源数据和所需结果的示例。但如果您只是连接列,没有分隔符,我建议:

=CONCATENATE(A1,B1,C1)
或者,如果您有
CONCAT
功能:

=CONCAT(A1:C1)
如果您需要分隔符,并且Excel 2016+具有
TEXTJOIN
功能,您可以(对于逗号分隔符)使用:


如果您需要其他内容,请向我们展示一些数据和所需结果。

您没有展示任何源数据和所需结果的示例。但如果您只是连接列,没有分隔符,我建议:

=CONCATENATE(A1,B1,C1)
或者,如果您有
CONCAT
功能:

=CONCAT(A1:C1)
如果您需要分隔符,并且Excel 2016+具有
TEXTJOIN
功能,您可以(对于逗号分隔符)使用:


如果您还需要其他信息,请向我们展示一些数据和期望的结果。

您让我们用您最初的问题措辞来扮演检察官波洛。但现在我明白你的意思了。这就是你想要的。我喜欢方法3。但那里的所有方法都有效。您可以在电子表格中进行合并,以使所有内容都适合您

(虽然这是一种非常懒惰的方法,但可以复制粘贴结果列,只选择该列,然后删除该列上的重复项,这将删除所有空白单元格(1除外)这就足够了,同时保持顺序不变-但忽略这一点。这只是让你知道的。虽然它会删除所有重复项;你可能会在重组中有重复项,而你可能会想保留在结果列中,无论它们出现在哪里。所以如果是这样,不要这样做。仅供参考。)

任何方法都可以为您做到这一点,但就您的目的和工作方式而言,我认为方法3是最好的选择。请尝试并测试它。将以下数组(CSE,按Ctrl-Shift-Enter键)粘贴到单元格A2中,然后向下拖动

=LOOKUP("xxxxx",CHOOSE({1,2},"",INDEX(B:B,SMALL(IF($B$1:$B$9<>"",ROW($B$1:$B$9)),ROWS($B$1:B1)))))
=LOOKUP(“xxxxx”,选择({1,2},”),索引(B:B,小(如果($B$1:$B$9”),行($B$1:$B$9)),行($B$1:B1()()))
警告:如果您在该页面上也使用方法3或简单宏子(方法4),并且在重组列中有任何“数字”格式,它们将显示为空空白单元格(带有公式)或被跳过(带有简短的基本子例程)因此,在A列中,带分隔符的连接还有另一个用途。因此,如果在A列(B列)中使用这些方法中的任何一种,请在重新分组时至少保留一个分隔符,以避免A列中可能出现的遗漏,并避开此问题)

其他可能更好的解决方案,请查看此问题和。做你想做的(也从范围中获取任何填充的单元格。因此,如果在重组列中有任何“仅数字”填充的单元格,这是很好的

我已经对它进行了测试,根据您的图像和范围,根据您的需要对它进行了调整,它将C、F和I中的所有值放入单元格A2中的a列中,不包含任何空白单元格,如您所需

实际上,你甚至不需要重新分组列(尽管,根据你的图像,只要将下面代码中的范围更改为“B1:B50”或“B1:Bwhatever”,如果你仍然需要的话)。代码从您指定的范围中提取数据;提取Col1、提取Col2和提取Col3;并按照您要求的方式和顺序将它们直接放入结果中

Sub trytesting()
For Each cell In Range("c1:c50, f1:f50, i1:i50") 'change the row #s to suit your needs , in my test i did 50 row length data. just an example.
If cell.Value <> "" Then
cell.Copy
Range("A" & lastRow + 1).Offset(1, 0).PasteSpecial xlPasteValues
Range("A" & lastRow + 1).Value = Range("A" & lastRow + 1).Value
lastRow = lastRow + 1
End If
Next
End Sub
Sub-trytesting()
对于范围(“c1:c50,f1:f50,i1:i50”)中的每个单元格,更改行以满足您的需要,在我的测试中,我做了50行长度数据。仅举一个例子。
如果单元格的.Value为“”,则
手机,收到
范围(“A”&lastRow+1).偏移量(1,0).粘贴特殊值
范围(“A”&lastRow+1)。值=范围(“A”&lastRow+1)。值
lastRow=lastRow+1
如果结束
下一个
端接头

你可以做的还有很多,但我希望这是帮助你完成项目的一个开始。但是请注意,这不是一个免费的“指南”或以任何方式提供编码服务。这里没有人免费或付费提供建议/课程,您可以自己做。如果您能在最初的问题中提供更多清晰的信息,并举例说明您在这个过程中尝试做了什么,以及您收到了哪些陷阱,我们将不胜感激。

您让我们用您最初的问题措辞扮演波洛督察继续。但现在我明白你的意思了。这就是你想要的。我更喜欢方法3。但所有方法都有效。你可以在电子表格中合并,让所有方法都对你有效

(虽然这是一种非常懒惰的方法,但可以复制粘贴结果列,只选择该列,然后执行删除操作。)