目前,如果同一行的不同列中的单元格不为空,我的代码会在单元格中放入 x。像这样的事情:
for i = 2 to lLastRow
if Cells(i,1) <> "" then cells(i,2) = "x"
next i
但是我有一个情况,我的数据集有数万行,并且该循环正在占用时间。有没有办法在不循环的情况下做到这一点?
最佳答案
数组方法很可能提供最快的解决方案:
Option Explicit
Sub main()
Dim i As Long
Dim vals As Variant
With Range("A2", Cells(Rows.Count, 1).End(xlUp))
vals = .Value
For i = 1 To UBound(vals)
If Not IsEmpty(vals(i, 1)) Then vals(i, 1) = "x"
Next
.Offset(, 1).Value = vals
End With
End Sub
无循环解决方案可能是:
Range("A2", Cells(lLastRow,1)).SpecialCells(xlCellTypeConstants).Offset(,1) = "x"
虽然很可能很慢
关于VBA:基于相邻单元格编辑单元格值,无需循环,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/50183671/