2000元课程
免费学7天
函数+VBA
一、示例数据准备
首先,让我们准备示例数据表格(Sheet1):
A | B | C | D | E | |
---|---|---|---|---|---|
1 | 序号 | 商品编号 | 商品名称 | 单价 | 备注 |
2 | 1 | A001 | 苹果手机 | 6999 | 热销产品 |
3 | 2 | B234 | 华为平板 | 3299 | 新品上架 |
4 | 3 | A002 | 小米手环 | 199 | 促销中 |
5 | 4 | C789 | AirPods | 1288 | 库存紧张 |
6 | 5 | B110 | 三星手表 | 2399 | 限时特价 |
7 | 6 | A003 | iPad Pro | 6488 | 预售中 |
二、基础查找示例
1. 查找A开头的商品编号
Sub 查找A编号商品()
Dim 单元格 As Range
Dim 写入行号 As Long
写入行号 = 2 '从第2行开始写入结果
With Sheet1
'清空F列原有内容
.Range("F:F").ClearContents
'写入表头和序号
.Range("F1").Value = "查找结果"
.Range("F2:F7").Value = .Range("A2:A7").Value
'在B列查找A开头的商品编号
For Each 单元格 In .Range("B2:B7")
If Not IsEmpty(单元格) Then
If CStr(单元格.Value) Like "A*" Then
.Cells(写入行号, 6).Value = .Cells(单元格.Row, 1).Value & " - " & 单元格.Value
写入行号 = 写入行号 + 1
End If
End If
Next
End With
End Sub
运行结果:
F | |
---|---|
1 | 查找结果 |
2 | 1 - A001 |
3 | 3 - A002 |
4 | 6 - A003 |
2. 查找包含"手"字的商品名称
Sub 查找手字商品()
Dim 单元格 As Range
Dim 写入行号 As Long
写入行号 = 2 '从第2行开始写入结果
With Sheet1
'清空F列原有内容
.Range("F:F").ClearContents
'写入表头和序号
.Range("F1").Value = "包含'手'的商品"
.Range("F2:F7").Value = .Range("A2:A7").Value
For Each 单元格 In .Range("C2:C7")
If Not IsEmpty(单元格) Then
If CStr(单元格.Value) Like "*手*" Then
.Cells(写入行号, 6).Value = .Cells(单元格.Row, 1).Value & " - " & 单元格.Value
写入行号 = 写入行号 + 1
End If
End If
Next
End With
End Sub
运行结果:
F | |
---|---|
1 | 包含'手'的商品 |
2 | 1 - 苹果手机 |
3 | 5 - 三星手表 |
三、高级查找示例
1. 查找特定价格范围商品
Sub 查找价格范围()
Dim 单元格 As Range
Dim 写入行号 As Long
写入行号 = 2 '从第2行开始写入结果
With Sheet1
'清空F列原有内容
.Range("F:F").ClearContents
'写入表头和序号
.Range("F1").Value = "1000-3000元商品"
.Range("F2:F7").Value = .Range("A2:A7").Value
For Each 单元格 In .Range("D2:D7")
If Not IsEmpty(单元格) Then
If 单元格.Value >= 1000 And 单元格.Value <= 3000 Then
.Cells(写入行号, 6).Value = .Cells(单元格.Row, 1).Value & " - " & _
.Cells(单元格.Row, 3).Value & " - " & 单元格.Value
写入行号 = 写入行号 + 1
End If
End If
Next
End With
End Sub
运行结果:
F | |
---|---|
1 | 1000-3000元商品 |
2 | 4 - AirPods - 1288 |
3 | 5 - 三星手表 - 2399 |
2. 复合条件查找
Sub 复合条件查找()
Dim 单元格 As Range
Dim 写入行号 As Long
Dim 商品编号 As String
Dim 商品价格 As Double
写入行号 = 2 '从第2行开始写入结果
With Sheet1
'清空F列原有内容
.Range("F:F").ClearContents
'写入表头和序号
.Range("F1").Value = "A开头且价格>5000的商品"
.Range("F2:F7").Value = .Range("A2:A7").Value
For Each 单元格 In .Range("B2:B7")
If Not IsEmpty(单元格) Then
商品编号 = CStr(单元格.Value)
商品价格 = .Cells(单元格.Row, 4).Value
If 商品编号 Like "A*" And 商品价格 > 5000 Then
.Cells(写入行号, 6).Value = .Cells(单元格.Row, 1).Value & " - " & _
商品编号 & " - " & .Cells(单元格.Row, 3).Value & " - " & 商品价格
写入行号 = 写入行号 + 1
End If
End If
Next
End With
End Sub
运行结果:
F | |
---|---|
1 | A开头且价格>5000的商品 |
2 | 1 - A001 - 苹果手机 - 6999 |
3 | 6 - A003 - iPad Pro - 6488 |
四、优化建议
记得在代码开始时关闭屏幕更新,结束时打开:
Application.ScreenUpdating = False
'代码主体
Application.ScreenUpdating = True
总结
通过添加行号和表头,使示例数据和查找结果更加规范和清晰。在实际应用中,建议:
保持数据表格结构统一,包含序号列
结果输出时包含原始序号,便于追踪
适当添加格式化,提高可读性
考虑添加错误处理机制
注意性能优化
希望这些示例能帮助你更好地理解和使用Like运算符!如果有任何问题,欢迎在评论区交流!
记不住代码不妨试试VBA代码助手
vba代码助手(vbayyds.com)
AI写代码, 代码翻译, 一键混淆加密,中文输入提示
只用1招 让AI编写VBA代码的准确率提高2倍
买课程可进永久答疑群,课程可免费试学点击下方链接 v.excel880.com
2000元课程
免费学7天
函数+VBA