【问题标题】:Excel Average QuestionsExcel 平均问题
【发布时间】:2023-04-02 13:44:01
【问题描述】:

所以我必须擅长工作表。每张表如下所示:

名称值

鲍勃 1234

莎莉 2343

乔 564564

基本上我有 300 个名称和它们的值。我有第二张具有相同名称但具有不同值的工作表。我想知道在多张纸上获得每个人姓名的平均值的最简单方法。我现在只有两张床单,但我希望将来能够做得更多。

【问题讨论】:

  • 你有两张纸还是两个工作簿?

标签: excel average


【解决方案1】:

如果所有工作表中的位置都相同,这相当简单:

=AVERAGE( Sheet1!A1, Sheet2!A1, Sheet3!A1 )

=AVERAGE( Sheet1:Sheet3!A1 )

但是,如果位置不同,则必须使用查找类别中的公式。

【讨论】:

  • 所有工作表中的位置相同。好的,那么公式是否需要按照 A1 的平均值编写,或者我是否将“Sheet 1”替换为实际的工作表名称?
  • @illbill 使用您的示例代码,要获得 Bob 的平均值,您将执行 =AVERAGE(nameofSheet1:nameofLastSheet!B2)
  • +1 如果位置(名称顺序)不同,那么只需对名称进行排序即可省去一些麻烦!
【解决方案2】:

鲍勃在每张纸上都在同一行吗?有没有 Bob 的床单? bob 会出现多次吗?

无论哪种方式,这可能更适合存储在数据库中。 Excel 仍然可以从 DB 中获取内容并显示为电子表格,但在 DB 中按您的意愿进行平均会容易得多。

但是,如果必须是 Excel,那么您需要使用搜索功能在每个工作表中找到 Bob,然后获取他的关联值。 =LOOKUP() 可能有助于搜索/查找部分,但您仍然需要为每个工作表执行此操作。

【讨论】:

  • 是的,每张纸上的名称顺序相同。所有工作表都具有相同的名称。在一张纸上只出现一次。如果我走数据库路线,你有什么建议?
【解决方案3】:

假设您有 3 张同名的工作表,位置相同。在复制这些名称的位置插入第四张纸。在结果列中,输入=AVERAGE(Sheet1:Sheet3!A2),然后复制该公式。
完成。
如果您打算稍后添加更多工作表,请保留一个始终为空的特殊工作表,并制作您的公式:=AVERAGE(Sheet1:Special!A2)

然后您就可以在 Special 之前插入新的工作表,并且您的平均水平需要进行编辑。

【讨论】:

  • 这与工作表的名称无关。只有他们的订单。尝试将“Sheet2”重命名为“炸鸡”。仍然有效。 “特别”没有什么特别之处。
【解决方案4】:

使用数组公式。在第一个单元格中输入以下内容,将“Bob”替换为“Bob”条目的单元格引用,然后按 CTRL+SHIFT+ENTER:

= SUM((name_col2='Bob')*(value_col2))/sum((name_col2='Bob')*1)

【讨论】:

  • name_col2value_col2 是什么?
  • 第二张表中的名称和值列。经过进一步考虑,我误解了 OPs 的问题——如果名字在第二张纸和不同的地方多次出现,这将起作用。
【解决方案5】:

在 Excel 中没有简单的方法。您必须编写 VBA 代码。您需要定义计算所需的所有工作表,遍历所有名称并将它们放入一个数组中。

// [名称、编号、张数] [["鲍勃", 1234, 1], ["莎莉", 2343, 1], ...]

对于每张工作表中的每个名称,您需要检查它是否包含在您的数组中。

如果是这种情况,请增加数字和计数,否则添加带有 [Name, Number, 1] 的新元素

最后遍历您的数组并将名称和数字/计数输出到新工作表。

你需要一些基本的编程技能。

【讨论】:

  • "Excel 中没有简单的方法。"真的吗?你知道这是事实吗? -1
  • 欢迎你证明我错了。但是在发布此类 cmets 之前,请务必这样做 -.-.
  • 尽管你的大写锁定,我不需要。其他人已经这样做了。
  • 如您所见,上述所有解决方案都需要在同一行中使用相同的名称,而我的不需要。
  • OP 说“名称在每张纸上的顺序相同”——但这甚至不是在 Excel 中可行的要求。
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多