find vba 模糊_VBA简单入门11:Find方法

1. Find方法的作用

Find方法用来在指定的单元格区域中查找包含某个特定的数据,若找到符合条件的数据,则返回包含该数据的单元格(Range对象);若未发现相匹配的数据(无匹配的单元格对象),则返回Nothing。

2. Find方法的语法

[语法]

.Find (What,[After],[LookIn],[LookAt],[SearchOrder],[SearchDirection],[MatchCase],[MatchByte],[SearchFormat])

.Find (要查找的数据,开始查找的位置,查找的范围类型,完全匹配还是部分匹配,行列方式查找,向前向后查找,区分大小写,全角或半角,查找格式)

Find方法各个参数都可以在Excel常用的查找和替换操作框中找到对应,这里不一一阐述每个参数的作用。

3、LookAt参数,精确查找OR模糊查找

数据表格

完全匹配(精确查找):Sub vv() '完全匹配(精确查找)

Dim Rng As Range

Set Rng = Range("a1:a11").Find("小乔", lookat:=xlWhole) '完全匹配(精确查找)

Debug.Print Rng.Address

End Sub

结果

上面代码在单元格A1:A11中查找小乔,如找到,即返回小乔所在的单元格。

Find方法在省略SearchOrder(查找方向)的情况下,默认是从上到下查找。

所以,Find方法之后返回第一个小乔所在的单元格A2。

部分匹配(模糊查找):查找的代码改为,同样可以找到小乔,注意查找的内容是包含“乔”这个字符的单元格。

Set Rng = Range("a1:a11").Find("乔", lookat:=xlPart) '模糊查找

如果,找不到小乔这个单元格,则会返回Nothing(找不到对象,好惨!)

所以,可以用Nothing来判断,是否找到想要的数据(单元格对象)。

Rng单元格对象变量,一开始是没有赋值的,所以是NOTHING,如果找不到数据,当然没改变,还是NOTHING。

如果找到了数据,Rng就不再是空白什么都没有了,所以是Not Nothing。

在实践中,可以用Find方法来查找如入库单中某个入库单号码是否存在来录入数据。

4、其他参数,大家可以都百度查看详细的信息,这里不一一细述,因用的不多。

下面,可以用所学到的知识来制作入库单的录入功能了。

入库单这个样子

要求:要将黄色的数据都填入到数据表格当中。其中,单据代码作为单据的唯一标识。

入库单界面和数据存储界面分离,为两个工作表。

数据表格

应用的主要知识点:1、End属性 2、Find方法。

【1】End属性获取数据条数(循环次数)R = Range("a6").End(xlDown).Row '返回数据的条数(序号列)

【2】Find方法返回Nothing判断单据代码是否存在,防止重复输入。Dim Rng As Range

Set Rng = Sheets("数据表").Range("b:b").Find(Sheets("入库单").[g3], lookat:=xlWhole) '使用精确查找

参考代码如下:Sub 录入()

Dim R As Long, R1 As Long

Dim Rng As Range

R = Sheets("入库单").Range("b6").End(xlDown).Row '数据条数(循环次数)

'检查单据代码是否存在,防止数据重复录入

Set Rng = Sheets("数据表").Range("b:b").Find(Sheets("入库单").[g3], lookat:=xlWhole)

If Rng Is Nothing Then '如果单据代码不存在,则录入数据

For i = 7 To R

'每次循环读取数据表的最新的空行行号(注意+1)

R1 = Sheets("数据表").Cells(Rows.Count, 2).End(xlUp).Row + 1

'两个工作表的单元格相对应数据,输出。

Sheets("数据表").Cells(R1, 1) = Sheets("入库单").[c3] '客户名称

Sheets("数据表").Cells(R1, 2) = Sheets("入库单").[g3] '单据代码

Sheets("数据表").Cells(R1, 3) = Sheets("入库单").[c4] '客户地址

Sheets("数据表").Cells(R1, 4) = Sheets("入库单").[g4] '开票日期

'产品代码、产品名称、数量、单价、金额

Sheets("数据表").Cells(R1, 5).Resize(1, 5).Value = Sheets("入库单").Cells(i, 2).Resize(1, 5).Value

Sheets("数据表").Cells(R1, 10) = Sheets("入库单").[c16] '经手人

Sheets("数据表").Cells(R1, 11) = Sheets("入库单").[g16] '开票人

Next

Else '如果单据代码重复,数据已经存在

MsgBox "单据代码:" & Sheets("入库单").[g3] & "已经存在,请勿重复输入"

Exit Sub '退出程序

End If

End Sub

需下载Excel文件,见下面链接。

链接: https://pan.baidu.com/s/1mAJr37NcB3e7yc5tNe2uOQ 密码: gbxe

  • 0
    点赞
  • 12
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值