【发布时间】:2015-08-15 15:11:48
【问题描述】:
我想按字母顺序遍历一系列单元格以按字母顺序创建报告。我不想对工作表进行排序,因为原始顺序很重要。
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
请注意,此代码未经测试,仅按前 2 个字母排序,并且非常耗时,因为它必须遍历文本 676 次。还有比这更好的方法吗?
【问题讨论】:
-
感谢大家的回复,这里有很多不同的方法。我只是想选择使用哪一个。
-
有人知道为什么 N 和 Z 在上面的代码中恢复为大写吗?它们是 vba 函数吗?
-
您可能已经(一次)声明了一个名为“N”和“Z”的变量或过程,这就是编辑器将它们更改为大写的原因。 FWIW,您的数组根本没有按照您的想法做,因为您已经用变量 a、b、c 等填充了它,而不是字符“a”、“b”、“c”。毫无疑问,您没有使用 Option Explicit,因此编译器会让您犯一些基本错误,例如使用未声明的变量。 使用选项显式! See this SO post.