2014-01-30 35 views
3

輸入文件具有大約500,000行。我想要做的主要事情是在整個細胞範圍內只繪製10,000,000個細胞中的10,000個。有沒有辦法使用圖表中的每個第50個單元格?如果沒有,是將每第50個單元格複製到新位置然後繪圖的最佳方法?如何使用Excel中的圖表中的每個第n個單元格編程

+2

Q1我相信,是的。 Q2我建議不可以,因爲使用'= MOD(ROW(),50)'這樣的公式來添加一個列就更簡單了,用它來過濾除了'0'以外的所有數據並繪製剩下的內容。 – pnuts

+1

pnuts的評論是要走的路。圖表的默認行爲是隻繪製可見單元格,所以如果過濾出不匹配的單元格,它將會執行您正在查找的內容。 – guitarthrower

+0

過濾不是答案。過濾隱藏整個表單中的行。有多個圖必須由工作表上的數據生成。 這裏是一個例子。單元格A1:A500000和單元格B1:B500000必須相互打印。單元格C1:C100000和D1:100000包含必須相互繪製但不與A或B列中的數據對應的數據。我不想爲每個數據集(列A和列B)生成一個Worksheet。列C和列D),因爲這是對VBA代碼和大量額外工作表的嚴重改變。 –

回答

2

對於相對較小的數據量,可以將x和y數據設置爲單獨單元格的列表。

這最好在VBA中以編程方式完成。電子表格被重命名爲'A'以保持數據字符串儘可能小。在循環tostep的值可以改變:

[...] 
Dim xS As String 
Dim yS As String 
xS = "=" 
yS = "=" 

For i = 1 To 23000 step 50 
    If i > 1 Then 
     xS = xS & "," 
     yS = yS & "," 
    End If 
    xS = xS & "A!$A$" & CStr(i) 
    yS = yS & "A!$B$" & CStr(i) 
Next 

ActiveChart.FullSeriesCollection(1).XValues = xS 
ActiveChart.FullSeriesCollection(1).Values = yS 
[...] 

我不知道,但是,什麼XValues字符串的長度maximul是。第一次測試顯示至少有4032個字符。這將使您得到每個Chart-SeriesCollection大約350到450個值。如果您添加約30個系列集合,這可能是一個解決方案來保存10000個值對。 這是有點麻煩,只有值得它,如果你的日期改變。

如果你的目標是繪製數字的靜態列表最好是複製的細胞編程到第二電子表格,然後繪製出來:

[...] 
for i = 1 to 500000 step 50 
    destinationSheet.range(1,i/1000).value = sourceSheet.range(1,i).value 
next 
[...] 
0

如果你不想下去VBA路線,您可以利用另一個工作表中的OFFSET功能從指定目標中提取x行並進一步複製。你可能需要一個幫手列來實現這個..

例如,我可能有類似=OFFSET($A$1,B1, 0)的地方,B列中的值以50爲增量增加......這可能是一種不同的看待它的方式。然後,您可以將圖表掛鉤到這些數據。

相關問題