如何使用谷歌应用程序脚本从谷歌表中的列中提取具有相应值的唯一数据?

时间:2018-05-30 12:11:07

标签: google-apps-script

我有一张包含35列和1000多行的Google工作表。我想从列号5中仅提取唯一数据,并将所有剩余的34个相应值提取到新工作表中。我的第4行是日期列,因此,当第5列的唯一值被提取到新工作表时,日期应该是最新的。

1 个答案:

答案 0 :(得分: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)

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

接下来,您只标识要唯一排序的列,并通过指定SORT(Sheet!DesiredColumn:DesiredColumn,1,FALSE)来执行此操作。工作表的每个部分必须按相同方向排序才能获得正确的结果。 最后,我们将排序列与同一排序列的UNIQUE数组进行比较,这就是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是您要对数据进行排序的工作表的名称。 希望能够帮助您现在和将来解决数据问题。