【问题标题】:How to extract unique data from a column in google sheets with corresponding values using google apps script?如何使用谷歌应用脚​​本从谷歌表格中的列中提取具有相应值的唯一数据?
【发布时间】:2018-05-30 12:11:06
【问题描述】:

我有一个 35 列和 1000 多行的谷歌表。我只想从第 5 列中提取唯一数据,并将所有剩余的 34 个对应值提取到新工作表中。我的第 4 行是日期列,所以当第 5 列的唯一值被提取到新工作表时,日期应该是最新的。

【问题讨论】:

  • 酷!你打算怎么做? :)
  • 我没有工作代码,但您可以参考here 获取您需要的功能。

标签: google-apps-script


【解决方案1】:

我在 Quora 上为你回答了这个问题,但由于没有其他人在这里得到答案,我想我会加倍发布它,以便为未来的 Google 搜索提供更多帮助。

下面的代码是一个基本模板,应该可以解决您的问题,但我会更详细地帮助您了解它在做什么以及它是如何工作的。

=FILTER(
    SORT(Work!A:D,1,FALSE),
    SORT(Work!A:A,1,FALSE) = UNIQUE(SORT(Work!A:A,1,FALSE))
 )

=FILTER(range to be filtered, conditions that dictate what will pass the filter, more conditions)

=SORT(Range, by column, (true = ascending,false = descending (reverse) order))

因此,我们应用了 FILTER 并使用第一个 SORT 来指示要以相反的顺序对整个工作表进行排序(我使用了相反的顺序,因为我的日期是按顺序排列的,这在表单输入数据或大多数情况下是典型的标准电子表格设置)。如果您的工作表已经按相反的日期顺序设置,那么您可以删除所有 SORT 公式并说如下内容:

=FILTER(Work!A:D,Work!A:A = UNIQUE(Work!A:A))

现在,在我的示例中,我写道:

SORT(Work!A:D,1,FALSE)

这里要注意的重要部分是,由于这是定义我们希望返回的范围的过滤器部分,因此您必须指定要在输出中看到的所有行。我放了 Work!A:D,因为那是我正在使用的工作表的大小。由于您使用的是 35 列,我相信您会使用 A:AI。

接下来,您只标识您希望唯一排序的列,并通过指定 SORT(Sheet!DesiredColumn:DesiredColumn,1,FALSE) 来实现。工作表的每个部分都必须按相同的方向排序才能得到正确的结果。 最后,我们将排好序的列与同一排好序列的唯一数组进行比较,这就是SORT(Work!A:A,1,FALSE) = UNIQUE(SORT(Work!A:A,1,FALSE)) 的原因。

这只是将行与自身的唯一版本进行比较,并且只会按照您指定的顺序返回唯一选项,以首先获取最新条目。 通过将唯一排序的条目作为排除参数输入主过滤器范围,您将能够检索所需列中每个唯一条目的整行。 因此,您的最终公式可能类似于:

=FILTER(
    SORT(Sheet1!A:AI,1,FALSE),
    SORT(Sheet1!E:E,1,FALSE) = UNIQUE(SORT(Sheet1!E:E,1,FALSE))
 )

其中 Sheet1 是您从中排序数据的工作表的名称。 希望这可以帮助您解决现在和将来的数据问题。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2016-10-08
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多