【发布时间】:2023-04-02 13:44:01
【问题描述】:
所以我必须擅长工作表。每张表如下所示:
名称值
鲍勃 1234
莎莉 2343
乔 564564
基本上我有 300 个名称和它们的值。我有第二张具有相同名称但具有不同值的工作表。我想知道在多张纸上获得每个人姓名的平均值的最简单方法。我现在只有两张床单,但我希望将来能够做得更多。
【问题讨论】:
-
你有两张纸还是两个工作簿?
所以我必须擅长工作表。每张表如下所示:
名称值
鲍勃 1234
莎莉 2343
乔 564564
基本上我有 300 个名称和它们的值。我有第二张具有相同名称但具有不同值的工作表。我想知道在多张纸上获得每个人姓名的平均值的最简单方法。我现在只有两张床单,但我希望将来能够做得更多。
【问题讨论】:
如果所有工作表中的位置都相同,这相当简单:
=AVERAGE( Sheet1!A1, Sheet2!A1, Sheet3!A1 )
或
=AVERAGE( Sheet1:Sheet3!A1 )
但是,如果位置不同,则必须使用查找类别中的公式。
【讨论】:
鲍勃在每张纸上都在同一行吗?有没有 Bob 的床单? bob 会出现多次吗?
无论哪种方式,这可能更适合存储在数据库中。 Excel 仍然可以从 DB 中获取内容并显示为电子表格,但在 DB 中按您的意愿进行平均会容易得多。
但是,如果必须是 Excel,那么您需要使用搜索功能在每个工作表中找到 Bob,然后获取他的关联值。 =LOOKUP() 可能有助于搜索/查找部分,但您仍然需要为每个工作表执行此操作。
【讨论】:
假设您有 3 张同名的工作表,位置相同。在复制这些名称的位置插入第四张纸。在结果列中,输入=AVERAGE(Sheet1:Sheet3!A2),然后复制该公式。
完成。
如果您打算稍后添加更多工作表,请保留一个始终为空的特殊工作表,并制作您的公式:=AVERAGE(Sheet1:Special!A2)。
然后您就可以在 Special 之前插入新的工作表,并且您的平均水平需要进行编辑。
【讨论】:
使用数组公式。在第一个单元格中输入以下内容,将“Bob”替换为“Bob”条目的单元格引用,然后按 CTRL+SHIFT+ENTER:
= SUM((name_col2='Bob')*(value_col2))/sum((name_col2='Bob')*1)
【讨论】:
name_col2 和 value_col2 是什么?
在 Excel 中没有简单的方法。您必须编写 VBA 代码。您需要定义计算所需的所有工作表,遍历所有名称并将它们放入一个数组中。
// [名称、编号、张数] [["鲍勃", 1234, 1], ["莎莉", 2343, 1], ...]
对于每张工作表中的每个名称,您需要检查它是否包含在您的数组中。
如果是这种情况,请增加数字和计数,否则添加带有 [Name, Number, 1] 的新元素
最后遍历您的数组并将名称和数字/计数输出到新工作表。
你需要一些基本的编程技能。
【讨论】: