如何在excel中计算复杂条件下的平均值

如何在excel中计算复杂条件下的平均值,excel,Excel,我将尽我所能解释这一点 我有一个用SQL提取的数据表。我的目标是计算列中某些单元格的平均值。有一个条件是单元格所在的行包含一个特定的字母,如“B” 我在处理建筑许可证,他们都有一个id表:“12-3456-12-B”。这封信类似于许可证的类型,这就是我想要划分平均值的方式。在我希望从中提取平均值的一栏中,是一个与上述许可证上的修复程度相似的百分比 因此,我想要的是对各个许可证类型进行平均程度的维修 从逻辑角度来看:“如果当前行中的单元格B包含,则使用该值,即“-B” 干杯 到目前为止你试过什么?

我将尽我所能解释这一点

我有一个用SQL提取的数据表。我的目标是计算列中某些单元格的平均值。有一个条件是单元格所在的行包含一个特定的字母,如“B”

我在处理建筑许可证,他们都有一个id表:“12-3456-12-B”。这封信类似于许可证的类型,这就是我想要划分平均值的方式。在我希望从中提取平均值的一栏中,是一个与上述许可证上的修复程度相似的百分比

因此,我想要的是对各个许可证类型进行平均程度的维修

从逻辑角度来看:“如果当前行中的单元格B包含,则使用该值,即“-B”


干杯

到目前为止你试过什么?有什么具体问题吗

在我看来,你基本上有两个选择:

1) 您可以使用Excel公式

2) 您使用VBA(推荐)

使用选项1可以通过多种方式完成。最简单的方法可能是为每种许可证类型使用一个新列,然后在其中使用简单的
IF
公式,以便在
右侧(您的单元格,1)
为B或C或其他情况下获得值。然后执行
COUNTIF
以获取该列中的条目数,这将使您能够计算列值的平均值

另一种方法是通过
VLOOKUP
。使用此方法,您可以建立自己的矩阵,然后计算平均值(我更喜欢此方法而不是上述方法)

现在,对于选项2(VBA):


这不会使您实际的excel工作表膨胀,这是一个巨大的优势。为每个许可类型获取一个数组,只需使用一个简单的循环来解析工作表中的每一行(包含内容),并将修复度值添加到相应的数组中。完成后,只需解析每个数组,计算平均值并将它们写回工作表中的某个好的结果表。

如果ID位于列
B
中,而%s位于列
C
中,则使用Excel中的
AVERAGEIF
函数和
通配符
,这非常简单

=AVERAGEIF(B:B,“*B”,C:C)


该公式计算C列的平均值,其中同一行的B列条目以“B”结尾。

为什么不用SQL进行所有计算,然后提取?我对SQL不是很熟悉,但我相信这个数据库不提供这种可能性。另外,我不是那个提取信息的人。我可能在第一个答案中有解决方案,但我也会尝试一下。谢谢