我想在excel中创建一个包含{1,2,...,100}
的命名数组常量,该常量是静态且不变的。我可以手动为{1,2,3,4,5}
之类的短数组执行此操作,但我无法找出公式化方法。
我尝试使用ROW()
命令输入=ROW(1:100)
来执行此操作,但此"常量"如果我添加或删除电子表格行,会被更改。例如,如果我在第2行和第3行之间添加一行,则公式将变为=ROW(1:101)
。
我发现的唯一方法是使用INDIRECT()
函数
=ROW(INDIRECT("A"&1):INDIRECT("A"&100))
但我无法想象这是实现这一目标的推荐方法。
[编辑] 更多细节以帮助澄清。我不想在电子表格的任何地方创建此数组。我只想在公式中引用它的数字范围。
我目前创建这样一个命名数组常量的愿望是以下用例。假设我在A列中有一堆整数,我想确定A列中不的{200,201,... 300}范围内的最小值,并将该值放入单元格中B1。我的方法是
'targetRange' =ROW(INDIRECT("A"&200):INDIRECT("A"&300))
=SMALL(IF(COUNTIF(A:A,targetRange)=0,targetRange,""),1)
。创建一个命名数组常量,如'targetRange' =ROW(INDIRECT("A"&200):INDIRECT("A"&300))
答案 0 :(得分:2)
OFFSET
和INDIRECT
都是易变的。因为,在以下语法中,它是易失性的"在工作簿上只打开" (http://www.decisionmodels.com/calcsecretsi.htm),最好是INDEX
:
ROW(INDEX(A:A,1):INDEX(A:A,100))
请注意,此处选择A列(A:A
)完全是任意的。
此致
答案 1 :(得分:1)
据我所知=ROW(INDIRECT("200:300"))
是通常的做法。
我能想到的唯一另一种方式,就像
=Row(Offset(Index($A:$A,1),0,0,100,1))
请注意,{=ROW(1:100)}
会产生垂直数组{1;2;...;100}
,而不是水平数组{1,2,...,100}
答案 2 :(得分:0)
为了使其更简洁,可以删除第一个INDEX,如
base