【问题标题】:excel average if-function advancedexcel平均if函数高级
【发布时间】:2014-03-03 23:41:55
【问题描述】:

我正在尝试获取某些特定条目的平均值。我有两列:A-这是一个索引列(例如从 1 到 1000),B 是值列。

我知道有一个 AVERAGE 函数和一个 AVERAGE IF 函数,这可能会对我有所帮助,但我似乎无法让它按我需要的方式工作。 我需要做的是获取B列中与A列中索引的描述匹配的条目的平均值:3 +(3 * n)其中n> = 0。在这种情况下,我需要平均值B 列中的值,其在 A 中的条目是 3、6、9、12、15...

是否可以使用 excel 来执行此操作,或者您认为编写一个程序来获取这些值会更好吗?

感谢您的提示!!

-乔迪

【问题讨论】:

  • @simoco:说得好。我们有什么激励来回答这个(顺便说一句,简单的)问题?
  • @user2013394:每次接受你甚至可以获得 +2 声望!

标签: excel


【解决方案1】:

您可以使用带有 AVERAGE 函数的“数组公式”,例如

=AVERAGE(IF(MOD(A2:A100,3)=0,IF(A2:A100>0,B2:B100)))

CTRL+SHIFT+ENTER

确认

要根据您在 simoco 的答案中的 cmets 进行修改,您可以使用此版本

=AVERAGE(IF(MOD(A2:A100-11,3)=0,IF(A2:A100-11>=0,B2:B100)))

这将是 11、14、17、20 等的平均值。

【讨论】:

  • 其实我没有添加条件>0,因为OP说it goes e.g. from 1 to 1000。但在一般情况下,你是对的
  • 是的,你是对的 - 我没有看到 1 to 1000 所以可能不需要 - 如果 col A 中有零或者即使有空格也可能需要(因为那些会被视为零)
【解决方案2】:

您可以为此使用SUMPRODUCT

=SUMPRODUCT((MOD(A1:A1000,3)=0)*B1:B1000)/MAX(1,SUMPRODUCT(1*(MOD(A1:A1000,3)=0)))

说明:

  • MOD(A1,3) 仅当 A1 中的值采用 3*n 形式时才为您提供 0
  • MOD(A1:A1000,3)=0 为您提供真/假值数组 {FALSE,FALSE,TRUE,FALSE,..}
  • 因为False 被转换为0TRUE 转换为1,当乘以任何值时,(MOD(A1:A1000,3)=0)*B1:B1000 将返回B 列中的值数组,其中A 列中的对应值是形式为3*n(否则为零0):{0,0,12,0,..}
  • SUMPRODUCT((MOD(A1:A1000,3)=0)*B1:B1000) 为您提供B 列中 thouse 值的总和
  • SUMPRODUCT(1*(MOD(A1:A1000,3)=0))A 列中以 3*n 的形式为您提供值的数量
  • 最后一件事:MAX(1,SUMPRODUCT(1*(MOD(A1:A1000,3)=0))) 防止#DIV/0! 错误,以防A 列中没有值3*n

    统一更新: 在一般情况下,比如规则11+3*n 你可以使用MOD(A1:A1000-11,3)=0

【讨论】:

  • +1,尽管可能会被零除。现在,OP,如果这很好,请投票并接受。
  • 我更喜欢使用IFERROR(),而不是任意规避诸如除以零之类的东西。
  • 是的,这很好,因为 OP 可以添加一些错误消息=IFERROR(..,"there is no values 3*n in col A")
  • 非常感谢 simoco,我正在努力理解 formel。我非常了解第一部分和第二部分。这几乎就是我要找的东西,但我认为我的描述有误。当在 A 中搜索 3 的倍数(或任何其他替换它的数字)的条目时,你的 formel 会起作用 - 看起来这就是我正在寻找的东西,因为我在我的帖子中写了这个例子。但我实际上需要一个更具体的formel。例如 (3*n) + 11。不过我想我可能只知道如何使用你的甲酸。所以谢谢你
  • @user2013394,在这种情况下使用MOD(A1:A1000-11,3)=0
猜你喜欢
  • 2015-11-10
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2011-02-01
  • 1970-01-01
相关资源
最近更新 更多