【问题标题】:Google Spreadsheet: Find the largest number within a date rangeGoogle电子表格:查找日期范围内的最大数字
【发布时间】:2013-12-01 20:55:48
【问题描述】:

我有三列。一个有日期,一个是数值,最后一个是文本值。我想从另一张表中调用上个月内第 n 个最大的数字,然后在它旁边的单元格中调用与该行对应的文本值。为方便起见,列标题被命名为范围,标题为 Amount、Date 和 Name。

Amount  Date         Name
------  -----------  --------
5       11/11/2013   Fred
30      5/11/2013    Bob
5.2     23/11/2013   Jack
40      29/10/2013   Tim

如果我只想获得最大的数字,我可以执行“=Large(Amount;1)”,这将返回 40,但我希望获得上个月的最大金额(不仅仅是过去 30 天) 应该返回 30。

我目前正在做的是提取名称(它将在最大值旁边给出名称,而不是上个月的最大值)是“=INDEX(Name,MATCH(Large(Amount;1),Amount ,0))"

所有这些都在 Google 云端硬盘的电子表格中完成。

谢谢!

【问题讨论】:

    标签: excel google-sheets google-drive-api google-docs


    【解决方案1】:

    你可以使用过滤功能,像这样:

    =LARGE(FILTER(A:A, YEAR(B:B) = 2013, MONTH(B:B) = 11), 1)
    

    这意味着:从基于 B 列过滤的 A 列中获取最大值,其中年份是 2013 年,月份是 11。

    【讨论】:

    • 作为后续,我正在使用: =INDEX(Name,MATCH(LARGE(FILTER(Amount, YEAR(Date) = 2013, MONTH(Date) = 11), 5),Amount ,0)) 获取该行的人名。我正在查看前 5 个金额,在某些情况下,前两个金额相同,但相关名称会不同。上面将使用第一个条目的名称作为 ,0 和 ,1。你知道我怎样才能得到相关的名字吗?
    • 你的意思是你想要一个单元格中的所有关联名称?如果是这样,您可以这样做:=JOIN(", ", FILTER(C:C, A:A >= LARGE(FILTER(A:A, YEAR(B:B) = 2013, MONTH(B:B) = 11), 2), YEAR(B:B) = 2013, MONTH(B:B) = 11)) 这将连接与该月中最大的 2 个数字相关联的名称。不幸的是,我需要复制日期过滤部分。
    • 使用 QUERY 函数可以更轻松地解决关系问题。例如,这应该返回该月的前 5 个名称:=ArrayFormula(QUERY(IF({1,1,0};IF({1,0,0};Name;Amount);Date);"select Col1 where month(Col3) = 10 and year(Col3) = 2013 order by Col2 desc limit 5";0))(请注意,QUERY 选择子句中的 month() 标量函数是从零开始的,即 January = 0)
    • AdamL,太完美了。非常感谢!
    【解决方案2】:

    zord 的回答在 2013 年 11 月看起来不错,但我认为你想要“最后一个月”,所以假设你想要 11 月 15 日之后的任何日期,那么在 12 月 15 日,你可以使用类似的方法,但使用 EDATE 函数来获取一个日期从今天起一个月前,即

    =LARGE(FILTER(A:A,B:B>EDATE(TODAY(),-1)),1)

    【讨论】:

    • 这很好,因为它是一种“设置并忘记它”的东西,但在这种情况下,我正在寻找上个月。所以如果是 12 月 15 日,我想要 Nov1-Nov30。
    猜你喜欢
    • 1970-01-01
    • 2014-05-14
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2017-06-05
    • 2016-09-22
    相关资源
    最近更新 更多