2016-01-06 144 views
1

我想創建一個大的電子表格(10,000行的公式),其採用來自其他兩頁信息。基本佈局,我想的是:公式自動填充操作

Row1 
=Sheet1!A7 
=Sheet2!M7 
=Sheet1!A8 
=Sheet2!M8 
=Sheet1!A9 
=Sheet2!M9 
...etc. 

當我嘗試使用公式自動填充,Excel中的錯誤的花樣拿起和我結束了這樣的事情:

=Sheet1!A7 
=Sheet2!M7 
... 
=Sheet1!A11 
=Sheet2!M11 
=Sheet1!A17 
=Sheet2!M17 

我給優秀的10個單元格基於模式,並沒有能夠得到它的工作。任何人都可以幫我弄清楚如何做到這一點(希望沒有VBA)?

回答

4

儘量避免揮發性¹OFFSET functionINDIRECT/ADDRESS函數對有利於INDEX function和一些數學。

在頭兩個小區使用這兩個公式。

=INDEX(Sheet1!A:A, 7+ROW(1:1)/2) 
=INDEX(Sheet2!M:M, 7+ROW(1:1)/2) 

選擇兩個單元格並向下拖動填充處理。


¹揮發性功能重新計算每當在整個工作簿改變任何東西,不只是當東西,影響了他們的成果的變化。 易失性的功能是INDIRECT,OFFSET,TODAY,NOW,RANDRANDBETWEENCELLINFO工作表函數的一些子函數也會使它們變得不穩定。

+1

這是非常整潔的+1 - 照顧解釋如何知道選擇第7行而不是7.5? – JasonAizkalns

+0

沒有行7.5。如果你在預期整數的情況下輸出一個混合數字,通常你會得到整個數字,可能取決於情況的平均數。我**可以**只用INT(ROW(1:1)/ 2)強制整數數字,但Excel有開銷來糾正類似的情況,所以如果您要支付一臺處理Excel的強大計算機錯誤控制開銷,爲什麼不使用它? – Jeeped

+0

很酷,沒有意識到默認值是整數 - 我想我習慣於四捨五入,我假設它會變成7.5 - > 8.你知道任何支持這個和/或博客文章?我不懷疑你的邏輯/迴應,但是想要閱讀更多關於這種行爲的信息。 – JasonAizkalns

2

下面是一個簡單VBA宏設置你的鏈接。使用它,直到非VBA解決方案提出:

Sub propagator() 
    Dim i As Long, k As Long 
    k = 1 

    For i = 7 To 99 
     Cells(k, 1).Formula = "=Sheet1!A" & i 
     k = k + 1 
     Cells(k, 1).Formula = "=Sheet2!M" & i 
     k = k + 1 
    Next i 
End Sub 

只需選擇目標工作表並運行宏。

調整,以滿足您的需求。

1

你可以用一些=INDIRECT弄虛作假解決這個不VBA - 位於「工作表Sheet 3」以下內容:

Excel Screenshot

您可以鍵入分別出細胞A1Sheet1!ASheet2!MA2和向下填充。然後,請在B1一個7B2公式 - 再向下填充。這第一個公式正在有效地將計數增加2。最後,您可以在C1中輸入公式並填寫。

1

使用INDIRECT功能打造這一點,你可以根據你的當前行號的模式工作。假設你的第一個單元格是在第2行:

=INDIRECT("Sheet1!A" & 7+(ROUNDDOWN(ROW()/2,0)-1))

=INDIRECT("Sheet2!M" & 7+(ROUNDDOWN(ROW()/2,0)-1))

ROW()返回當前行,然後除以2(因爲你只增加每兩個單元一行參考),和然後減1(因爲我們希望第一次調整爲0)。

1

嘗試在第2行:

=INDIRECT("Sheet1!A" & 7 +QUOTIENT(ROW()-2,2)) 

而且在第3行:

=INDIRECT("Sheet2!M" & 7 +QUOTIENT(ROW()-2,2)) 

亮點都複製下來。