代码之家  ›  专栏  ›  技术社区  ›  5axola

获取包含google工作表中最后一次出现的值的整行

  •  0
  • 5axola  · 技术社区  · 7 年前

    为了简化场景,可将案例应用于以下输入和所需输出:

    |      Timestamp      | User |  Status  |
    |:-------------------:|:----:|:--------:|
    | 2019-01-03 10:00:30 |   A  | Started  |
    | 2019-01-03 10:01:41 |   B  | Started  |
    | 2019-01-03 10:02:00 |   B  | Finished |
    | 2019-01-03 10:02:14 |   C  | Started  |
    | 2019-01-03 10:03:22 |   A  | Failed   |
    | 2019-01-03 10:00:04 |   C  | Finished |
    

    输出:

    |      Timestamp      | User |  Status  |
    |:-------------------:|:----:|:--------:|
    | 2019-01-03 10:02:00 |   B  | Finished |
    | 2019-01-03 10:03:22 |   A  | Failed   |
    | 2019-01-03 10:00:04 |   C  | Finished |
    

    使用者 最大值(时间戳) 也许索引和匹配是更好的方法

    OFFSET('Sheet1'!$A$1,ArrayFormula(max(if('Sheet1'!$B:$B=$A3, Row('Sheet1'!$B:$B))))-1,column()-1)
    

    对于每个独特的结果,我也尝试了以下方法。

    |      Unique users      |                                     Query                                     |
    |:----------------------:|:-----------------------------------------------------------------------------:|
    | =UNIQUE('Sheet1'!$A:$A) | =QUERY('Sheet1'!$A:$C, "SELECT A, C WHERE B='"&B2&"' ORDER BY A DESC LIMIT 1",0) |
    

    据我所知,将ARRAYFORMULA和QUERY结合起来可能会提高性能,但我一直未能成功。

    1 回复  |  直到 7 年前
        1
  •  1
  •   JPV    7 年前

    假设时间戳位于A列,用户位于B列,状态位于C列

    =Arrayformula(iferror(vlookup(unique (B2:B), sort({B2:B, A2:C}, 2, 0), {2, 3, 4}, 0)))
    
    推荐文章