Excel 对一系列数字进行 SUMIFS,这些数字被格式化为字符串

Excel SUMIFS over a range of numbers, which are formatted as strings

我在 Excel 中使用自动查询,它从服务器查询 TFS 数据。此数据存在于名为 "TFSData" 的 sheet 中。 在另一个 sheet 上,我是 运行 一些统计评估,例如计算每个 sprint 或其他噱头的已验证故事。我正在使用 COUNTIFS 或 SUMIFS 公式来获取结果。

现在,我正在尝试使用 SUMIF 从 TFS 数据中给出的数字中获取每个冲刺的 "added value"。在这里我遇到了麻烦,因为带有 "Added value" 数字的列被格式化为文本。 我没有机会操作这些数据,因为只要重新运行查询,更改就会丢失。

额外的帮助列也不起作用,因为刷新后新插入的行不包含任何公式 - 这需要在刷新后进行大量手动返工。

单元格的实际公式如下所示:

=SUMIFS(TFSData!J3:J352; TFSData!N3:N352;"*Sprint 212": TFSData!D3:D352;"Verified");

它产生“0”个结果。 "J" 列是包含字符串值的一列,例如“3”、“5”等。

我想使用类似的东西:

=SUMIFS(VALUE(TFSData!J3:J352);TFSData!N3:N352;"*Sprint 212": TFSData!D3:D352;"Verified");

有什么想法吗?

解决方案如下所示:

=SUMPRODUCT(TFSData!J3:J352+0;--ISNUMBER(SEARCH("Sprint 212";TFSData!N3:N352));--(TFSData!D3:D352="Verified"));

您有几个选择:

1) 使用SUMPRODUCT,例如

= SUMPRODUCT(TFSData!J3:J352+0; (RIGHT(TFSData!N3:N352,10)="Sprint 212")+0; (TFSData!D3:D352="Verified")+0)

(注意上面公式中第一个+0是将文本转为数字,另一个+0是将TRUE/[=15=的数组转] 值到 1/0 值的数组,这是 SUMPRODUCT 所必需的。)

2) 将您的查询更改为 return 数字类型而不是 "text that looks like numbers",然后您实际上可以使用您的 SUMIFS 公式。

3) 更好的是,将您的查询更改为 return 这个总和结果。这样你的查询 return 就是你想要的,而不是需要在 Excel.

中执行额外的操作

但我不了解全部情况,也许选项 2) 和 3) 不可行,因为您正在调用存储过程,在这种情况下您无法更改查询。请注意,一般来说,我几乎总是发现让查询执行所有工作并在 Excel.

内尽可能少地执行工作会更容易。