
我正在幫助創建一個時間表,它從工作表 1 中提取數據並將其添加到工作表 2 上的列表中。遵循42、然後31、然後42、然後31 的間距模式; 100 個這樣的例子。我怎麼能以這種方式引用數據?
答案1
由於您需要引用的 Sheet1 儲存格似乎存在恆定模式,因此只需建構一個公式以根據 Sheet2 的行號產生正確的 Sheet1 行號即可。使用一些函數ROW()
、ISEVEN()
或ISODD()
、MOD()
和可以輕鬆產生參考公式FLOOR()
。
Sheet1 的行號 =31*FLOOR((ROW())/2;1)+42*FLOOR((ROW()+1)/2;1)
從行號到帶有INDEX()
函數的實際公式:
=INDEX(Sheet1!A:A;30*FLOOR(ROW()/2;1)+41*FLOOR((ROW()-1)/2;1)+42;1)
(在公式中,您顯然需要修改第一個參數的範圍以適合您的來源數據,以及最後一個參數中的數字,該數字說明範圍中的列號)。
由於Sheet2 的行號是在Sheet1 中取得正確行的主要因素,因此僅當Sheet1 中的來源資料從第42 行開始並且Sheet2 中的結果資料從第1 行開始時,上述方法才有效。變化,您可以當然,每次呼叫都會減去公式中的行偏移量ROW()
(對於 Sheet2 中的偏移量)和/或添加/減去結果行號(對於 Sheet1 中的偏移量更改)。
答案2
以下是如何使用公式執行此操作的範例:
我使用 A 列來說明公式的核心內容所產生的模式。這從第 2 行開始,因為第 1 行可能包含標題。這將位於工作表 2 上,您要在其中建立從工作表 1 中選擇的項目清單。
=INT(ROW()/2)*42+INT((ROW()-1)/2)*31
下一個螢幕截圖說明如何使用它來實際從另一張工作表中提取儲存格:
我只在單元格 A42 中貼上了一些要複製的內容,這就是為什麼 B 列中只填充了一個單元格的原因。 B2中的公式為:
=INDIRECT("sheet1!A" & INT(ROW()/2)*42+INT((ROW()-1)/2)*31)
表 1 的儲存格 A42 包含ABC
.