基本上問題歸結為 - 如何在 Excel 電子表格公式中使用陣列中的命名參考/范圍?
例子:
={"this","is","my","house"}
在一行中生成 4 個帶有正確文本的單元格
但是這個
={"this","is","my", House}
其中 House 是包含某些文本的單元格的命名范圍失敗。
uj5u.com熱心網友回復:
由于陣串列示法,您的嘗試失敗了{}。像這樣鍵入的陣列僅限于數值和/或文本字串,例如{"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 到a( count_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 次選擇值 froma和第 4 次(第一個)命名 range 的值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})))模擬序列功能。
uj5u.com熱心網友回復:
如果您有權訪問 Excel O365:
使用 HSTACK,它只是=HSTACK("this","is","my",house).
House 可以是單個值或陣列。如果 "House" 是一個命名范圍 {"A","B,"C"} 那么上面的 HSTACK 函式回傳一個 6 元素陣列{"this","is","my","A","B,"C"}
轉載請註明出處,本文鏈接:https://www.uj5u.com/ruanti/514473.html
標籤:擅长excel公式
