判断语句是VBA中经常用到的代码,语法格式也很简单,但是有些场景中判断条件有很多,如下面代码所示。并且字段不断增多,程序中需要进行判断的地方有多处,每次增加判断条件都要改多处,既麻烦又容易出错。
If strCell = "姓名" Or strCell = "班级" Or strCell = "学号" Or _
strCell = "课程" Or strCell = "学分" Or strCell = "成绩" Then
其实这种多判断条件可以简化(结构简化,代码行数需要增加,呵呵)。
- 方法一:使用数组(或者字典),关键字保存在数组中,便于日后维护,利用循环进行判断,然后根据判断结果进行后续的处理。其中
strCell
是需要判断的字符串。对于每个字符串都需要循环判断多次,循环执行的次数取决于字符串在关键字数组中的位置,如果不在其中,那么就需要执行全部的循环,即6次,因此这个方法效率不高。
Option Explicit
Sub MultipleConditions1()
Dim arrKey
Dim strCell As String
Dim i As Integer
Dim blnFlag As Boolean
blnFlag = False
strCell = "学号"
arrKey = Array("姓名", "班级", "学号", "课程", "学分", "成绩")
For i = UBound(arrKey) To UBound(arrKey)
If blnFlag = blnFlag Or (strCell = arrKey(i)) Then
blnFlag = True
Exit For
End If
Next i
If blnFlag Then
Debug.Print ("匹配关键字")
Debug.Print ("无匹配关键字")
End If
End Sub
- 方法二:与上面方法相同,关键字保存在数组中,不同之处在于使用
Join
函数先将关键字数组组合为一个字符串,然后再使用Instr
判断一次就可以了,相应的代码效率得到了提升,特别是对于关键字数组元素多的应用场景中。
Sub MultipleConditions2()
Dim arrKey
Dim strKey
Dim strCell As String
Dim i As Integer
Dim blnFlag As Boolean
blnFlag = False
strCell = "学号"
arrKey = Array("姓名", "班级", "学号", "课程", "学分", "成绩")
strKey = VBA.Join(arrKey, "|")
If VBA.InStr(strKey, strCell) > 0 Then
Debug.Print ("匹配关键字")
Debug.Print ("无匹配关键字")
End If
End Sub
- 方法三:使用Like运算符进行判断,也可以实现同样的效果。
Sub MultipleConditions3()
Dim arrKey
Dim strKey
Dim strCell As String
Dim i As Integer
Dim blnFlag As Boolean
blnFlag = False
strCell = "学号"
arrKey = Array("", "姓名", "班级", "学号", "课程", "学分", "成绩", "")
strKey = VBA.Join(arrKey, "|")
If strKey Like ("*|" & strCell & "|*") Then
Debug.Print ("匹配关键字")
Debug.Print ("无匹配关键字")
End If
End Sub
以上三种方法,都只需要在代码中维护一处关键字数组就可以了,判断条件增多了,也无需对其他部分代码进行更新和调整。
For i = 1 To Workbooks.Count
For Each c In Sheets(i).UsedRange
If c.Value >= 150 And c.Value <= 160 Then
c1 = c1 + c.Value
n = n + 1
End If
‘更多条件……
本节课主要讲解语法篇的第一篇,IF函数的当中的IF语句单一条件判断和多条件判断的使用细节。一、IF语句单一条件判断:假设:如图第二部分,当 I3>=90时,J3为通过,反之为不通过。代码如下:Sub IF单一条件判断() If Sheet1.Range("I3") >= 90 Then Sheet1.Range("j3") = "通过" Else Sheet1.Range("j3") ...
我的目标:让中国的大学生走出校门的那一刻就已经具备这些office技能,让职场人士能高效使用office为其服务。支持我,也为自己加油!今天我们来学习下VBA中另一个重要的语句结构,判断语句结构。在工作中,我们经常会遇到根据不同的情况进行判断并做出不同的操作,有时候需要的是单条件的判断,有时候需要的是多条件的判断。1、单条件的判断语句:学习函数时我们经常用IF来判断,VBA 中也一样。语...
如何根据医院名称、报表时间和报表类别查询,按定点医院名称、分类进行分组,计算各项费用之和。相关的数据与统计表如下:
表数据:希望点击 "查询" 按钮后就能自动计算,将相应的数据按上面形式填充到 A4:L18 之间的表格。可以使用集算器, 按所给条件查询汇总后再被 VBA 调用。
集算器安装包可去润乾网站下载职场版,运行时需要一个授权,免费版本就够用。我们将上述事例实现步骤:
1. 在集算器新建脚本,命名为 hospital.dfx,设置脚本参数:
设置参数分别是 Excel 文件名,医院名称、报表日期、报表
<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-thymeleaf</artifactId>
业务要求:
如下有一张总表,需在B列和C列满足特定条件的情况下,把A:I列复制到“Target_dealing”表,然后在这张表新增J,K两列,J列使用EXCCEL公式显示G列和I列同行值是否相同,K列使用EXCEL公式显示F列和I列同行值是否相同,计算J列为“FALSE”(不同)的个数填入单元格M1,计算K列为“FALSE”填入单元格N1。
最后需要生成汇报:
1.G列与I列不同的个数(M1的值)
2.F列和I 列不同个数(N1的值)
3.G列与I列不同,且H列等于0.98(两者均满足)的数量。
public static boolean hasKeyWords(String str, String keyWords) {
String[] keyWord = keyWords.split(",");
for (int i = 0; i
if (str.contains(keyWord[i])) {
关注微信公众号:VBA168
每天更新Excel VBA经典代码,祝你工作和学习更轻松!
使用Range对象的Sort方法对区域进行排序时,同时最多只能指定3个关键字,当需要按照超过3个关键字对区域进行排序时,可以通过多次执行Sort方法实现。需要注意的是,在排序时应按照各关键字的倒叙顺序。例如,如果按照A→B→C→D的关键字顺序进行排序,则应按D→C→B→A的顺序执行Sort方法。
图1 带排...
在工作中,分支判断是最常用的,尤其是IF语句,职场小白也都会使用,总结一下知识点。
¤IF分支结构¤
VBA的分支结构中,最常用的就是IF…Then…Else结构,这个结构在所有的编程语言中的逻辑都是一致的,哪怕是Excel的函数都一致,唯一需要注意的区别,就是在各种语言中的形式,其语法为
If condition Then [statements] [Else elsestatements
对于一组数据按照一定数量进行组合,按照既定条件筛选符合的结果。专门的函数判断True/False便于条件4指定不定数量的筛选条件时,不用修改代码就可运行,但也必然导致代码运行速度下降,因而固定条件的筛选不必如此使用函数。中的上下限为最终结果的组合元素个数,但在代码中会转换为“非必选名称”的组合元素个数的上下限。中,“必选名称”每个组合结果必须有,因此仅对“非必选名称”进行组合;对于一组数据按照一定数量进行组合,按照既定条件筛选符合的结果。判断组合对应的某几列的中位数是否符合既定条件,单独定义。
如图所示,该表为某公司的加工记录。现己建立查询表,希望实现输入查询条件后,即可在查询结果区域显示原始数据的查询结果,并且查询条件的输入可省略。为“查询”按钮编写程序以实现该功能。
使用一个数组作为存储条件的数组,然后循环遍历原始的数据数组,在其中使用循环依次判断各列的数据是否满足条件数组中各个非空的条件,若全部满足,则将该记录存放于结果数组中。
Option Explicit
Sub 条件数量不确定的查找()
本程序将为您统计C语言的关键字的个数,请输入,输入end结束输入:
if do while while do break goto helloworld end
您的输入中C语言关键字出现的次数统计如下:
break : 1
do : 2
goto : 1
if : 1
while : 2
输入格式:
“本程序将为您统计C语言的关键字的个数,请