【问题标题】:Arrayformula to find next value for criteria in Google SheetsArrayformula 在 Google 表格中查找标准的下一个值
【发布时间】:2020-05-23 00:37:22
【问题描述】:

我的工作表中有表单回复选项卡,我在其中整理包含起始日期时间戳、编号和名称的信息。我想创建一个数组公式,它将用 datetimestamp 填充最后一列,用于数据集中的下一个名称条目。我想避免提交完成日期时间戳的需要。

我试过了

=ARRAYFORMULA(if(A:A="","",vlookup(C:C,{C2:C20,A2:A20},2,false))) 

希望 arrayformula 会在填充更多行时更改搜索范围,但它没有。

它必须是数组公式,它将在第一行,不能使用单个公式并复制和粘贴它,因为它的表单响应会为每个答案添加行

        Now


+---------------------+--------------+--------+
|      Timestamp      | Group number | Picker |
+---------------------+--------------+--------+
| 29/01/2020 21:31:45 |         3001 | Ben    |
| 30/01/2020 19:42:20 |         3002 | Ben    |
| 30/01/2020 20:04:51 |         3006 | Jon    |
| 30/01/2020 20:05:08 |         3018 | Jon    |
| 30/01/2020 22:31:45 |         3019 | Ben    |
| 31/01/2020 23:31:45 |         3020 | Jon    |
| 01/02/2020 21:31:45 |         3021 | Ben    |
+---------------------+--------------+--------+





    Expected



+---------------------+--------------+--------+---------------------+
|      Timestamp      | Group number | Picker |    ARRAYFORMULA     |
+---------------------+--------------+--------+---------------------+
| 29/01/2020 21:31:45 |         3001 | Ben    | 30/01/2020 19:42:20 |
| 30/01/2020 19:42:20 |         3002 | Ben    | 30/01/2020 22:31:45 |
| 30/01/2020 20:04:51 |         3006 | Jon    | 30/01/2020 20:05:08 |
| 30/01/2020 20:05:08 |         3018 | Jon    | 31/01/2020 23:31:45 |
| 30/01/2020 22:31:45 |         3019 | Ben    | 01/02/2020 21:31:45 |
| 31/01/2020 23:31:45 |         3020 | Jon    |                     |
| 01/02/2020 21:31:45 |         3021 | Ben    |                     |
+---------------------+--------------+--------+---------------------+

【问题讨论】:

  • 与所需输出的示例共享您的工作表副本
  • 同意 Player0。这是一个相当“知名”的解决方案,但它的定制足以让看到工作表很重要

标签: arrays google-sheets google-sheets-formula array-formulas gs-vlookup


【解决方案1】:

尝试:

={""; ARRAYFORMULA(IFNA(VLOOKUP(C2:C, SORT({C2:C, A2:A}, 2, 0), 2, 0)))}


更新:

={"ARRAYFORMULA"; ARRAYFORMULA(IFNA(VLOOKUP(
         C2:C&COUNTIFS(C2:C, C2:C, ROW(C2:C), "<="&ROW(C2:C))+1, 
 FILTER({C2:C&COUNTIFS(C2:C, C2:C, ROW(C2:C), "<="&ROW(C2:C)), A2:A}, 
 ROW(C2:C)-MATCH(C2:C, C2:C, 0)<>1), 2, 0)))}

【讨论】:

  • 我有一个新技巧,如果他发布一张表,我期待着向你展示
  • 获取名称的最新日期戳,所以它不是我要找的
  • 干得好。我在使用我认为我知道的技巧时遇到了麻烦。它可能仅适用于向后看时间戳的 vookup。在您的回答中,该范围内的 FILTER 是否有任何理由?我发现这个工作: =ARRAYFORMULA({"Arrayformula";IFERROR(VLOOKUP(C2:C&COUNTIFS(C2:C,C2:C,A2:A,"
  • 感谢您的帮助!
【解决方案2】:

终于弄清楚了如何使用我为这些类型的查找想到的新技巧来做到这一点。

我知道@player0 已经很好地回答了这个问题!,但是如果将来有人偶然发现这个问题,这也应该适用于这个以及其他类似类型的查找:

=ARRAYFORMULA({"Arrayformula";IFERROR(-1/(1/(SUBSTITUTE(LOOKUP(C2:C&9^9-A2:A-0.0001,SORT(C2:C&9^9-A2:A)),C2:C,"")-9^9)))})

【讨论】:

  • 不错!请注意,用于查找下一个数字,而不是文本。
猜你喜欢
  • 2020-06-01
  • 2021-08-19
  • 1970-01-01
  • 2022-08-03
  • 1970-01-01
  • 2021-05-23
  • 1970-01-01
  • 1970-01-01
  • 2022-08-08
相关资源
最近更新 更多