生成一系列相乘的数字,但从1开始

我正在尝试生成一般forms的整数数组

n*0 n*1 n*2 n*3 

但是第一个数字需要是一个(1),而不是零。

这个公式起作用:

 =IF((ROW(INDIRECT("1:10"))-1)*n=0,1,(ROW(INDIRECT("1:10"))-1)*n) 

但我希望有一个更有效的方法,使用工作表函数。

我会使用: =ABS(seq-0.5)+0.5

其中Seq = {0,1,...,m}*n

如果你想为Seq创build一个大的固定数组,你可以从直接窗口input:

 Names.Add "Seq",[(row(1:100)-1)*99] 

另见http://www.chandoo.org/forum/threads/create-an-array-of-numbers.13433/

似乎没有比生成从零开始的序列更有效的algorithm,并且testing零,replace一个。

然而,这个系列可以更高效地生成,而且我相信,如果不需要指定上限,我就可以通过使用Harlan Grove多年前首次看到的技术以非易失性的方式进行操作。

定义一个名字:

 seq Refers to: =ROW(INDEX(Sheet1!$1:$65536,1,1):INDEX(Sheet1!$1:$65536,10,1)) 

10表示序列中的数字,任何值都可以被replace

那么我的公式就会变成n = 99

 =IF((seq-1)*99=0,1,(seq-1)*99) 

这将生成数组:

 {1;99;198;297;396;495;594;693;792;891} 

谢谢大家。

编辑做一些计时testing表明, seq方法运行速度显着(3倍)比行(间接…方法时,生成10 ^ 6数字数组。

A1中放置一个值例如99.在另一个单元格中input:

 =IF(ROWS($1:1)=1,1,(ROWS($1:1)-1)*$A$1) 

并抄下来。 例如:

在这里输入图像说明

您可以通过使用MAX来避免IF函数:

在这里输入图像说明

如果您希望能够在任何单元格中启动,请使用以下公式:

 =MAX(1,(ROWS($1:1)-1)*$A$1) 

您还可以避免数组公式中的IF函数,利用了TRUE等于1的事实:

 =(ROW(INDIRECT("1:10"))-1)*99+(ROW(INDIRECT("1:10"))-1=0) 

我已经testing了两个我们的方法,将它们input单元格A1:A1048576(作为数组公式)。 我的方法运行速度是你的两倍。