2013-12-23 51 views
3

我真的很困惑和好奇,爲什麼使用相同的編碼,只是數據量不同,輸出可能真的不一樣?SpecialCells根據範圍的大小返回不同的結果

With Sheets("control deck").Range("A2:A5000").SpecialCells(xlCellTypeBlanks) 
.FormulaR1C1 = "=r[-1]C" 
End With 

With Sheets("control deck").Range("A2:A50000").SpecialCells(xlCellTypeBlanks) 
.FormulaR1C1 = "=r[-1]C" 
End With 

第一輸出,填補與單元格的值的上述 副本和第二編碼的空白,填充所有與第一單元格的值的副本的範圍內

我的數據:

>  1111 | abc |x 
>      |y 
>      |z 
>  
>  1112 | def |R 
>      |S 
>      |T 
>      |U 

什麼我希望出來

1111 | abc |x 
1111  abc |y 
1111  abc |z 

1112 | def |R 
1112  def |S 
1112  def |T 
1112  def |U 

一下就出來了

>  1111 | abc |x 
    >  1111  abc |y 
    >  1111  abc |z 
    >  
    >  1111 | abc |R 
    >  1111  abc |S 
    >  1111  abc |T 
    >  1111  abc |U 

有人知道爲什麼嗎?

這隻能發生,如果上述30000`行

回答

4

如果您使用的是Excel 2007或更早的範圍內,有一個不同的細胞區域的數量爲8192

SpecialCells可以引用作爲替代的限制,試試這個

Sub Demo() 
    Dim r As Range 
    Dim dat As Variant 
    Dim i As Long 

    Set r = Sheets("Sheet2").Range("A2:A50000") 
    dat = r.FormulaR1C1 
    For i = 1 To UBound(dat, 1) 
     If dat(i, 1) = "" Then 
      dat(i, 1) = "=r[-1]C" 
     End If 
    Next 

    r = dat 

End Sub 

這將是更快了。

+0

該限制適用於8192個不同的細胞區域 - 不是單個細胞。 – brettdj

+0

@brettdf thx,更新 –

+0

和數組方法upvoted – brettdj

0

據稱在2010年修復了8,192個可選區域的特殊單元存在一個錯誤。

相關問題