在OO Calc中连接一定范围内的单元格

8

我有一列A,其中包含以下单元格:

A1: Apple
A2: Banana
A3: Cherry

我希望有一个公式可以将它们串联在一个单元格中,就像这样:
"Apple, Banana, Cherry"

我无法理解为什么连接范围还不是一件事。这对于每种编程语言来说都是基本的(从数组到字符串),但是电子表格却让你跳过很多步骤。即使它们无法处理多维数组,它们也应该毫无问题地处理单个维度。但是现在你必须编写宏或逐个手动编码所有单元格。这是电子表格中最愚蠢的事情,毫无疑问。 - Mageician
4个回答

7

我不确定它是否被植入OpenOffice,但在它的表亲LibreOffice Calc中,自版本5.2起,你就有了这个函数:TEXTJOIN

TEXTJOIN(delimiter, skip_empty, string1[, string2][, …])

delimiter是文本字符串,可以是范围。

skip_empty是一个逻辑(TRUE或 FALSE,1或0)参数。当为TRUE时,空字符串将被忽略。

string1[, string2][,…]是包含要连接的文本的字符串或对单元格或范围的引用。 范围按行遍历(从上到下)。

示例: =TEXTJOIN(",",1,A1:A10)

更多信息请查看: https://help.libreoffice.org/6.3/en-US/text/scalc/01/func_textjoin.html?DbPAR=CALC#bm_id581556228060864


2
一种适用于长列表的不同方法是将A1复制到B1,在其前面添加",并在B2中输入:
“最初的回答”
 =B1&", "&A2&IF(A3="";"""";"")

然后双击单元格B2的填充手柄(在其右下角的小方块)。结果应该出现在列B中,列表中最后一个条目所在的行。


1
截至Apache OpenOffice Calc 4.1.7版本,仍没有简单的解决方案。CONCATENATE不接受单元格范围,也没有像LibreOffice一样的TEXTJOIN函数。然而,有一个解决方法。
这本质上是pnuts' answer的重复,但希望通过图片来帮助。他的答案明确地解决了使用分隔符分隔项以及开头和结尾引号的问题,因为上面的问题使用了这些。由于一般的问题(如何连接一系列单元格)对许多人都有用,所以我认为我的答案即使我没有做到这一点,仍然应该有用。
在我的情况下,我有一列字母对应已完成的工作集,还有一列字母对应未完成的工作集。字母只出现在每8行一次,所以我不能同时查看它们。我想将所有已完成的字母混合在一个单元格中,以便易于查看,未完成的字母也是如此。
示例删除了每个字母的7个空行,并手动输入哪些字母已完成/未完成以方便起见。

列A是需要拼接的“未完成”列。列C用于执行拼接操作。第2行是第一行,第24行是最后一行。G1显示了易于查看的拼接结果,位于文档顶部附近。

列B和D以及单元格G2使用相同的方法显示“完成”的数据。这里不显示公式。

Overview of the entire worksheet.

在单元格C2中,明确指向A2:
=A2

如果您可能有空白,就像我一样,需要在C2中设置条件来将第一个单元格视为空文本,而不是零注1
=IF(A2<>""; A2; "")

Formula for C2, showing its position relative to A2.

然后,在C3单元格中,将C2和A3连接起来:
=C2 & A3

Formula for C3, showing its position relative to C2 and A3.

复制 C3,然后选择 C4:C24 并粘贴公式以自动填充这些单元格。

Cells C4 to C24 highlighted to show copy paste operation.

无论您在何处需要连接的结果,请引用C24。

Formula for the destination cell that references the result of concatenation.

注释

注1 如果A行顶部有N个单元格为空,且您只是让C2 = A2,则C上的前N行将显示0,并且单个0将被添加到串联结果的开头。这里,使用B和D列来说明问题:

Illustration of the glitch when the first row of B2 is blank and D2 doesn't use a conditional check.


0

可以使用CONCATENATE函数或者&符号进行连接:

=CONCATENATE("""", A1, ", ", A2, ", ", A3, """")

如果需要更强大的功能,请编写一个使用Join的基本宏。

编辑

没有可以连接范围的函数。相反,编写一个基本宏或将CONCATENATE公式拖放到多个单元格中。请参见https://forum.openoffice.org/en/forum/viewtopic.php?f=9&t=5438


抱歉,我的意思是任意范围,比如A1:A3。我表达不清楚了。 - Tony H

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接