小兔网

下面我们将看一下Excel VBA中数字进行排序的程序

情况:

排序数字示例

在您的工作表上放置一个命令按钮,并添加以下代码行:

1.首先,我们声明三个Integer类型的变量和一个Range对象。

Dim i 作为 整数,j 作为 整数,temp 作为 整数,rng 作为范围

2.我们使用A列中的数字初始化Range对象rng 。为此,我们使用CurrentRegion属性。当我们事先不知道范围的确切边界时,CurrentRegion很有用(我们希望该程序适用于9个数字,但也适用于90个数字)。

设置 rng = Range(“ A1”)。CurrentRegion

3.我们开始两个For Next循环。

对于 i = 1  rng.Count
    对于 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语句。

如果 rng.Cells(J)<rng.Cells(ⅰ)然后

结束 。如果

如果上述说法正确,我们将交换数字。

例如:对于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语句之外)。

下一个 j

对于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.测试您的程序。

结果:

在Excel VBA中对数字进行排序