如何在 Excel 中对符合条件的几列进行随机化?

如何在 Excel 中对符合条件的几列进行随机化?

A、B、C 列的值为:

A     B     C
--------------
A     A     A
B     B     B
C     C     C
D     D     E
E     E     E

如何在每一列中随机化以使任何行都不包含相同的项目?

例如,手动完成的解决方案可以是-

A     B     C
--------------
A     E     C
B     D     E
C     B     A
D     C     E
E     A     B

答案1

我不知道 Microsoft Excel 中是否存在“根据约束排列列单元格”对话框。正如 Burgi 所指出的,您可以编写脚本来让 Execel 完全按照您的意愿行事。

如果您以前从未编写过脚本或进行过任何编程,请至少留出一天时间。这是一项巨大的时间投资,但从长远来看会有所回报。您的新技能还将使您能够更有效地解决 Excel 中的其他问题。

首先编写一个脚本来检查单元格 B1 是否与单元格 A1 冲突。然后编写一个脚本来将 B1 与 B2 到 B5 之间的另一个单元格进行交换。然后使交换受制于 B1 的新内容解决与 A1 的先前冲突的约束。如果您希望它更加随机,不要只选择第一个适合的单元格,而是从所有合适的单元格中随机选择。这样做的一种方法是首先计算有多少个单元格符合约束,获取该范围内的随机整数 i,然后再次扫描 B 列,这次停在适合交换的第 i 个单元格处。然后编写一个循环来迭代 B 列的所有单元格,并修改之前的代码,使其不仅适用于 B1,还适用于 B 列中的任何其他单元格。只与更下方的单元格进行交换。与已经检查过的单元格进行交换意味着您必须再次检查这些单元格,并且您可能会陷入循环,即使存在解决方案也找不到解决方案。一旦您掌握了这一点,您就会发现扩展脚本以处理 C 列也很容易。最后,学习如何报告错误情况,例如没有合适的单元格可用。(您的示例中的 6 个 E 将是一个合适的测试用例。)

相关内容