具有SUM函数的数组公式返回错误的结果

时间:2019-09-24 06:57:42

标签: excel excel-formula array-formulas

我有一些交易数据,例如:

Column B|Column C

TRUCK_ID|TON

TR-12   |60

TR-10   |65

TR-09   |56

TR-12   |75

TR-10   |70

*实际上我有成千上万的数据

那我想算一下有多少辆卡车过剩,哪里 负载限制如下:

Column F|Column G   
TR-09|50

TR-10|60

TR-12|65

我使用SUM,IF,INDEX,MATCH和ROW的组合

=SUM(IF(C4:C8>INDEX(G4:G6,MATCH(INDEX(B4:B8,ROW(B4:B8)-3),F4:F6,0)),1))

但是当我仅选择一个(单个)单元格并单击CSE

它返回“ 2”(不正确)

如果我选择多个单元格(假设是2个单元格),然后点击CSE

它返回“ 4”(正确)

我希望我只放入并选择一个单元格,然后返回正确的结果。任何人都可以帮助我

2 个答案:

答案 0 :(得分:2)

您可以尝试:

=SUMPRODUCT((B2:B6=TRANSPOSE(F2:F4))*(C2:C6>TRANSPOSE(G2:G4)))

注意:这是一个数组公式,需要通过 Ctrl Shift Enter

进行确认

您还可以在H2中添加一个帮助列:

=COUNTIFS($B$2:$B$6,F2,$C$2:$C$6,">"&G2)

然后向下拖动,最后得出H2:H。


屏幕截图 SUMPRODUCT

enter image description here

截屏 助手列:

enter image description here

答案 1 :(得分:0)

EDIT#2

尝试如下修改原始公式:

=SUM(IF(C4:C8>INDEX(G4:G6,MATCH(INDEX(B4:B8,N(IF(1,ROW(B4:B8)))-3),F4:F6,0)),1))
  

使用 N IF 函数实际上可以克服INDEX的问题,它仅返回单个单元格范围内的第一个值。

或者,假设您具有以下命名范围

  • Truck_ID 是B列中的数据;
  • TON 是列C中的数据;
  • List_ID 是F列中的数据;
  • List_TON 是G列中的数据。

Solution

您可以使用以下公式返回所需结果4假定查找表以升序排序

=SUMPRODUCT(--(LOOKUP(Truck_ID,List_ID,List_TON)<TON))

{=SUM(IF((LOOKUP(Truck_ID,List_ID,List_TON)<TON),1))} 'Entered by CSE as array formula
  

您的 INDEX 函数INDEX(G4:G6,MATCH(INDEX(B4:B8,ROW(B4:B8)-3),F4:F6,0))返回一个单列数组,该数组将仅返回单个单元格中65 的数组的第一个值。因此,您的完整公式实际上是将 TON 中的每个值与65进行比较。结果,只有2个值大于65。如我的示例的D列所示,在这种情况下,更适当地使用 INDEX 的方法是突出显示范围D4:D8并输入数组公式,如公式栏中所示。然后,您可以对所有TRUE结果进行 SUM 。如果您在多个单元格中输入完整公式,则 INDEX 公式实际上将返回完整数组而不是第一个值,因此比较将返回正确的结果。