COUNTIFS 不可预测 returns 零

COUNTIFS unpredictably returns Zero

我想按国家组来抢一天的广告费
记录的日期和国家/地区分别在 I、J 和 G 列中。

我正在做一个引用 sheet 广告的 VLOOKUP, 搜索键是日期和月份,并根据国家/地区选择值列。

然后为了求平均,我将此查找除以一组国家/地区的广告支出除以该日期、月份和国家/地区的记录数。

=(IF(OR(G4="Spain",G4="Portugal"),VLOOKUP(I4&J4,Advertising!$A:$AK,32,0)*IF(COUNTIFS(I:I,I4,J:J,J4,G:G,{"Spain","Portugal"})>0,1/COUNTIFS(I:I,I4,J:J,J4,G:G,{"Spain","Portugal"}),0),
IF(G4="France",VLOOKUP(I4&J4,Advertising!$A:$AK,33,0)*IF(COUNTIFS(I:I,I4,J:J,J4,G:G,{"France"})>0,1/COUNTIFS(I:I,I4,J:J,J4,G:G,{"France"}),0),
IF(G4="Italy",VLOOKUP(I4&J4,Advertising!$A:$AK,34,0)*IF(COUNTIFS(I:I,I4,J:J,J4,G:G,{"Italy"})>0,1/COUNTIFS(I:I,I4,J:J,J4,G:G,{"Italy"}),0),
IF(OR(G4="Belgium",G4="Netherlands"),VLOOKUP(I4&J4,Advertising!$A:$AK,35,0)*IF(COUNTIFS(I:I,I4,J:J,J4,G:G,{"Belgium","Netherlands"})>0,1/COUNTIFS(I:I,I4,J:J,J4,G:G,{"Belgium","Netherlands"}),0),
IF(G4="Sweden",VLOOKUP(I4&J4,Advertising!$A:$AK,36,0)*IF(COUNTIFS(I:I,I4,J:J,J4,G:G,{"Sweden"})>0,1/COUNTIFS(I:I,I4,J:J,J4,G:G,{"Sweden"}),0),
IF(G4="United Kingdom",VLOOKUP(I4&J4,Advertising!$A:$AK,37,0)*IF(COUNTIFS(I:I,I4,J:J,J4,G:G,{"United Kingdom"})>0,1/COUNTIFS(I:I,I4,J:J,J4,G:G,{"United Kingdom"}),0),
VLOOKUP(I4&J4,Advertising!$A:$AK,31,0)*IF(COUNTIFS(I:I,I4,J:J,J4,G:G,{"Germany","Austria","Bulgaria","Croatia","Cyprus","Australia","Denmark","Estonia","Finland","Greece","Hungary","Ireland","Latvia","Lithuania","Luxembourg","Malta","Norway","Romania","Russia","Slovakia","Slovenia","Switzerland","UAE"})>0,1/COUNTIFS(I:I,I4,J:J,J4,G:G,{"Germany","Austria","Bulgaria","Croatia","Cyprus","Australia","Denmark","Estonia","Finland","Greece","Hungary","Ireland","Latvia","Lithuania","Luxembourg","Malta","Norway","Romania","Russia","Slovakia","Slovenia","Switzerland","UAE"}),0)
)))))))

不幸的是,这为我返回了一个错误。

如您所见,我有一个 IF 子句来避免被零除。

但是,我以某种方式说服自己错误是在求平均值(即用 COUNTIFS 除法)过程中返回的,而不是在 VLOOKUP 中。我确实相信我的 COUNTIFS 非法且无法解释地返回零。

例如对于我在上面发布的主要 sheet 中的第 4 行,

=COUNTIFS(I:I,I4,J:J,J4,G:G,{"Germany","Austria","Bulgaria","Croatia","Cyprus","Australia","Denmark","Estonia","Finland","Greece","Hungary","Ireland","Latvia","Lithuania","Luxembourg","Malta","Norway","Romania","Russia","Slovakia","Slovenia","Switzerland","UAE"})

returns一个零。当我在较少的国家(总是包括奥地利)进行测试时,有时 returns 为零,有时为 1。

样本 sheet 在 https://docs.google.com/spreadsheets/d/1YgK_D7FaTWtKcSts2uDiG7jlTRx2_IGrJ41wZr2qyak/edit?usp=sharing

P.S。我没有足够的声誉,但我会要求一位前辈添加“countifs”标签。

使用match(),像这样:

