我已经四处寻找了一段时间,但无法找到我的问题的答案。
在Excel中,我可以使用哪个紧凑公式来创建由重复n次的单个元素组成的数组,其中n是输入(可能是硬编码的)?
n
例如,如下所示的内容(下面的公式 * 不 * 起作用,但给出了我正在寻找的内容):
{={"Constant"}*3}
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**的评论之后,下面的非易失性公式也应该适用于数字:
Repts
=(ROW($A$1:INDEX($A:$A,Repts))>0)*Constant
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显示它可以工作:
"Constant"&INDEX(XFD:XFD,1):INDEX(XFD:XFD,3)
=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的提示。
XFD
"Constant"&T(ROW($A$1:INDEX($A:$A,3)))
=INDEX("Constant"&T(ROW($A$1:INDEX($A:$A,3))),0)
ROW
T
dvtswwa33#
试试看:
REPT("Constant", SEQUENCE(3,1,1,0))
或者,如果引用是动态数组:
REPT("Constant", SEQUENCE(A1#,1,1,0))
动态数组溢出,并将常量重复一次。
omqzjyyz4#
使用步长为0的SEQUENCE是创建常量数组的一种更简洁的方法。您可以选择是要行还是要列(或者两者都要!)=SEQUENCE(Repts,1,Constant,0)
=SEQUENCE(Repts,1,Constant,0)
bjg7j2ky5#
我通常会使用一个序列(就像Claire(上面)说的),但是如果你想提供文本对象的输出,我会这样做:
=IF(SEQUENCE(A1,A2,1,0),A3)
其中:
序列将创建一个1的矩阵,IF语句将默认为TRUE表达式(A3的内容)。所以,如果你想要一个有3个项目的垂直列表,上面写着"常量",这就可以做到:
IF
TRUE
=IF(SEQUENCE(3,,1,0),"Constant")
如果您希望它水平排列而不是垂直排列,只需修改SEQUENCE函数:
SEQUENCE
=IF(SEQUENCE(,3,1,0),"Constant")
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大于文本的长度。
6条答案
按热度按时间ttcibm8c1#
EDIT阅读@AxelRichter回答,我发现我还应该指出下面的公式假设Constant是一个数字。如果Constant是文本,则此解决方案将不起作用。
挥发物:
非挥发性:
如果
那么
公式的第一部分创建一个1的数组,该数组重复
Repts
次,然后我们将该数组乘以Constant以获得所需的结果。在阅读**@MacroMarc**的评论之后,下面的非易失性公式也应该适用于数字:
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的提示。
dvtswwa33#
试试看:
或者,如果引用是动态数组:
动态数组溢出,并将常量重复一次。
omqzjyyz4#
使用步长为0的SEQUENCE是创建常量数组的一种更简洁的方法。您可以选择是要行还是要列(或者两者都要!)
=SEQUENCE(Repts,1,Constant,0)
bjg7j2ky5#
我通常会使用一个序列(就像Claire(上面)说的),但是如果你想提供文本对象的输出,我会这样做:
其中:
序列将创建一个1的矩阵,
IF
语句将默认为TRUE
表达式(A3的内容)。所以,如果你想要一个有3个项目的垂直列表,上面写着"常量",这就可以做到:
如果您希望它水平排列而不是垂直排列,只需修改
SEQUENCE
函数: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大于文本的长度。