将多个列堆叠到一个?

时间:2012-02-25 07:11:24

标签: google-sheets

我正在使用Google SpreadSheet,而我正在尝试使用包含单词列表的多个工作表。在最后一页上,我想创建一个汇总列表,它是列中所有值的组合。我使用= CONCATENATE()进行排序工作,但是它把它变成了一个字符串。有什么方法可以将它保留为列列表吗?

以下是列的示例:

Sheet 1中

  • 苹果
  • 香蕉

Sheet 2中

  • 菠萝
  • 草莓

FinalSheet

  • 苹果
  • 香蕉
  • 菠萝
  • 草莓

8 个答案:

答案 0 :(得分:67)

更新答案

我在那里 是一个更好的解决方案。它已在下面发布,但我在这里复制它,所以它在最佳答案:

=unique({A:A;B:B})

警告:在某些情况下,这将包括一个空白单元格(例如,如果在第一个列表的末尾有一个空白单元格。)

如果您不关心订购和拖尾空白单元格,那么简单的sort()将会清理:

=sort(unique({A:A;B:B}))

否则filter()可以像这样删除空白:

=filter(unique({A:A;B:B}),NOT(ISBLANK(unique({A:A;B:B}))))

以下是旧 已弃用的 答案

我确信这是“错误的做法”,因为这似乎是一个非常简单和常见的任务,我觉得我必须错过一些东西,因为它不应该需要这样一个过度的解决方案。

但这有效:

=UNIQUE(TRANSPOSE(SPLIT(JOIN(";",A:A,B:B),";")))

如果您的数据包含任何';'您自然需要更改分隔符的字符。

答案 1 :(得分:9)

基本的方法就是把它做成像这样的数组

={A1:A10;B1:B10...etc}

我发现这个方法的问题是,如果你有很多列,那么它非常耗时。 我做了一些搜索,发现了这篇文章:

Joining Multiple Columns Into One Sorted Column in Google Spreadsheets

核心公式是

=transpose(split(arrayformula(concatenate(if(len(A:Z)>0,A:Z&";",""))),";"))

显然,您将A:Z替换为您想要使用的任何范围。 如果您想进行一些排序或删除重复项,您只需将上述公式包装在SORT()和/或UNIQUE()方法中,就像这样..

=sort(unique(transpose(split(arrayformula(concatenate(if(len(A:Z)>0,A:Z&";",""))),";"))))

希望这会有所帮助。 快乐编码每个人:)

答案 2 :(得分:7)

您可以使用:

=unique({A1:A;B1:B})

在这里工作完美!

答案 3 :(得分:5)

更简单:

={sheetone!A2:A;sheettwo!A2:A}

答案 4 :(得分:5)

unique()函数删除了空格,但对我没有帮助,因为我的一些行重复了。相反,我首先按len()过滤列以删除空白单元格。然后我以相同的方式将列组合在一起。

={filter(A:A, len(A:A)); filter(B:B, len(B:B))}

答案 5 :(得分:1)

有一个名为flatten的未公开功能

flatten(A1:B2)

如果2d范围不在一个范围内,则可以先使用“&”号或类似技术创建一个范围。之后,可以在生成的2d范围内调用展平。下面的示例有些夸张,但是在处理动态2d范围时(它不易使用基本解决方案)很好。

flatten(ARRAYFORMULA(SPLIT(ARRAYFORMULA(A1:A2&";"&C3:C4), ";")))

本文还展示了如何使用查询中的skipping子句轻松地展平范围。

答案 6 :(得分:0)

@

  • 根据需要使用数据中缺少的首选定界符(而不是1
  • 第一个TRUEA:C)参数表示 IGNORE EMPTY ,这在这种情况下非常重要。
  • D1:D5UNIQUE是要合并的范围
  • 所有值都保留在那里-不使用// THIS IS THE COMMON CONFIGURATION FOR DEVELOPMENT AND PRODUCTION ENVIRONMENT const commonPaths = require("./common-paths"); const commonRules = require("./common-rules"); const webpack = require("webpack"); const CaseSensitivePathsPlugin = require("case-sensitive-paths-webpack-plugin"); const {CleanWebpackPlugin} = require('clean-webpack-plugin'); const CopyWebpackPlugin = require('copy-webpack-plugin'); module.exports = { mode: "none", resolve: { extensions: [".js", ".ts", ".tsx", ".json"] }, entry: { index: [ commonPaths.polyFillsPath, commonPaths.eventPolyFills, commonPaths.projectRoot ] }, module: commonRules, plugins: [ new CleanWebpackPlugin(), new CaseSensitivePathsPlugin(), new webpack.WatchIgnorePlugin([ /\.js$/, /\.d\.ts$/ ]), new CopyWebpackPlugin([ { from: 'src/delivery-tracking/_assets/img/', to: 'delivery-tracking/_assets/gen/img/' }, { from: 'src/extras-card/_assets/img/', to: 'extras-card/_assets/gen/img/' }, { from: 'src/modal/_assets/img/', to: 'modal/_assets/gen/img/' }, { from: 'src/progress-overlay/_assets/img/', to: 'progress-overlay/_assets/gen/img/' }, { from: 'src/chat/_assets/img/', to: '_assets/gen/img/' }, ]) ] };

答案 7 :(得分:-3)

尝试将CONCATENATE参数与

一起使用
=ArrayFormula(EXPAND(...))