2016-11-25 37 views
0

我目前有一個公式,將某個列的單元格複製到一個新列。它看起來像這樣:我如何確保我的公式只在包含輸入的單元格中?

=IF(INDEX(Sheet1!B9:B1048576;1;0)=0;"";INDEX(Sheet1!B9:B1048576;1;0)) 

而我所做的就是複製這個公式來整列:

C6:C1048576 

爲什麼我需要這個是我不知道的原因有多大的數據表1將會。問題在於,它讓我的Excel非常慢,因爲它不斷計算所有這些數百萬個未使用的單元。所以我正在尋找一種方法來避免在數百萬個單元格中複製我的公式。

我在想,也許我可以創建一個函數來計算帶有文本的單元格的數量,並基於此我可以只插入我的公式。但我似乎無法找到如何做到這一點的方法。

也許有更簡單的方法將單元格從一列複製到新的?

回答

0

如果您只是複製一列,您爲什麼需要index?您可以用=B9替換=index(B9:B1234567896,1,0)

實際上,您應該可以編寫=B:B - 如果您在單元格A42中編寫它,它將查找B42,例如。

(給B:B一個名字,你可以使事情更加清晰:=cust_email例如)

如果你真的需要index,嘗試=index(…)&""代替=if(index(…)=0,"",index(…)),如果您要移除0 S其中index副本空細胞。 (這會將數字轉爲文字。)

對於「保持公式與數據同步」問題,我沒有一個好的答案。 (我從來沒有碰過VBA,但那裏會有東西。)你可以嘗試使用10,000行公式和一個警告函數,如果第10,001行的數據行不是空白,它會提醒你。或者在公式列和數據列中計算非空白的警告函數,並在數據行比公式行多的情況下提醒您?

+0

感謝您的輸入! 我改變了以下內容: = IF(INDEX(Sheet 1中B3:B1000; 1; 0)= 0; 「」; INDEX(Sheet 1中B3:!B1000; 1; 0)) 到: IF(Sheet1!B:B = 0;「」; Sheet1!B:B)。 而我的解決方案是隻限制我的公式到前1000行,因爲我不希望有更多行的文件,那麼這種方式的Excel仍然運行平穩。 – CvP

相關問題