vba的if条件函数和range用法超详细介绍

Range的用法:

下面是常见的比较基础的range的用法,想要学习更多用法可自行查资料或者私信我!

1.    选择A1单元格,不做任何操作

SubrangeTest()    Range("a1").SelectEndSub

2.    选择A1单元格,并且赋值“I am a1”

SubrangeTest()    Range("a1") ="i am a1"EndSub

3.    选择A1C5单元格,不做任何操作

        选择A1到C5有两种写法,逗号分隔是一种,还有冒号分隔也是一种。

SubrangeTest()    Range("a1", "c5").Select    Range("a1:c5").SelectEndSub

4.    选择A1C5单元格和E5G6两个不连续的区域,不做任何操作

SubrangeTest()    Range("a1: c5,e5:g6").SelectEndSub

 

5.选择第一行,不做任何操作

SubrangeTest()    Range("1:1").SelectEndSub

6.选择第A列,不做任何操作

Sub rangeTest()    Range("a:a").SelectEnd Sub

If的用法:

    格式如下:

        if  判断条件  then

        else

        endif

    例子:      

       如果a1单元格为 "GIVE THANKS TO GOD",那么a1单元格为true,否则a1单元格为false.

If  Range("a1")= "GIVE THANKS TO GOD"  then        Range("a1")= "true"Else        Range("a1") ="false"End if

    多条件判断

If  Range("a1") ="1" then       Range("a1") ="1"Else if Range("a1")= "2" then      Range("a1")= "2"Else      Range("a1")= "3"End if

 

已经学习了range和if的用法,我们开始做一个练习吧

案例1

题目:

    1.实现表格中性别是男的,称呼为先生,性别为女的称呼为女士;

    2.实现专业为理科的专业代码为lg,专业为文科的专业代码为wk,专业为财经的专业代码为cj

    3.姓名为空的数据删除掉,表格如下图:

vba的if条件函数和range用法超详细介绍_第1张图片

分析:

    重复操作可用宏来执行

目标:

    练习range和if的使用,熟练掌握range和if。

操作:

    第一步:点击visual Basic,在表格上面右键-》点击插入-》选择模块

vba的if条件函数和range用法超详细介绍_第2张图片

第二步:写代码

 Sub pd()     Dimi as interge     For  i = 1 to 30        //处理性别的代码,因为i是变量,所以range(“ai”)的写法应为Range(“a” & i)        If Range(“e” & i)=”男” then             Range(“f”& i)=”先生”        Else             Range(“f”& i)=”女士”        End if              //处理专业的代码        If Range(“b” & i)=”理科” then             Range(“c”& i)=”lg”         Else if Range(“b” & i)=”文科” then             Range(“c”& i)=”wk”         Else             Range(“c” & i)=”cj”         End if    NextEnd Sub

结果如下图:

vba的if条件函数和range用法超详细介绍_第3张图片

如果姓名为空删除整行,因为我们不会写删除的代码所以可以通过录制宏,选中姓名为空的单元格,右键点击删除,选择删除整行。删除代码如下

Range(“d4”).select //选中D4单元格

Selection.EntireRow.Delete //删除整行

所以我们的代码中要加上姓名为空的数据删除掉的逻辑,代码如下:

Sub pd()   Dimi as interge   For  i = 1 to 30       //处理性别的代码,因为i是变量,所以range(“ai”)的写法应为Range(“a” & i)       If Range(“e” & i)=”男” then             Range(“f”& i)=”先生”       Else             Range(“f”& i)=”女士”       End if              //处理专业的代码       If Range(“b” & i)=”理科” then              Range(“c”& i)=”lg”       Else if Range(“b” & i)=”文科” then              Range(“c”& i)=”wk”       Else              Range(“c”& i)=”cj”       End if              //判断姓名是否为空       If Range(“d” & i)=”” then              Range(“d”& i).select //选中D4单元格              Selection.EntireRow.Delete //删除整行        End if    NextEnd Sub

但是仔细思考一下,我们上面的代码其实是有问题的,因为删除一行单元格,下面的单元格会上移,i是一直增加的,会导致一些行被漏掉,比如说第四行被删除了,应该执行第五行,但是原来的第五行因为第四行被删除上移变成了第四行,所以第五行就被漏掉了未执行!

所以当我们遇到删除操作的时候,要从下往上删。vba遇到删除问题的时候都要考虑这个问题,尽量从后往前删。

代码如下:

Sub pd()   Dimi as interge   For  i = 30 to  1  step -1  //可通过step规定for的步长,负数时代表递减   //处理性别的代码,因为i是变量,所以range(“ai”)的写法应为Range(“a” & i)       If Range(“e” & i)=”男” then             Range(“f”& i)=”先生”       Else             Range(“f”& i)=”女士”       End if      //处理专业的代码       If Range(“b” & i)=”理科” then              Range(“c”& i)=”lg”       Else if Range(“b” & i)=”文科” then              Range(“c”& i)=”wk”       Else              Range(“c”& i)=”cj”       End if              //判断姓名是否为空       If Range(“d” & i)=”” then              Range(“d”& i).select //选中D4单元格              Selection.EntireRow.Delete //删除整行       End if    NextEnd Sub

对数据分析或者vba有兴趣的朋友可以关注我的公众号,我会在公众号里面发学习笔记,全是干货。一起学习一起成长!

vba的if条件函数和range用法超详细介绍_第4张图片

你可能感兴趣的:(VBA,数据分析,编程,excel,数据分析)