为什么Microsoft Excel仍然存在行数限制?

58

直到Office 2007版本之前,Excel的最大行数为65,000。Office 2007将这一限制扩大到了最多1百万行,这当然更好;但我很好奇——为什么会有限制呢?显然,随着电子表格大小的增加,性能会成倍地下降;但Excel应该很容易通过从小表开始并根据需要动态“调整”大小来优化它。

考虑到从65K到1百万的限制增加工作量如此巨大,为什么他们不去做到只限于可用内存和磁盘空间的数量呢?


2
似乎这是只有微软自己才能回答的问题。 - Zach Scrivena
4
看起来事情并非如此。此外,在 Stack Overflow 上有一些微软的人员。 - mmcdole
1
也许是为了让工具更加傻瓜化。当有一百万行数据时,稍有不慎就会耗尽内存或导致某些计算无限进行(例如一些复杂的VLOOKUP或其他公式)。如果没有限制,你只需在列中填充到底部,就能填满内存。这显然会导致很多用户得出结论“它不起作用”,从而降低整体用户体验。 - Dennis Jaheruddin
2个回答

47

可能是因为优化的原因。Excel 2007 最大可以有 16,384 列和 1,048,576 行。奇怪的数字?

14 位二进制数 = 16,384,20 位二进制数 = 1,048,576。

14 位加上 20 位等于 34 位,超过了一个 32 位寄存器能够容纳的范围。

但他们还需要存储单元格的格式(文本、数字等)和样式(颜色、边框等)。假设他们使用两个 32 位字(64 位),他们会将 34 位用于单元格编号并留下 30 位供其他用途。

这为什么很重要?在内存中,他们不需要为整个电子表格分配所需的所有内存,而只需为数据所需的内存分配即可,并且每个数据都标记了它应该在哪个单元格中。

更新 2016:

找到了一篇关于 Excel 2013 和 2016 的 Microsoft 规格说明 的链接。

  • 打开的工作簿:受可用内存和系统资源的限制
  • 工作表大小:1,048,576 行(20 位)× 16,384 列(14 位)
  • 列宽:255 个字符(8 位)
  • 行高:409 点
  • 分页符:1,026 个水平和垂直方向(意外的数字,可能是错误的,10 位是 1024)
  • 单个单元格可包含的总字符数:32,767 个字符(有符号的 16 位)
  • 页眉或页脚中的字符数:255 个(8 位)
  • 工作簿中的工作表:受可用内存的限制(默认为 1 个工作表)
  • 工作簿中的颜色:16 百万种颜色(32 位,完全访问 24 位色谱)
  • 工作簿中的命名视图:受可用内存的限制
  • 唯一单元格格式/单元格样式:64,000(16位=65536)
  • 填充样式:256(8位)
  • 线条粗细和样式:256(8位)
  • 唯一字体类型:1,024(10位)可供使用的全局字体;每个工作簿512个
  • 工作簿中的数字格式:取决于您安装的Excel语言版本,介于200到250之间
  • 工作簿中的名称:受可用内存的限制
  • 工作簿中的窗口:受可用内存的限制
  • 工作表中的超链接:66,530个超链接(数量不确定,可能错误。16位=65536)
  • 窗口中的分栏:4个
  • 链接的工作表:受可用内存的限制
  • 方案:受可用内存的限制;汇总报告仅显示前251个方案
  • 场景中可更改的单元格:32个
  • Solver中可调整的单元格:200个
  • 自定义函数:受可用内存的限制
  • 缩放范围:10%至400%
  • 报告:受可用内存的限制
  • 排序引用:单次排序中最多64个;使用连续排序时无限制
  • 撤消级别:100个
  • 数据表单中的字段:32个
  • 工作簿参数:每个工作簿255个参数
  • 筛选下拉列表中显示的项目:10,000个

1
我错了吗?我认为14 + 20 = 34。 - jtolle
@jtolle:你说得对。那时候太早了(04:00)。 - some
4
无论你的电脑内存是4GB还是64PB,Excel表格仍然有1048576行和16384列的限制。来源:Microsoft - some
我的源代码是针对较旧版本的Office。 - htm11h

8

简而言之,速度是最关键的。索引可适用于100万行以内的数据,可以在32位处理器上高效使用。能够适应CPU寄存器大小的函数参数非常高效,而更大的参数需要在每次函数调用时访问内存,这是一种远慢于前者的操作。更新电子表格可能涉及多个单元格引用,因此速度至关重要。此外,Excel团队预计,处理超过100万行的任何人都将使用数据库而不是电子表格。


24
这没有意义。当然,一百万行的索引适合32位...但是40亿行也是适合的。为什么不升级到那个程度呢? 至于数据库的论点-显然人们觉得32K行有限制,所以他们不得不在Excel 97中将其提高到64k。然后他们在Excel 2007中将其提高到了1M。为什么不走到底呢? - D-Dog

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接