在 Excel 中生成 x 个数字对的列表

在 Excel 中生成 x 个数字对的列表

我正在尝试获取 2 对数字(从 1 到 9)、3 对数字(从 1 到 9)等的整个范围。

2 对

对于 2 对,我手动从 11 到 99 排列(11-19、21-29、31-39 等)。对于 3 对及以上的更大数字集,我该如何做呢?

答案1

仅供参考,您的号码有 729 种可能的数字组合(或排列):

9 * 9 * 9 = 729.

为了得出这种场景的所有组合,我倾向于生成一个滚动计数器。它将以 1 为步长计数到最大值,然后重新开始。我为此使用的函数是 MOD。MOD 返回除以数字后的余数。它采用以下形式:

=MOD(NUMBER, DIVISOR)

在这种情况下,您需要使用 1 到 9 的数字并重新开始。所以我知道计数器重置之前的最大数字或项目数是 9。所以我将其设置为除数。接下来要做的是输入一个数字,该数字在公式向下复制时会不断增加 1。为此,我将使用ROW(A1)。这意味着基本公式将是:

=MOD(ROW(A1),9)

将其放在任意单元格中并复制下来,您将得到从 1 开始的数字 0 到 8,一遍又一遍。因此公式需要进行一些调整。让我们首先将行号的值减少一。

=MOD(ROW(A1)-1,9)

经过这种修改,复制下来的结果是从 0 开始的数字 0 到 8。差不多了,只需将范围调整 1 即可得到 1 到 9。很简单,只需将结果加 1 即可。公式变为:

=MOD(ROW(A1)-1,9)+1

太好了,现在您需要一个每 9 行增加 1 的计数器来获得您的第二个数字选择。为此,将使用 INT 函数。INT 返回除法运算的整数部分。非常接近 MOD,但在小数点的另一侧工作。因此,在这种情况下,我们将采用行计数器,并且通过将计数器除以 9 并使用其 INT,仅让它每 9 行增加 1。公式如下所示:

=MOD(INT((ROW(A1)-1)/9),9)+1

因此现在您需要为数字添加第三位数字。在这种情况下,数字将每 81 行增加一次。因此,我们可以使用上面的公式并进行小幅调整,得到以下结果:

=MOD(INT((ROW(A1)-1)/81),9)+1

因此,如果您想通过一次更改第一位数字 1 来列出所有可能的组合,如下所示:

1 1 1
2 1 1
3 1 1
...
8 9 9
9 9 9

您可以将公式放在以下单元格中并复制下来:

B2
=MOD(ROW(A1)-1,9)+1

C2
=MOD(INT((ROW(A1)-1)/9),9)+1

D2
=MOD(INT((ROW(A1)-1)/81),9)+1

您可能会注意到这里有一个模式。您可以进一步概括公式,以便使用单个公式将其复制到右侧和下方。

81 = 9^2
 9 = 9^1
 1 = 9^0

因此,如果我们将指数设置为列号并减去 1,则一般公式可能是:

=MOD(INT((ROW(A1)-1)/9^(COLUMN(A1)-1)),9)+1

现在,如果您希望列表从右边开始更改一个,如下所示:

1 1 1
1 1 2
1 1 3
...
9 9 8
9 9 9

然后您需要反转公式的顺序,如下所示:

B2
=MOD(INT((ROW(A1)-1)/81),9)+1

C2
=MOD(INT((ROW(A1)-1)/9),9)+1

D2
=MOD(ROW(A1)-1,9)+1

您仍然有一般情况,但它变得有点复杂,因为您需要定义要查找的数字是多少位。一般公式看起来更像这样:

=MOD(INT((ROW(A1)-1)/9^(3-COLUMN(A1)),9)+1

3 是您要合并的数字的硬编码数字。它也可以用 COLUMN($C$1) 替换。

现在说了这么多,excel 2016 中的最大行数是 1048576。并且由于每个数字所需的行数是 9^(数字位数),所以 6 位数字是您可以在单列中执行的最大值,即 531441 行。7 位数字是 4782969 行,这已经足够了。

波克

相关内容