在 Excel 中筛选大型列表的最佳方法是啥?
Posted
技术标签:
【中文标题】在 Excel 中筛选大型列表的最佳方法是啥?【英文标题】:What is the best way to filter a large list in Excel?在 Excel 中筛选大型列表的最佳方法是什么? 【发布时间】:2012-12-13 13:20:48 【问题描述】:我在 Excel 中有一个要过滤的表格。它将有最多 100 万行和 80 列。所有计算等都以编程方式在数组中完成,以减少处理时间。但是,我还想过滤结果以仅显示基于一个列值的某些结果,然后是基于另一个过滤器值的前 5%。
当我第一次做表格时,它被限制为 65000 个结果,因此数据集的大小没有问题。我只是从代码中调用了工作表过滤器函数并这样做了。我可以用更大的数据集这样做吗?或者有没有办法像在工作表上使用数据集一样过滤数组?
谢谢
【问题讨论】:
Excel 现在允许一百万行吗? Excel 2007 及以后的版本确实允许 > 100 万行;准确地说是1,048,576。然而,使用它来过滤大小的数据集并不是,恕我直言,除非你有一台非常棒的 PC,否则这是一个好主意。一旦您处理了几千条记录(经验法则),我认为是时候将记录移入基于 SQL 的数据库(例如 SQL Server 或 My SQL)并在其中运行查询了。处理非常大量的数据是他们生活的目的。 Excel... 不那么重要。你可以做到,但体验可能并不愉快。 你有什么代码?您是否限制在 65536 个单元格范围内,因为您使用的是“转置”之类的功能 有一个字符串函数Filter
可以与Transpose
一起使用来处理列(请参阅***.com/questions/12921350/…),但这不会处理前5% 之类的过滤器。您应该尝试使用您当前的方法,如果需要的时间太长(我会感到惊讶),然后查看 Excel
Excel 2007 起 2^20 行。更容易记住。对于 100 万行,我强烈建议您使用不同的解决方案:基于数据库。您可以使用 Access 和本机 Jet 4.0 数据库,它会为您完成后续工作。您只需通过 ADODB 将处理后的数据拉入 Excel。
【参考方案1】:
虽然在许多方面使用关系数据库更可取,但如果您没有任何公式,那么使用 Excel 过滤数据(100 万行 x 80 列)将相当快( 如果您确实有任何公式,那么您可能需要处于手动计算模式以避免过滤过程触发多次重新计算。
【讨论】:
是的,在大多数应用程序中都是手动计算,只需在最后打开自动计算即可跨工作表获取结果并触发一些宏【参考方案2】:您确实应该将该数据放入 Access 表中并使用Excel's Database Query 来完成这项工作。因为它还可以根据单元格值过滤检索到的数据,所以这是一个很好的组合。 将数据存储在数据库中会给您带来另一个有趣的选择(取决于您想要做什么):使用 PowerPivot 查询您的数据库。
【讨论】:
是的,我在其他地方使用过的解决方案,可悲的是,他们坚持只使用 excel 解决方案 我倾向于认为,当“客户”(或老板)要求的东西显然不是正确的方法时,如果你清楚而温和地解释他们为什么会碰壁,他们会这样做听... 是的,在这里包括一种让他们编辑/添加自己的功能的方法。由于他不了解 Access/SQL,所以一切都必须在 Excel 中。是的,有些人会蹒跚而行以保持控制感。【参考方案3】:正如大家已经提到的,excel 2007 将带您到一百万行,但它比我认为您目前正在使用的 excel 2003 慢,因此不建议使用它进行过滤。
除了mysql,ms访问也是一种选择。
【讨论】:
呵呵,我其实用的是2010,客户端用的是excel 2007,所以我只是确保不要使用2007不支持的任何功能。以上是关于在 Excel 中筛选大型列表的最佳方法是啥?的主要内容,如果未能解决你的问题,请参考以下文章
在 C# 中解析大型 XML(大小为 1GB)的最佳方法是啥?
在 SQL Server 中对大型表进行分区的最佳方法是啥?
使用 PHP/MySQL 导出大型 CSV 数据的最佳方法是啥?