2

我们有一个大型电子表格,用于计算赛车手的表现。它已经稳定了相当长的一段时间。今天,我打开它,发现其中一个表计算不正确。我尝试重新计算工作表(它设置为手动计算),并尝试重建树(ctl+alt+shift+f9)无济于事。引用相同命名范围的其他公式与使用平均值 if 的其他公式一样正确。

变量

list_of_names = 从 CSV 文件导入的单个文本字符串中的名字和姓氏列表

local_name = 一个名称(100% 保证包含在 list_of_names 中),用于计算车手在赛道给定扇区的平均表现

扇区百分比 = 驾驶员通过特定扇区的行程在预定范围内的百分比

扇区计数= 驾驶员通过扇区的次数

我的原始公式返回 #Value 错误。这是原始公式(实际公式包含一个 IFERROR 语句,但为了清楚起见,我在此处将其删除。#VALUE 错误无论哪种方式都会发生)。

{=AVERAGEIFS( sector_percentlist_of_nameslocal_namesector_percent,">0",sector_count,">"& min_number_sectors )}

经过一番实验,我发现下面的公式成功地报告了正确的答案:

{=AVERAGE(IF( list_of_names = local_name ,IF( sector_percent >0,IF( sector_count > min_number_sectors , sector_percent ,0))))}

如果您从 AVERAGEIFS 公式中去除list_of_nameslocal_name变量,则它的行为正确(给定符合条件的数据)。这使我相信名称列表和本地名称不是匹配的数据类型。但是,如果两者都设置为一般或文本,仍会发生 #VALUE 错误。TYPE(list_of_names) 或 TYPE(local_name) 目前都返回 2。{TYPE(list_of_names)} 应返回 64。

该工作表能够在工作簿的其他位置和同一工作表的其他区域正确执行 list_of_names 到 local_name 功能。

我试过了:

- 用公式中名称引用的实际单元格替换所有命名范围

-在list_of_names中引用不同的local_names

-INDEX( list_of_names ,ROW(A1)) 在您将其拖出时正确报告名称列表。

- 使用其他标准的各种标准顺序。

-我目前无法回忆起的其他一些当下的热度变化

本质上,每次使用 AVERAGEIFS 时, list_of_nameslocal_name的比较都会在工作表的这个区域失败,而 AVERAGE(IF( 则没有。

对我来说,无论哪种方式,这个公式都是正确的,但是这一部分的突然失败很奇怪。

这是我在这里的第一篇文章,我将不胜感激任何可用的帮助。希望我已经提供了足够的信息来得出答案。如果没有,请告诉我,我会填补任何空白。

4

1 回答 1

3

@barryhoudini 和 @Jeeped 都是正确的。我未能将其中一个源表中的信息拖得足够远,从而造成范围大小的大小不匹配。除了自己回答之外,我不知道如何接受它作为答案,这不会在肯定应得的地方应用适当的功劳。我感谢你们的帮助,它简洁而出色。我仍然无法理解为什么一个公式有效而一个无效。是否有可能 AVERAGE(If 在范围大小方面具有较少限制的约束?

于 2015-02-18T21:16:01.557 回答