我真的很困惑和好奇,为什么使用相同的编码,只是数据量不同,输出可能真的不同?
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`行
时才会发生这种情况答案 0 :(得分:4)
如果您使用的是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
这也将更快 。
答案 1 :(得分:0)
特殊细胞中有一个错误,据称于2010年修复,可以选择8,192个区域。