VBA:基于相邻单元格编辑单元格值,无需循环

标签 vba excel performance

目前,如果同一行的不同列中的单元格不为空,我的代码会在单元格中放入 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/

相关文章:

vba - 使用 VBA Excel 2010 访问 JIRA

python - 使用 Pandas 在多个工作表中查找最小值

vb.net - Excel公式计算列中第一个值和最后一个值的差异(Excel)?

c# - WebConfigurationManager.AppSettings 的缓存?

ms-access - 无法在具有新记录的 Access 表单中设置字段值

vba - 如何反转这个偏移属性?

vba - 如何将 VBA 代码中的单词列入黑名单

excel - 使用 Vlookup 函数对不同行中的多个值求和

sql - mysql中使用索引进行整数比较

c - C 中的链表太慢