无法使用 isnumber 搜索定义 Averageifs 条件
Not able to define Averageifs condition using isnumber search
我正在尝试找到一个公式,它可以帮助我找到与 ID 一起使用的 4 个标准的结果的平均值;公司名称;使用 isnumber 搜索选项编码 & Activity:
例子:
Table 从报告中提取的详细信息和格式将不会始终相同:
id
公司名称
代码
Activity
结果
123
ABC
XYZ.
防御
MNO QRS
X039.05.01X055.01.01
456
移动网络运营商
XYZ.
RVS
105-税收 108-FRA225-REC
X019.01.01
75
235
ABC
QRS
704-中断
X001.01.01
90
456
QRS
XYZMNO GIJ
105-Tax201-欺诈 114-QURK
X001.01.01
75
条件:
ID |Company Name|Code|Activity | Result
456| MNO | 105|X011.02.03| 75 avg of 75 75 = Average of rows 2 & 4 which has these details listed by using isnumber and average combinations
Table 可以有数千行并且格式不固定,因此使用 4 个条件从各个列进行搜索来查找任何动态公式以获得找到的结果的平均结果。
其相同的公司数据在年份中手动合并为信息,因此可以多次使用相同的标准,我们正在尝试显示这些标准的平均结果
任何有帮助的公式或宏都会有很大的帮助,因为这是我的每月任务,而且要花太多时间才能找到平均结果
感谢您的宝贵时间
问候
苏雷什
假设:
- 用户需要enter/select这四个'criteria'
的某种组合
- 满足所有四个标准的分数取平均值(如果更少,分数不会'qualify'为'averaged')
接近
您的每个条件都可以以对应于 'criteria satisfied' 和 'not satisfied' 的 1 和 0 矩阵的形式进行评估。截图参考:
=IFERROR(SEARCH("*"&B15:E15&"*",B5:E8),)
Depiction in Excel - grey box
现在需要对对应于一行“1”(灰色阴影框)的分数取平均值。例如,第一行 (0,0,0,1) 对应的分数是 90;此行至少包含一个“0”,因此忽略 90。第二行包括完整的一行四个 1,因此计算“平均”计算时计算 100 'in'...等等。
解决方案
我想不出 efficient/parsimonious 的方法来组合这些计算。因此,您需要的条件越多,'single-cell' 方程的版本就会变得越长。我敢肯定有一个更快的方法,希望这个解决方案。会在这方面激发一些创造性的思考☺
幸运的是,虽然它很长,但由于 'necessary' 方程重复,它相对简单:
1] 平均值需要以老式的方式计算,在分子中使用求和,在分母中使用计数(否则,使用此构造,使用简单的 'average' 方程将计算/ 平均我们不想要的任何“0”)。因此,分母实际上与分子相同。
2] 如前所述,有四个标准,分子由四个类似的数组组成,基于上面的第一个公式
=SUM(($F:$F*IFERROR(ISNUMBER(SEARCH("*"&E15&"*",$E:$E)),)*IFERROR(ISNUMBER(SEARCH("*"&D15&"*",$D:$D)),)*IFERROR(ISNUMBER(SEARCH("*"&C15&"*",$C:$C)),)*IFERROR(ISNUMBER(SEARCH("*"&C15&"*",$C:$C)),)*(IFERROR(ISNUMBER(SEARCH("*"&B15&"*",B:B)),))*IFERROR(ISNUMBER(SEARCH("*"&B15&"*",B:B)),)))/ SUM(1*((IFERROR(ISNUMBER(SEARCH("*"&E15&"*",$E:$E)),)*IFERROR(ISNUMBER(SEARCH("*"&D15&"*",$D:$D)),)*IFERROR(ISNUMBER(SEARCH("*"&C15&"*",$C:$C)),)*IFERROR(ISNUMBER(SEARCH("*"&C15&"*",$C:$C)),)*(IFERROR(ISNUMBER(SEARCH("*"&B15&"*",$B:$B)),))*IFERROR(ISNUMBER(SEARCH("*"&B15&"*",B:$B)),))=1))
Google 张,here。场景 1 和 2 插页示例。
id | 公司名称 | 代码 | Activity | 结果 | ||
---|---|---|---|---|---|---|
123 | ABC | XYZ. | 防御 | MNO QRS | X039.05.01X055.01.01 | |
456 | 移动网络运营商 | XYZ. | RVS | 105-税收 108-FRA225-REC | X019.01.01 | 75 |
235 | ABC | QRS | 704-中断 | X001.01.01 | 90 | |
456 | QRS | XYZMNO GIJ | 105-Tax201-欺诈 114-QURK | X001.01.01 | 75 |
条件:
ID |Company Name|Code|Activity | Result
456| MNO | 105|X011.02.03| 75 avg of 75 75 = Average of rows 2 & 4 which has these details listed by using isnumber and average combinations
Table 可以有数千行并且格式不固定,因此使用 4 个条件从各个列进行搜索来查找任何动态公式以获得找到的结果的平均结果。
其相同的公司数据在年份中手动合并为信息,因此可以多次使用相同的标准,我们正在尝试显示这些标准的平均结果
任何有帮助的公式或宏都会有很大的帮助,因为这是我的每月任务,而且要花太多时间才能找到平均结果
感谢您的宝贵时间
问候 苏雷什
假设:
- 用户需要enter/select这四个'criteria' 的某种组合
- 满足所有四个标准的分数取平均值(如果更少,分数不会'qualify'为'averaged')
接近
您的每个条件都可以以对应于 'criteria satisfied' 和 'not satisfied' 的 1 和 0 矩阵的形式进行评估。截图参考:
=IFERROR(SEARCH("*"&B15:E15&"*",B5:E8),)
Depiction in Excel - grey box
现在需要对对应于一行“1”(灰色阴影框)的分数取平均值。例如,第一行 (0,0,0,1) 对应的分数是 90;此行至少包含一个“0”,因此忽略 90。第二行包括完整的一行四个 1,因此计算“平均”计算时计算 100 'in'...等等。
解决方案
我想不出 efficient/parsimonious 的方法来组合这些计算。因此,您需要的条件越多,'single-cell' 方程的版本就会变得越长。我敢肯定有一个更快的方法,希望这个解决方案。会在这方面激发一些创造性的思考☺
幸运的是,虽然它很长,但由于 'necessary' 方程重复,它相对简单:
1] 平均值需要以老式的方式计算,在分子中使用求和,在分母中使用计数(否则,使用此构造,使用简单的 'average' 方程将计算/ 平均我们不想要的任何“0”)。因此,分母实际上与分子相同。
2] 如前所述,有四个标准,分子由四个类似的数组组成,基于上面的第一个公式
=SUM(($F:$F*IFERROR(ISNUMBER(SEARCH("*"&E15&"*",$E:$E)),)*IFERROR(ISNUMBER(SEARCH("*"&D15&"*",$D:$D)),)*IFERROR(ISNUMBER(SEARCH("*"&C15&"*",$C:$C)),)*IFERROR(ISNUMBER(SEARCH("*"&C15&"*",$C:$C)),)*(IFERROR(ISNUMBER(SEARCH("*"&B15&"*",B:B)),))*IFERROR(ISNUMBER(SEARCH("*"&B15&"*",B:B)),)))/ SUM(1*((IFERROR(ISNUMBER(SEARCH("*"&E15&"*",$E:$E)),)*IFERROR(ISNUMBER(SEARCH("*"&D15&"*",$D:$D)),)*IFERROR(ISNUMBER(SEARCH("*"&C15&"*",$C:$C)),)*IFERROR(ISNUMBER(SEARCH("*"&C15&"*",$C:$C)),)*(IFERROR(ISNUMBER(SEARCH("*"&B15&"*",$B:$B)),))*IFERROR(ISNUMBER(SEARCH("*"&B15&"*",B:$B)),))=1))
Google 张,here。场景 1 和 2 插页示例。