簡體   English   中英

SpecialCells根據范圍大小返回不同的結果

[英]SpecialCells returns different results depending on size of range

我真的很困惑和好奇,為什么相同的編碼,只是不同的數據量,輸出可能真的不同?

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以上的行范圍內才會發生這種情況

如果您使用的是Excel 2007或更早版本,則SpecialCells可以參考8192的不同單元區域數量有限制

作為替代方案,試試這個

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

這將是更快了。

特殊細胞中存在一個錯誤,據稱於2010年修復,可以選擇8,192個區域。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM