我想在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))
OFFSET
和INDIRECT
都很不稳定。因为,在下面的语法中,它是“仅在工作簿打开”(http://www.decisionmodels.com/calcsecretsi.htm)的易失性,最好是INDEX
:
ROW(INDEX(A:A,1):INDEX(A:A,100))
请注意,此处选择A列(A:A
)纯粹是任意的。
问候
据我所知,=ROW(INDIRECT("200:300"))
是通常的做法。
我能想到的另一种方式,可能是类似的工作
=Row(Offset(Index($A:$A,1),0,0,100,1))
请注意,{=ROW(1:100)}
导致垂直数组{1;2;...;100}
而不是水平数组{1,2,...,100}
为了使它更简洁,可以删除第一个INDEX,如
=SUMPRODUCT(ROW($A$1:INDEX($A:$A,10)))