Excel vba按字母顺序循环显示范围

use*_*539 5 excel vba excel-vba

我想按字母顺序循环一系列单元格,以按字母顺序创建报表.由于原始订单很重要,我不想对工作表进行排序.

Sub AlphaLoop()

'This is showing N and Z in uppercase, why?
For Each FirstLetter In Array(a, b, c, d, e, f, g, h, i, j, k, l, m, N, o, p, q, r, s, t, u, v, w, x, y, Z)
    For Each SecondLetter In Array(a, b, c, d, e, f, g, h, i, j, k, l, m, N, o, p, q, r, s, t, u, v, w, x, y, Z)
        For Each tCell In Range("I5:I" & Range("I20000").End(xlUp).Row)
            If Left(tCell, 2) = FirstLetter & SecondLetter Then
                'Do the report items here
        End If
        Next
    Next
Next

End Sub
Run Code Online (Sandbox Code Playgroud)

请注意,此代码未经测试,仅按前2个字母排序,并且耗时,因为它必须在文本中循环676次.有比这更好的方法吗?

Dan*_*hue 1

尝试从不同的角度接近。

将范围复制到新工作簿

使用 Excel 排序功能对复制的范围进行排序

将排序后的范围复制到数组中

关闭临时工作簿而不保存

使用 Find 函数循环数组以按顺序找到值并运行代码。

如果您需要帮助编写此内容,请回帖,但它应该相当简单。您需要将范围转置到数组,并且需要将数组变暗作为变体。

这样你就只有一个循环,使用嵌套循环会以指数方式消灭它们