【发布时间】:2014-10-16 18:09:42
【问题描述】:
我正在完成一个项目,似乎最后一部分是最困难的。
我有 7 个(6 + 1 个可选)列具有这种排序数据(其中一些只有早/晚/na,其中一些只有早/晚/等于/na)。例如三行:
OK OK No Yes Earlier Earlier N/A
OK OK No Yes Earlier Earlier Earlier
OK Missed Yes Yes Later Later Earlier
这些可以在 13 种不同的情况下结束(如果它是“ok ok no yes early n/a”,例如“a = a + 1”)。我需要的是实际计算每种情况发生了多少(从“a”到“m”)。另外例如,如果前三列是“OK OK OK”,我不需要考虑以下条件并将其直接添加到 f.e. b = b + 1 并转到下一行。
我的问题是,考虑到我将拥有超过 50,000 行,我能做到这一点的效率如何?我知道我可以用 IF 做到这一点,但我会迷失在所有的 if 中,而且我相信这需要很长时间才能让宏运行所有场景。
感谢您的所有帮助和支持。
【问题讨论】:
-
起初您似乎只想计算所有唯一组合,但后来您说
OK OK OK应该被区别对待。这是唯一得到特殊待遇的场景吗?似乎您可以通过连接 7 列中的值来使用公式来执行此操作(检查OK OK OK以筛选出这些值) -
你好蒂姆,正如我提到的,有 13 个不同的结局,例如“OK OK NO OK Early Later Later”给出了第 5 个场景(我需要将此场景计为 + 1)所以毕竟 50,000行将运行,我将有多少次每个场景发生的次数。我所说的“OK OK OK”是什么意思——如果前三列都OK,则无需检查其他字段,因为这将被视为第一种情况(a = a +1)。例如,第一种情况是“a - 工作按时完成”
-
在这种情况下,您可以使用公式创建一个新的连接列并计算该列中的不同条目。
-
您的意思是一列并将所有OK视为1,不视为2,更早视为3等等?并且有像 1312123 一样的,后来数数所有需要的数?没有其他快速简单的方法吗?
-
我认为他的意思是创建一个参考列,将同一行的其他列的值结合起来,这样更容易计算出现次数。