=arrayformula( 
  iferror( 
    vlookup( 
      I4:I & J4:J, 
      { Advertising!B3:B & Advertising!C3:C, Advertising!B3:AK }, 
      match(G4:G, Advertising!A1:AK1, 0), 
      false 
    ) 
  ) 
)

在样本分布sheet 中查看新的 Solution sheet。公式在单元格 P4.

请注意,并非您搜索关键字中的所有国家/地区名称都出现在数据中。

尝试第 4 行:

=INDEX(IFNA(VLOOKUP(I4:I&"×"&J4:J, 
 {Advertising!B3:B&"×"&Advertising!C3:C, Advertising!B3:AK}, 
 MATCH(G4:G, Advertising!A1:1, ), )))

更新:

=INDEX(IFERROR(1/(1/(IFNA(VLOOKUP(I4:I&"×"&J4:J, 
 {Advertising!B3:B&"×"&Advertising!C3:C, Advertising!AE3:AK}, MATCH(IFNA(VLOOKUP(G4:G, 
 {{"France";"Germany";"Austria";"Bulgaria";"Croatia";"Cyprus";"Australia";"Denmark";"Estonia";"Finland";"Greece";"Hungary";"Ireland";"Latvia";"Lithuania";"Luxembourg";"Malta";"Norway";"Romania";"Russia";"Slovakia";"Slovenia";"Switzerland";"UAE";"Italy";"Belgium";"Netherlands";"Spain";"Portugal";"Sweden";"United Kingdom"}, 
  {"France";"Germany";"Germany";"Germany";"Germany";"Germany";"Germany";"Germany";"Germany";"Germany";"Germany";"Germany";"Germany";"Germany";"Germany";"Germany";"Germany";"Germany";"Germany";"Germany";"Germany";"Germany";"Germany";"Germany";"Italy";"Netherlands";"Netherlands";"Spain";"Spain";"Sweden";"United Kingdom"}},
 2, )), Advertising!AD1:AK1, 0), ))/
 COUNTIFS(I4:I&"×"&J4:J&IFNA(VLOOKUP(G4:G, 
 {{"France";"Germany";"Austria";"Bulgaria";"Croatia";"Cyprus";"Australia";"Denmark";"Estonia";"Finland";"Greece";"Hungary";"Ireland";"Latvia";"Lithuania";"Luxembourg";"Malta";"Norway";"Romania";"Russia";"Slovakia";"Slovenia";"Switzerland";"UAE";"Italy";"Belgium";"Netherlands";"Spain";"Portugal";"Sweden";"United Kingdom"}, 
  {"France";"Germany";"Germany";"Germany";"Germany";"Germany";"Germany";"Germany";"Germany";"Germany";"Germany";"Germany";"Germany";"Germany";"Germany";"Germany";"Germany";"Germany";"Germany";"Germany";"Germany";"Germany";"Germany";"Germany";"Italy";"Netherlands";"Netherlands";"Spain";"Spain";"Sweden";"United Kingdom"}}, 
 2, )), I4:I&"×"&J4:J&IFNA(VLOOKUP(G4:G, 
 {{"France";"Germany";"Austria";"Bulgaria";"Croatia";"Cyprus";"Australia";"Denmark";"Estonia";"Finland";"Greece";"Hungary";"Ireland";"Latvia";"Lithuania";"Luxembourg";"Malta";"Norway";"Romania";"Russia";"Slovakia";"Slovenia";"Switzerland";"UAE";"Italy";"Belgium";"Netherlands";"Spain";"Portugal";"Sweden";"United Kingdom"},
  {"France";"Germany";"Germany";"Germany";"Germany";"Germany";"Germany";"Germany";"Germany";"Germany";"Germany";"Germany";"Germany";"Germany";"Germany";"Germany";"Germany";"Germany";"Germany";"Germany";"Germany";"Germany";"Germany";"Germany";"Italy";"Netherlands";"Netherlands";"Spain";"Spain";"Sweden";"United Kingdom"}}, 
 2, )))))))


或者像这样:

=INDEX(IFERROR(1/(1/(IFNA(VLOOKUP(I4:I&"×"&J4:J, 
 {Advertising!B3:B&"×"&Advertising!C3:C, Advertising!AE3:AK}, 
 MATCH(IFNA(VLOOKUP(G4:G, Sheet3!A:B, 2, )), Advertising!AD1:AK1, 0), ))/
 COUNTIFS(I4:I&"×"&J4:J&IFNA(VLOOKUP(G4:G, Sheet3!A:B, 2, )),   
          I4:I&"×"&J4:J&IFNA(VLOOKUP(G4:G, Sheet3!A:B, 2, )))))))