如何使用 VBA 在 Excel 表格中搜索并标记数据
如何使用 VBA 在 Excel 表格中搜索并标记数据
问题:
一家香料店开展了打折活动,以促进新店的开业。为此,一些产品以 1.00 美元(1 美元)的价格出售,以吸引更多的客户。你需要在工作表中找到售价为 1 美元的商品。一旦找到商品,这些商品中每个商品的名称和售价单元格的背景颜色都会变为绿色。此外,你需要在这些商品旁边(在
C
列中)写上
特价
。
分析:
- 获取工作表的行数
- 从表头往下 1 行开始;循环价格所在的列
- 如果价格等于 1 ,则向左偏移 1 单元格,将产品名称单元格和价格单元格标记为绿色
- 同时向右偏移 1 单元格,填上 "特价"
- 继续循环直到最后的商品
答案:
- 首先声明变量,并在工作表中找到最后一行
Dim LastRow As Long
Dim CellVal As Long
Dim i As Integer
LastRow = Cells(Rows.Count, 2).End(xlUp).Row
- 使用 for 循环,从第 3 行开始,循环到末尾
- 使用 if 判断单元格值,是否等于 1;如果等于 1,就往右偏移 1 列,将该单元格赋值为:特价
- 同时使用 Resize 扩展函数,从产品名称向右扩展 2 列,即包括产品名称和价格,将其背景色填充为绿色:RGB(140, 198, 63)
For i = 3 To LastRow
CellVal = Cells(i, 2).Value
If CellVal = 1 Then
Cells(i, 2).Offset(, 1).Value = "特价"
Cells(i, 1).Resize(, 2).Interior.Color = RGB(140, 198, 63)
End If
Next i
然后插入表单控件-按钮;右键编辑名称、指定宏;最后点击运行即可
- 完整代码示例:
Sub Solution()
Dim LastRow As Long
Dim CellVal As Long
Dim i As Integer
LastRow = Cells(Rows.Count, 2).End(xlUp).Row
For i = 3 To LastRow
CellVal = Cells(i, 2).Value
If CellVal = 1 Then