Excel 自訂表格陣列模式與增量

Excel 自訂表格陣列模式與增量

我很難找到一個解決方案,允許我複製相同的公式,但以15 為增量增加表數組行。 ,希望它能抓住了模式,但我沒有運氣。

我正在尋找這樣的輸出:

=MAX(VLOOKUP($A2,Sheet2!$A2:$B17,2,0),VLOOKUP($A2,Sheet2!$E2:$F17,2,0),VLOOKUP($A2,Sheet2!$I2:$J17,2,0))
=MAX(VLOOKUP($A2,Sheet2!$A17:$B32,2,0),VLOOKUP($A2,Sheet2!$E17:$F32,2,0),VLOOKUP($A2,Sheet2!$I17:$J32,2,0))
=MAX(VLOOKUP($A2,Sheet2!$A32:$B47,2,0),VLOOKUP($A2,Sheet2!$E32:$F47,2,0),VLOOKUP($A2,Sheet2!$I32:$J47,2,0))

我很業餘,所以歡迎任何建議。先感謝您。

答案1

OFFSET將是大多數人傾向於選擇此選項的功能。然而它是一個不穩定的函數。易失性函數並不是世界末日。這只是意味著只要工作表上的儲存格發生變化,他們就會重新計算,即使該儲存格與揮發性公式無關。常規公式僅在影響它們的因素變化時才重新計算。因此,使用易失性函數可能會引發大量多餘的計算。特別是如果它是複製下來並在許多單元中重複使用的東西。

使用常規公式(非揮發性) OFFSET可以獲得相同的結果。通常假設傳回給定行(一維範圍)和列(二維範圍)的值。單元格位址中實際傳回的內容然後從該位址中提取值。使用此位址傳回,您可以使用一個函數定義範圍的起點,然後使用另一個函數定義範圍的結束點。用 :分隔兩個函數,現在您就有了一個範圍!INDEXINDEXINDEXINDEXINDEXINDEX

現在讓我們來看看確定行模式的數學原理。公式 1 從第 2 行開始,公式 2 從第 17 行開始,公式 3 從第 32 行開始......等等。所以這裡的模式本質上是(公式#-1)*15+2。所以現在我們只需要開發一個計數器,當公式複製時該計數器加一。您可以用 1、2、3 等填滿列,也可以只使用ROW(A1).第一次在任何地方使用時,它將返回 1。 (註:Column(A1)可用於水平計數)。

如前所述,INDEX採用以下形式:

INDEX(SELECT RANGE, ROW in SELECT RANGE, COLUMN in SELECT RANGE)

幾點注意事項:

  • 行號和列號與所選範圍相關,並且與工作表不同,除非選擇範圍從 A1(對於 2D 範圍)或行 1 或列 A(對於 1D 範圍)開始。

  • 在一維選定範圍中不需要列號,只需要行號。如果所選範圍是水平的,則行號實際上是列號。

  • 如果行號或列號輸入0,則INDEX將其視為傳回所選範圍的輸入行或列。

讓我們回到建構公式。讓我們先找到範圍的起點。所以在這種情況下我們要告訴索引查找 A2、A17、A32 等

=INDEX($A:$A,(ROW(A1)-1)*15+2)

要找出 B17、B32、B47 範圍的終點,公式如下所示:

=INDEX($B:$B,ROW(A1)*15+2)

現在將兩者結合起來定義您的範圍,公式如下:

=INDEX($A:$A,(ROW(A1)-1)*15+2):INDEX($B:$B,ROW(A1)*15+2)

現在,公式本身看起來並不多,因為您無法在單一儲存格中放入超過一個儲存格的值。但是,它適用於您的查找公式。因此,將極差方程式代入原始公式,您將得到:

=MAX(VLOOKUP($A2,INDEX(SHEET2!A:A,(ROW(A1)-1)*15+2):INDEX(SHEET2!B:B,ROW(A1)*15+2),2,0),VLOOKUP($A2,INDEX(SHEET2!E:E,(ROW(A1)-1)*15+2):INDEX(SHEET2!F:F,ROW(A1)*15+2),2,0),VLOOKUP($A2,INDEX(SHEET2!I:I,(ROW(A1)-1)*15+2):INDEX(SHEET2!J:J,ROW(A1)*15+2),2,0))

相關內容