ExcelHome技术论坛

 找回密码
 免费注册

QQ登录

只需一步,快速开始

快捷登录

搜索
EH技术汇-专业的职场技能充电站 妙哉!函数段子手趣味讲函数 Excel服务器-会Excel,做管理系统 Excel Home精品图文教程库
HR薪酬管理数字化实战 Excel 2021函数公式学习大典 Excel数据透视表实战秘技 打造核心竞争力的职场宝典
300集Office 2010微视频教程 数据工作者的案头书 免费直播课集锦 ExcelHome出品 - VBA代码宝免费下载
用ChatGPT与VBA一键搞定Excel WPS表格从入门到精通 Excel VBA经典代码实践指南
查看: 2799|回复: 15

[求助] 如何用vba根据条件查找到目标数据并标记颜色

[复制链接]

TA的精华主题

TA的得分主题

发表于 2020-3-13 15:41 | 显示全部楼层 |阅读模式
[广告] Excel易用宝 - 提升Excel的操作效率 · Excel / WPS表格插件       ★免费下载 ★       ★ 使用帮助
要实现的效果:
点击“查找”按钮,在下表中的“物料代码”列查找模糊等于b2单元格数值的记录,如果找到,跳到所找的行并将整行背景色标黄。如果没找到跳出对话框“没有找到!” image.png 请大佬指导,谢谢!!

求助.zip

10.92 KB, 下载次数: 12

TA的精华主题

TA的得分主题

发表于 2020-3-13 15:50 | 显示全部楼层
基础功能直接就提供有这种问题的解决方法,用不着VBA的。
数据——筛选——文本筛选——包含

TA的精华主题

TA的得分主题

发表于 2020-3-13 15:59 | 显示全部楼层


Sub ChaXun()
Dim STR, MK, i
STR = Range("b2")
MK = Range("b7").End(4).Row
Range("A" & 8 & ":G" & MK).Interior.Color = 100000
For i = 8 To MK
  If InStr(Range("b" & i), STR) Then Range("A" & i & ":G" & i).Interior.Color = 255
Next i
End Sub

TA的精华主题

TA的得分主题

发表于 2020-3-13 16:00 | 显示全部楼层
[广告] VBA代码宝 - VBA编程加强工具 · VBA代码随查随用  · 内置多项VBA编程加强工具       ★ 免费下载 ★      ★使用手册
简单点就这样
Sub Test()
    Dim i, j, k, arr, brr, x, y
    Dim rng As Range, r As Range
   Sheet1.Activate
   Cells.Interior.ColorIndex = 0
   Set rng = Range("b8:b21")
   Set r = rng.Find(what:=Cells(2, 2).Value, lookat:=xlPart)
   If r Is Nothing Then MsgBox "查无此数据": Exit Sub
   r.Select
   r.EntireRow.Interior.Color = vbYellow
End Sub

评分

1

查看全部评分

TA的精华主题

TA的得分主题

 楼主| 发表于 2020-3-13 16:02 | 显示全部楼层
ggmmlol 发表于 2020-3-13 15:50
基础功能直接就提供有这种问题的解决方法,用不着VBA的。
数据——筛选——文本筛选——包含

你好,因为这个数据有点多,需要找出一个就标个颜色代表找到了,如果用筛选的话时间有点长,我现在的操作方式是直接ALT+F 查找,查找到后再手动标记颜色.如果用VBA的可以节约一个手动标颜色的时间,这个时间就节约很多了.

TA的精华主题

TA的得分主题

发表于 2020-3-13 16:07 | 显示全部楼层
  1. Sub test()
  2.     Dim i, k, num, arr
  3.     With Sheets("Sheet1")
  4.         num = .[B2].Value
  5.         arr = .UsedRange
  6.         For i = 8 To UBound(arr)
  7.                 If InStr(arr(i, 2), num) > 0 Then
  8.                     k = 1
  9.                     .Range(Cells(i, 1), Cells(i, UBound(arr, 2))).Interior.Color = vbYellow
  10.                     .Range(Cells(i, 1), Cells(i, UBound(arr, 2))).Select
  11.                     Exit Sub
  12.                 End If
  13.         Next
  14.         If k = 0 Then MsgBox "没有找到!"
  15.     End With
  16. End Sub
复制代码


评分

1

查看全部评分

TA的精华主题

TA的得分主题

发表于 2020-3-13 16:08 | 显示全部楼层
请参考附件:





料表.rar (10.07 KB, 下载次数: 11)

TA的精华主题

TA的得分主题

发表于 2020-3-13 19:00 | 显示全部楼层
zhenhao1989 发表于 2020-3-13 16:02
你好,因为这个数据有点多,需要找出一个就标个颜色代表找到了,如果用筛选的话时间有点长,我现在的操作方式 ...

也可以“查找”办法解决:

先“查找全部”,之后按Ctrl + A键就可以选中对话框的列表中全部符合条件的单元格,关闭对话框,然后填充选中的单元格,再按填充格式做排序(或筛选),最后对筛选的结果(或排序后聚集在一起的结果)做整行填充。

当然,最好的办法是自动筛选或高级筛选。高级筛选适用于多个不同的关键字都要突出显示的情况。

TA的精华主题

TA的得分主题

发表于 2020-3-13 19:47 | 显示全部楼层
录个宏
Sub Macro1()
    Range("B2").NumberFormatLocal = "@"
    zf = [B2]
    Range("B7:B21").Select
    Selection.AutoFilter
    ActiveSheet.Range("$B$7:$B$21").AutoFilter Field:=1, Criteria1:= _
        "=*" & zf & "*", Operator:=xlAnd
End Sub

评分

2

查看全部评分

TA的精华主题

TA的得分主题

 楼主| 发表于 2020-3-14 08:11 | 显示全部楼层

谢谢大神,但现在有个新的请求,不知能否实现,就是当"物料代码"那列有多个内容和B2相似时,请把它们筛选出来而不要标颜色. 再就是在查找边上加个解除筛选的按扭.   主要目的就是我们查找时,有多个相似的时候,筛选出来我们手动标色,然后按解除筛选好接着查找. 谢谢
您需要登录后才可以回帖 登录 | 免费注册

本版积分规则

关闭

最新热点上一条 /1 下一条

手机版|关于我们|联系我们|ExcelHome

GMT+8, 2024-4-26 23:00 , Processed in 0.047831 second(s), 13 queries , Gzip On, MemCache On.

Powered by Discuz! X3.4

© 1999-2023 Wooffice Inc.

沪公网安备 31011702000001号 沪ICP备11019229号-2

本论坛言论纯属发表者个人意见,任何违反国家相关法律的言论,本站将协助国家相关部门追究发言者责任!     本站特聘法律顾问:李志群律师

快速回复 返回顶部 返回列表