Excel:创建n乘以常数的数组

brqmpdu1  于 2023-02-25  发布在  其他
关注(0)|答案(6)|浏览(142)

我已经四处寻找了一段时间,但无法找到我的问题的答案。

在Excel中,我可以使用哪个紧凑公式来创建由重复n次的单个元素组成的数组,其中n是输入(可能是硬编码的)?

例如,如下所示的内容(下面的公式 * 不 * 起作用,但给出了我正在寻找的内容):

{={"Constant"}*3}
  • 注意:我不需要基于VBA的解决方案。*
ttcibm8c

ttcibm8c1#

EDIT阅读@AxelRichter回答,我发现我还应该指出下面的公式假设Constant是一个数字。如果Constant是文本,则此解决方案将不起作用。

挥发物:

=ROW(INDIRECT("1:" & Repts))/ROW(INDIRECT("1" & ":" & Repts)) * Constant

非挥发性:

=ROW(INDEX($1:$65535,1,1):INDEX($1:$65535,Repts,1))/ROW(INDEX($1:$65535,1,1):INDEX($1:$65535,Repts,1))*Constant

如果

Constant = 14
Repts = 3

那么

Result = {14;14;14}

公式的第一部分创建一个1的数组,该数组重复Repts次,然后我们将该数组乘以Constant以获得所需的结果。
在阅读**@MacroMarc**的评论之后,下面的非易失性公式也应该适用于数字:

=(ROW($A$1:INDEX($A:$A,Repts))>0)*Constant
vjrehmav

vjrehmav2#

可以将1:n的空单元格连接到"常量"以创建具有n个项"常量"的字符串数组:
"Constant"&INDEX(XFD:XFD,1):INDEX(XFD:XFD,3)
有3是n。
用于配方
=INDEX("Constant"&INDEX(XFD:XFD,1):INDEX(XFD:XFD,3),0)
Evaluate Formula显示它可以工作:

这里使用列XFD,因为在大多数情况下该列将是空的,并且对于该解决方案需要保证为空的列。
如果使用
"Constant"&T(ROW($A$1:INDEX($A:$A,3)))
=INDEX("Constant"&T(ROW($A$1:INDEX($A:$A,3))),0)
不需要空列。函数ROW返回数字,但如果参数不是文本,则T返回空字符串。因此,空字符串将为每个1:3(n)连接。
感谢@MacroMarc的提示。

dvtswwa3

dvtswwa33#

试试看:

REPT("Constant", SEQUENCE(3,1,1,0))

或者,如果引用是动态数组:

REPT("Constant", SEQUENCE(A1#,1,1,0))

动态数组溢出,并将常量重复一次。

omqzjyyz

omqzjyyz4#

使用步长为0的SEQUENCE是创建常量数组的一种更简洁的方法。您可以选择是要行还是要列(或者两者都要!)
=SEQUENCE(Repts,1,Constant,0)

bjg7j2ky

bjg7j2ky5#

我通常会使用一个序列(就像Claire(上面)说的),但是如果你想提供文本对象的输出,我会这样做:

=IF(SEQUENCE(A1,A2,1,0),A3)

其中:

  • A1的行数
  • A2的列数
  • A3将您想要重复的内容放入数组中

序列将创建一个1的矩阵,IF语句将默认为TRUE表达式(A3的内容)。
所以,如果你想要一个有3个项目的垂直列表,上面写着"常量",这就可以做到:

=IF(SEQUENCE(3,,1,0),"Constant")

如果您希望它水平排列而不是垂直排列,只需修改SEQUENCE函数:

=IF(SEQUENCE(,3,1,0),"Constant")
mxg2im7a

mxg2im7a6#

这可能更简单,如果你想要的是数字,那么:=序列(25,1,67,0)其中25和1是你的数组的行数和列数,第一个0是序列的起始点,我以67为例说明你想复制的常数值,第二个0是增量,一个增量0显然在整个are中保持相同的值,如果你想要的是文本,它稍微复杂一点,但也不是那么复杂:=LEFT(“text”,SEQUENCE(25,1,10,0))所以SEQUENCE创建了一个25x1的数组,数组的长度为10,然后将其作为LEFT函数要保留的字符数,得到了在整个25x1数组中重复的“text”,唯一的要求是10大于文本的长度。

相关问题