【问题标题】:Call spill range within dynamic array formula在动态数组公式中调用溢出范围
【发布时间】:2021-04-20 19:46:33
【问题描述】:

我正在尝试使用引用溢出范围的动态数组公式查询存储在 Excel 中的销售列表,但这不起作用。

这里是上下文:

  • 我有一个包含销售额的表格tabSales,其中包含以下数据:日期、客户、金额、年份(使用=YEAR([Date] 计算)
  • 我想在另一张纸上显示给定客户的年销售额,供用户在单元格 B1 中选择(命名为 SelCust

这是我在报告表上尝试过的:

  • 我已使用 UNIQUE 和 FILTER 函数在 D 列上显示所选客户实际购买商品的年份:=UNIQUE(FILTER(tabSales[Year],tabSales[Customer]=SelCust))(单元格 D2 中的公式输入)
  • 然后我尝试使用 SUM 和 FILTER 函数以及 Excel 的溢出范围功能来计算每年向选定客户销售的总金额:=SUM(FILTER(tabSales[Amount],(tabSales[Year]=D2#)*(tabSales[Customer]=SelCust)))(E2 中的公式输入)

很遗憾,最后这个公式很遗憾不起作用:

  • Excel 在 E2 中返回 #N/A
  • 单元格 E2 不会溢出 E3、E4、...

没有溢出让我想知道 FILTER 函数中的溢出范围引用是否被识别...

我怎样才能让这个公式起作用?

Sales table Non-working formula

【问题讨论】:

    标签: excel dynamic-arrays spill-range


    【解决方案1】:

    使用 SUMIFS():

    =SUMIFS(tabSales[Amount],tabSales[Year],D2#,tabSales[Customer],SelCust)
    

    这应该正确地返回一个数组。

    如果想在一个动态公式中同时处理两列,我们可以使用 LET 和 CHOOSE:

    =let(
        slcust,tabSales[Customer],
        amt,tabSales[Amount],
        yr,tabSales[Year],
        unYr,UNIQUE(FILTER(yr,slcust=SelCust)),
        sm,SUMIFS(amt,yr,unyr,slcust,SelCust),
        Choose({1,2},unyr,sm))
    

    【讨论】:

    • 谢谢斯科特,这工作得很好!我现在正在努力用 TEXTJOIN 而不是 SUM 做同样的事情(目标是合并在给定年份订购东西的所有客户的姓名)。您对如何实现这一目标有任何线索吗?
    • 这是一个新问题。如果这对该问题有效,请通过单击答案的复选标记将其标记为正确。新问题得到新帖子
    • 好的。作为这个网站的新手,我需要了解风俗:-)
    猜你喜欢
    • 2014-12-21
    • 2022-01-27
    • 2018-10-03
    • 1970-01-01
    • 2020-09-01
    • 2017-05-31
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多