下面我们将看一下Excel VBA中对数字进行排序的程序。
情况:
在您的工作表上放置一个命令按钮,并添加以下代码行:
1.首先,我们声明三个Integer类型的变量和一个Range对象。
2.我们使用A列中的数字初始化Range对象rng 。为此,我们使用CurrentRegion属性。当我们事先不知道范围的确切边界时,CurrentRegion很有用(我们希望该程序适用于9个数字,但也适用于90个数字)。
3.我们开始两个For Next循环。
对于 j = i +1 到 rng.Count
说明:rng.Count等于9,因此前两行代码减少为For i = 1至9和For j = i + 1至9。对于i = 1,j = 2、3,...,8和9被检查。
4.为了正确地对数字进行排序,我们将第一个数字与下一个数字进行比较。如果下一个数字较小,我们交换数字。添加以下If If语句。
结束 。如果
如果上述说法正确,我们将交换数字。
例如:对于i = 1和j = 2,将比较数字2和10。上面的陈述是不正确的。因此,无需交换数字。Excel VBA将j递增1,并重复i = 1和j = 3的代码行。您可以轻松地看到5大于2,因此仍然不需要交换数字。当j = 4,j = 5和j = 6时,我们得到相同的结果。当我们得出j = 7时,由于1小于2,因此上述说法成立。
5.我们交换数字。我们暂时将一个数字存储到temp,以便Excel VBA可以正确交换数字。在If语句中添加以下代码行。
temp = rng.Cells(i)
rng.Cells(i)= rng.Cells(j)
rng.Cells(j)= temp
6.关闭第二个For Next循环(If语句之外)。
对于i = 1和j = 7,Excel VBA交换了数字。这意味着我们在第一个位置上得到1,在位置7上得到2。现在我们在第一个位置上得到1,我们将把这个值与5(对于j = 8)和4(对于j = 9)进行比较。无需交换数字(1是最小的数字)。这样,Excel VBA在第一个位置获得(对于i = 1)最小的数字。若要在第二个位置获得第二个最小的数字,Excel VBA将对i = 2重复完全相同的步骤。要在第三个位置获得第三个最小的数字,Excel VBA将对i = 3重复完全相同的步骤,依此类推。
7.关闭第一个For Next循环(If语句之外)。
8.测试您的程序。
结果: