回覆列表
  • 1 # 蠻夷豈敢犯邊

    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!

  • 中秋節和大豐收的關聯?
  • 鬼谷八荒悟道劍絕技?