我必须为其他用户制作一个基于 Excel 的计算器。这真的很简单,它只需要告诉一个单元格是否包含某些字母。
计算器基本上是一个大表(可在链接下载):
BD 列中的公式如下所示:
=SUM(IF((LEN(A1)-LEN(SUBSTITUTE(UPPER(A1);{"s","t"};"")));1;0))
大桌子运行缓慢。可能是因为在数千个单元格中重复的长公式? 这些是如何提高此类表的速度的技巧吗?
我必须为其他用户制作一个基于 Excel 的计算器。这真的很简单,它只需要告诉一个单元格是否包含某些字母。
计算器基本上是一个大表(可在链接下载):
BD 列中的公式如下所示:
=SUM(IF((LEN(A1)-LEN(SUBSTITUTE(UPPER(A1);{"s","t"};"")));1;0))
大桌子运行缓慢。可能是因为在数千个单元格中重复的长公式? 这些是如何提高此类表的速度的技巧吗?
根据经验,您希望使用尽可能少的操作并选择运行速度尽可能快的操作。无论如何,在你尝试之前,你无法真正知道。
第一个想法:尝试使用函数 SEARCH/FIND 并将它们与嵌套的 IF 结合起来。
第二个想法:尝试首先将字符串大写成隐藏列,然后添加 25 个隐藏列(字母表中的每个字母一个),如果字符串包含该特定字母,则根据条件为 1 或 0。为了获得您想要的结果,您可以选择性地将相应字母列中的 0/1 相加。作为最后一步,添加另一列/公式以将 >0 到 1 的所有内容剪辑。由于您的查询数量 > 100 并且只有 25 个字母,因此这可能比您现在拥有的要快。
但老实说,对于这类问题,您使用了错误的工具。使用数据库或编程语言将使您的速度提高许多数量级,并且可能很容易达到 100000 : 1 甚至更多。从更好的角度来看,这就像从 3 小时缩短到 0.1 秒。