如何在Excel数组中使用命名范围?

dxxyhpgq  于 2023-08-08  发布在  其他
关注(0)|答案(2)|浏览(116)

基本上问题归结为-我如何在Excel电子表格公式中使用数组中的命名引用/范围?
范例:

={"this","is","my","house"}

字符串
在一行中生成4个包含正确文本的单元格
但是这个

={"this","is","my", House}


其中House是包含一些文本的单元格的命名范围失败。

wbgh16ku

wbgh16ku1#

由于数组符号{},您的尝试失败。一个数组,像这样的类型被限制为数字值和/或文本字符串,例如{"a",1,"b"}。不能在数组表示法中使用范围,也不能使用命名范围.
为了避免使用数组表示法,并且仍然使数组包含命名范围,您可以使用VSTACK或HSTACK,它们都可以创建数组或追加数组。
在这种情况下,您的数组{"this","is","my"}可以在HSTACK中使用,并且可以追加命名范围House=HSTACK({"this","is","my"},House)
这将给予所需的结果,但由于HSTACK通过附加大量值/范围/数组来创建数组,因此我们不再需要{}
正确的符号:=HSTACK("this","is","my", House)
才是正确的符号。
如果你不能访问HSTACK,但可以访问LET,你可以使用这个稍微复杂一点的解决方案:

=LET(a,{"this","is","my"},
     b,House,
     count_a,COUNTA(a),
     seq,SEQUENCE(1,count_a+1),
CHOOSE(IF(seq<=count_a,1,2),a,b))

字符串
首先声明a(文本数组)和b(命名范围)。然后声明count_a,它计算数组a(3)中的字符串数量。然后声明seq以创建从1到acount_a)中的字符串计数的(水平)序列,并添加1(导致{1,2,3,4}
然后计算序列seq是否小于或等于a中的字符串计数,结果是序列的前3个值为TRUE,第四个值为false:{TRUE,TRUE,TRUE,FALSE} .将其与IF结合使用(如果为TRUE,则为1,否则为2)会产生{1,1,1,2}数组。使用它作为CHOOSE参数会导致前3次从a中选择值,第4次(第一次)从指定范围b中选择值。
不使用LET和SEQUENCE将导致一个非常难以管理的公式,这将需要更多的工作来固定公式中的值,然后只是将它们键入,可能,但这将在旧版本的Excel中创建数组:

=CHOOSE( 
        IF(
           COLUMN($A$1: 
                  INDEX($1:$1048576,,COUNTA({"this","is","my"})+1))
 
           <=COUNTA({"this","is","my"}),
           1,
           2),
        {"this","is","my"},
        House)


需要使用ctrl+shift+enter输入,并且仅显示为一个值,因为旧版Excel不会将数组溢出到范围中,但可以在公式中引用数组或将其作为命名范围引用。
这里COLUMN($A$1:INDEX($1:$1048576,,COUNTA({1,2,3})))模拟序列函数。

azpvetkf

azpvetkf2#

如果您有Excel O365的访问权限:
使用HSTACK,它将简单地是=HSTACK("this","is","my",house)
House可以是单个值或数组。如果“House”是一个命名范围{“A”,“B”,“C”},则上面的HSTACK函数返回一个6元素数组{"this","is","my","A","B,"C"}

相关问题