【问题标题】:Excel returning multiple values for a date range, with a single date items summedExcel 返回一个日期范围的多个值,其中一个日期项相加
【发布时间】:2019-05-15 18:52:25
【问题描述】:

我对这个问题有相反的疑问:

Excel - Lookup to return multiple values in between date range

以下链接中也给出了上述查询的解决方案:

https://www.get-digital-help.com/2009/12/13/formula-for-matching-a-date-within-a-date-range-in-excel/

但我的查询是对于多个日期范围,我如何找到单个日期的总预订量。

我希望建立一个日历,让我可以计算出我在某一天有多少预订。所有预订都是针对 1 件或多件商品,我希望在某个日期日历范围内的某一天有全部商品。

在右侧的日历上,我希望添加在该指定日期将停留的项目总数。

因此,在示例中,在 12 月 26 日,总共有 6 个项目。 12 月 5 日只有 1 个,而 12 月 1 日则没有。

希望这些数字出现在右侧的日历中。

我尝试过使用 VLOOKUP、LOOKUP、INDEX 和 MATCH。 此外,尝试了提到的 SUMPRODUCT,但那些似乎给出了该范围的单个范围和数字,而不是跨日期范围的多个值。

https://chandoo.org/wp/range-lookup-excel/

我试过的公式是,12 月 26 日的日期是:

=(LOOKUP(H10,((Table1[Date From]):(Table1[Date To])),Table1[Items from]))

=SUMIF(Table1[Item],(LOOKUP(2,1/(Table1[Date From]<=H10)/(Table1[Date To]>=H10))))

=INDEX(Table1[Item from],MATCH(H10,LOOKUP(H10,Table1[[Date From]:[Date To]])))

【问题讨论】:

  • 另一个接近的解决方案是:contexturesblog.com/archives/2013/02/26/…
  • 您的数据屏幕截图对于进行适当的故障排除几乎毫无用处。它不能被复制/粘贴到工作表中。可以尝试 OCR 程序,或手动输入。不得不做其中任何一个都会让那些可能会帮助你的人感到沮丧。为了使数据有用,请编辑您的问题以将其发布为文本,可能使用此Markdown Tables Generator,或者可能将工作簿(已删除敏感信息)上传到某个公共网站并在您的原始问题中发布链接
  • @RonRosenfeld,谢谢你的回答,它工作得很好! :-) 我试图复制确切的内容,但似乎图像操作是默认操作。下次会将 excel 上传到公共站点并用作示例参考。

标签: excel date excel-formula calendar


【解决方案1】:

12 月 26 日(并保持原来的结构

=SUMIFS(Bookings[[Items]:[Items]],Bookings[[Date From]:[Date From]],"<=" &H10,Bookings[[Date To]:[Date To]],">="&H10)

请注意,我使用了绝对地址结构化引用表单,因此您至少可以填充/拖动一行,而无需更改表中的列。

如果您想让事情变得更简单,您可以将 H10 引用替换为计算引用,但代价是使用了 OFFSET,这是一个 volatile 函数。

=SUMIFS(Bookings[[Items]:[Items]],Bookings[[Date From]:[Date From]],"<=" &OFFSET(H$1,ROW()-2,0),Bookings[[Date To]:[Date To]],">="&OFFSET(H$1,ROW()-2,0))

您还可以使用INDEX 函数构造一个计算单元格引用,该函数将是非易失性的。

【讨论】:

    【解决方案2】:

    用数组公式更新答案

    很抱歉没有理解您的第一个请求。

    您可以在“单个单元格”中使用以下数组公式

    {= SUM( IF( (E2 >=$B$2:$B$8 ) * (E2<=$C$2:$C$8) ; $A$2:$A$8 ; 0 ))} 
    

    其中e 列包含目标日期,abc 列包含itemsfromto

    此公式可扩展和复制到其他单元格,其中e2 将针对每个目标日期进行相对更改。这很容易适应您的月表。将公式放在第一个日期下方,然后水平展开并复制/粘贴到其他行。

    看图:

    旧答案

    • 使用您的目标日期创建一个单独的单元格。假设$e$1
    • e2 上创建这个公式:=if( and( $e$1 &gt;= c2 ; $e$1 &lt;= d2 ); a2; 0)
    • 将其展开并在底部求和。

    对不起,图片中的葡萄牙语公式(se = if ; e = and):

    【讨论】:

    • 谢谢你,我已经尝试过了,但是它使解决方案过于复杂和冗长。我将不得不为此解决方案中的每个日期创建一个列,然后对其进行总结。任何时候新的时间到来,行(和列)都会不断增加。我想避免这种情况,并以我上面给出的格式为每个日期获取一个数字。如果我给出这个公式,它会返回 0,对于上述情况: =IF(AND(($H$10>=C2),($H$10 =C2:C14),($H$10
    • 我给出的公式 {IF(AND(($H$10>=C2:C14),($H$10
    • 好的,@gagneet,现在我明白你想要什么了。查看更新的答案。
    猜你喜欢
    • 1970-01-01
    • 2020-04-14
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多