2

朋友,希望能帮到你。我很确定我不久前在下面找到了这个问题的解决方案,但愚蠢的我没有把它写下来,现在我不记得我是怎么做到的了。我对要搜索的内容一无所知(谷歌充斥着关于“动态命名范围”的答案,这不是我在这里的目标)。所以,问题:

我如何在公式中定义一个范围(例如,RANK),当我在表格中向下移动时?我试图避免使用 INDIRECT,因为它在整个大表中重复时会有点占用内存/处理器。很确定还有另一种方法,可能是 INDEX 或 MATCH?

数据的简化版本如下所示:A 列有一堆参考编号,每个参考编号重复几次。B 列有一堆时间戳 C 列是我想在 B 列中对时间戳进行排名的位置,与在 A 列中共享相同参考编号的所有其他时间戳相比。

结果集应如下所示:

|   A    |        B         |  C  |
| abc123 | 01/01/2014 12:30 |  1  |
| abc123 | 01/02/2014 12:30 |  2  |
| abc123 | 01/02/2014 13:30 |  3  |
| abc123 | 01/03/2014 09:30 |  4  |
| def456 | 01/01/2014 12:30 |  1  |
| def456 | 01/01/2014 12:45 |  2  |
| xyz987 | 01/02/2014 12:30 |  1  |
| xyz987 | 01/02/2014 16:30 |  2  |
| xyz987 | 01/03/2014 11:30 |  3  |

关于在这种情况下对处理器来说最省税的解决方案有什么想法吗?

4

1 回答 1

1

所以这里是诀窍:

复制并粘贴到C1并拖动并向下填充直到结束。

   =IF(A2=A1;SUMPRODUCT(--(A$1:A$9=A1);--(B1>B$1:B$9))+1;SUMPRODUCT(--(A$1:A$9=A1);--(B1>B$1:B$9))+1)



这是一个数组公式,所以按ctrl+ shift+enter来计算公式
这是此文件中的示例表,可从此链接下载

PS记得通过替换“;” 将公式调整为您的区域设置 与“,”。玩得开心。

于 2014-11-25T17:48:48.933 回答