【问题标题】:Is there an excel function that will let me average a column with a specific title?是否有一个 excel 函数可以让我平均具有特定标题的列?
【发布时间】:2020-08-07 05:03:11
【问题描述】:

例如,在工作表 1 中,我想对工作表 2 中标题为“Hello”的列中的单元格进行平均。有时“你好”在 A 列中,有时在 B 列中。工作簿有一个根据所选日期范围导入数据的代码,并且它并不总是以相同的顺序导入数据。无论哪种方式,我都想对工作表 1 中同一单元格中的列“X”进行平均。我想我可以使用 averageif,但这只有在我一直试图对同一列进行平均时才有效。

【问题讨论】:

  • 使用Range.FindApplication.Match 查找有问题的列。
  • 能否将导入的数据导入为table?因为那样你就可以做=AVERAGE(TableName[Hello])。如果不使用MATCH获取列号,INDIRECT根据列号选择列
  • @Dan 或者只是 INDEX 而不是易变的INDIRECT
  • “工作簿有一个基于所选日期范围导入数据的代码”- 将其包含在此处可能会有用吗?
  • @BigBen 我会试试 INDEX

标签: excel vba


【解决方案1】:

假设 Sheet2 上的列标题从 A1 开始并覆盖 3 列(A 到 C)。您想找到带有“Hello”标题的列的平均值,因此您必须找到它的位置 (MATCH),使其成为一个范围(将 row_num 参数设置为零以考虑整个列的索引),最后是 AVERAGE :

=AVERAGE(INDEX(Sheet2!A:C,0,MATCH("Hello",Sheet2!A1:C1,0)))

【讨论】:

  • 谢谢!!!但是,我收到 #DIV/0 错误,这没有意义,因为它是平均的..
  • 好吧,问题是它只是对列中的第一个单元格进行平均,也就是标题单元格
  • @guppy 这个答案有效。您应该接受它(通过单击绿色复选标记),因为它提供了成功运行的特定说明。此处的示例文件:1drv.ms/x/s!AiO7_3PtXmZ9gvAmD5yUYp4287c1cw?e=kVXUaP
【解决方案2】:

你可以设置一个命名范围

dim rn1 as Range
Set rn1 = Sheets("Sheet1").Rows(1).Find("column_name").Offset(1).Resize(n)

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2019-12-22
    • 2020-06-11
    • 2021-01-07
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2021-09-17
    相关资源
    最近更新 更多