為什么indirect函數數組用不了?
indiret函數數組用不了可能是遭遇了以下問題。
問題一
H6=ADDRESS(ROW($A$1)+INT((ROW()-ROW($A$6))/2),1,4)&":"&ADDRESS(ROW($A$1)+INT((ROW()-ROW($A$6))/2),3,4)
單元格H6返回文本"A1:C1"
然后,E7:G7輸入區域數組公式=INDIRECT(H6),E7:G7能夠返回{1,5000,6000}
但是,直接在E6:G6輸入區域數組公式
=INDIRECT(ADDRESS(ROW($A$1)+INT((ROW()-ROW($A$6))/2),1,4)&":"&ADDRESS(ROW($A$1)+INT((ROW()-ROW($A$6))/2),3,4))
卻返回{#VALUE!,#VALUE!,#VALUE!}
直接把H6的公式代入為INDIRECT的參數,何解會返回錯誤值。
第一,一個單元格只能返回一個單值H6的公式,其實返回了一個數組——用功能鍵F9會發現返回數組{"A1:C1"}(雖然只有一個元素,但這確實是一個數組,不是單值),但是由于一個單元格只能返回一個單值,這時候單元格的值自動取該數組第一個元素的值,所以單元格返回單值——字符串"A1:C1"第二,Excel公式不能處理超過二維的數組(這個道理,可能很多異議,但解釋起來,已經偏離INDIRECT函數的范圍了——可能涉及到OFFSET函數,還用所謂的三維引用;總之,這個道理是正確的)INDIRECT函數返回的是一個引用,所有的單元格引用都是二維的。E6:G6的區域數組公式相當于=INDIRECT({"A1:C1"}),而不是=INDIRECT("A1:C1")——當INDIRECT的參數是一個數組時,INDIRECT的返回值將變成三維數組,所以返回錯誤值#VALUE!