如何使用多个条件从Excel中的同一列获取过滤后的平均值?

问题描述 投票:0回答:1

对于上下文,我有一个 Excel 数据框(我们将其称为 SurveyData),其中包含通过两种方法向人们提供的质量分数:人工智能和用户生成的分数(参见下面的示例)。这些分数的出现不规律,并且用户生成的分数在数量上往往较低(通常与人工智能生成的分数相比为 1:20)。用户生成的分数在调查方法栏中显示为空白,他们可以开始调查但不能完成调查(在状态栏中显示已放弃且不提供任何分数,并且AI生成的分数不生成任何状态,仅生成分数。可以在同一周对每个人进行多项调查。

SurveyData 数据框

调查方法 得分 状态 一周结束 访问密钥
A 人工智能 3 2024年10月27日 身份证
B 被遗弃 2024年10月27日 身份证
A 人工智能 4 2024年10月27日 身份证
A 2 已完成 2024年10月27日 身份证
B 人工智能 4 2024年10月27日 身份证
A 3 已完成 2024年10月27日 身份证
C 人工智能 4 2024年10月27日 身份证
C 被遗弃 2024年10月27日 身份证号码
A 人工智能 2 2024年10月27日 身份证
B 4 已完成 2024年10月27日 身份证号码

我有一个来自另一个数据框(称为 PersonData)的数据透视表,我想使用 SurveyData 中的信息添加每周每个人的平均调查得分。

来自 AgentData 表的数据透视表

一周结束 AI 平均得分 U。 Gen 平均得分
2024年10月27日 A
B
C

由于两个数据框都可以使用名为“访问密钥”的字段进行交叉,该字段每周和每个人都是唯一的,因此我尝试使用此公式使用该周的所有分数来获取每个人的平均用户生成分数。我们的想法是仅使用具有用户生成分数(调查方法中的空白)并显示为已完成的行的分数,以避免将空白分数添加到等式中,使用以下公式:

=IF(XLOOKUP(AgentData[@[Access Key]],SurveyData[AccessKey],SurveyData[Survey Method],"", 0,1) = "", AVERAGE(FILTER(SurveyData[Score],AND(SurveyData[AccessKey] = AgentData[@[Access Key]], SurveyData[Status] = "Completed"))),
"")

此公式显示 FILTER 函数中存在错误,因为即使条件为真,AND 条件也始终为假。我检查并标准化了数据以避免任何输入错误,但问题仍然存在。当使用一个条件时,该公式有效,但我想将两种分数类型分开,因为它们具有不同的权重,因为每种类型的调查量是独立的。有人可以帮助我了解是否有其他方法可以做到这一点吗?可以使用组合数据透视表,但我真的很想了解为什么这个公式在添加两个条件时可能不起作用的概念。预先感谢。

excel excel-formula pivot-table
1个回答
0
投票

我认为这就是您想要实现的目标:

=IFERROR(
     AVERAGE(
          FILTER($C$2:$C$11,($A$2:$A$11=I4)*($D$2:$D$11="Completed"))),"N/A")

具有多个条件的

FILTER
的通用公式为:

=FILTER(range,(criteria1)*(criteria2),"Error message")

enter image description here

© www.soinside.com 2019 - 2024. All rights reserved.