concatenation - 如何将多组列连接成多个新列?

标签 concatenation libreoffice-calc

我有一个电子表格。 60 行,~100 列。

我希望连接每组 3 列的数据,以生成约 30 列“合并”数据。

例如目前栏目包括“战士1”、“战士2”、“战士3”、“巫师1”、“巫师2”、“巫师3”等。

我希望将每组数据放入每个 I 列中,标记为“战士”、“巫师”等,并将三列中的数据“合并”,并使用分隔符 (:)。我需要包含空单元格。

我知道我可以使用 CONCATENATE(B2, C2, D2) 来组合一组单元格中的数据。

我可以将此公式向下拖动以填充该列。

但是,如果我向侧面(向右)拖动公式,它会将每个值增加 1,而不是我需要的 3。

例如我希望列变成 (B2, C2, D2), (E2, F2, G2), (H2, I2, J2) 等,但我得到 (B2, C2, D2), (C2, D2, E2), (D2、E2、F2)...

最佳答案

您可以使用OFFSET函数

我们首先假设您的数据跨越 A 列到 CU 列 (1-99),并且“合并”数据跨越 CW 列到 EC 列 (101-133)。

从单元格 CW2 开始(假设您的标题位于第 1 行),编写此公式(我添加了换行符以使其更易于阅读):

=CONCATENATE(
    OFFSET($A2, 0, 3 * (COLUMN() - 101)), 
    OFFSET($B2, 0, 3 * (COLUMN() - 101)), 
    OFFSET($C2, 0, 3 * (COLUMN() - 101))
)

这会将原始数据集的三个相邻列连接在一起,当您将公式拖动填充到接下来的 32 列中的每一列时,每个合并的列将分别偏移三个单元格,将它们排列起来以连接您的所有数据。

您可能需要更改该函数中的重要部分以供使用:

  • $A2 重要的是从整个数据集的起始列开始,而不仅仅是与每个合并集相关的列。除此之外,如果您的数据从 C 列、E 列或 Z 列或其他位置开始,只要引用第一列,该方法仍然有效。
  • 3 是对分组依据的列数的引用。如果您有像“战斗机1”“战斗机2”“战斗机3”“战斗机4”“巫师1”“巫师2”“巫师3”“巫师4”这样的系列......,那么你可以使用 4 而不是 3。
  • 101 是“合并”数据开头的 1 索引列。这样,COLUMN()-101 的第一列为 0,第二列为 1,第三列为 2,依此类推。然后乘以上面的 3,得到 0, 3, 6, 9, ...

关于concatenation - 如何将多组列连接成多个新列?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/57485817/

相关文章:

phpexcel - LibreOffice Calc 中的自动高度

string - 当我从 Excel 复制并粘贴到记事本时,每个引号后都会有额外的引号

python - 将使用 lambda 的字符串连接转换为 f 字符串

date - 给定 ISO 8601 周数,在 LibreOffice Calc 电子表格中获取该周第一天的日期

vba - 使用宏获取路径时出错

java - 性能 (JAVA) ~ 循环中的字符串连接,带有前置和附加

linux - 连接两首或多首歌曲

r - 连接避免 NA 以生成多行变量

libreoffice - 如何将 LibreOffice 功能使用到 Basic 中?