热门标签 | HotTags
当前位置:  开发笔记 > 编程语言 > 正文

ExcelVBA筛选技巧全解:3.16版多元组合筛选,轻松掌握高效数据处理方法

本文详细介绍了ExcelVBA3.16版本中的多种组合筛选技巧,帮助用户高效地处理复杂数据。通过丰富的示例和详细的代码解析,读者可以轻松掌握这些强大的数据筛选方法,提高日常工作中的数据处理效率。无论是初学者还是资深用户,都能从中受益匪浅。

Excel VBA之函数篇-3.16多样筛选组合任君选 筛选功能从此是路人前景提要

hi,我回来了,经过了昨日晚上一夜的奔波之后,终于成功的在凌晨杀回了自己的床上,你要问我路况如何,我只能告诉你,大晚上也不轻松啊,好在能够顺利到达,哈哈

昨天我们分享了如何通过like()函数来实现数据的筛选,可能是因为昨天忙于赶车,比较着急,我看了下我好像并没有介绍完一些比较常用的功能,今天就继续来分享下like()函数再筛选方面的强大功能吧。函数说明

like()函数的筛选是非常强大的,昨天和今天的案例中的那些筛选特点,是我综合自己日常工作中和平时帮其他同事写一些小代码的时候,总结出来的,可能并不完善,但是基本上应该够用了,当大家知道了like()函数的这些强大的功能之后,可能在之后的工作中, 会慢慢的抛弃excel自身的筛选功能,因为很多我们需要的筛选功能,它都没有办法实现。上代码

我们还是采用上节我们的案例,当然为了演示的效果,自然还是会不断的更改一些数据

今天我们依然来完成三个比较奇怪的要求

1.E-G开头,m-x结尾的数量Sub B9000b()

Dim i&

For i = 2 To 16

If Cells(i, "d") Like "[E-G]*[m-x]" Then

Cells(i, "d").Interior.Color = vbYellow

End If

Next i

End Sub

效果图如上,注意我圈中的那两个了嘛?看起来非常的相似,并且好像也符合我们的要求,但是为什么上面的被选中了,但是下面的却没有被选中呢?认真学习我们分享的童鞋一定知道,如果不知道的话,出门右拐,看看上一节3.15的分享吧

2.第5位是字母的数量

这个要求似乎和上节的最后一个要求有点类似哦,不同的是,上节的是要求要有从第二位开始往后都是数字,但是这里仅仅是要求第5为是数字,那么如何写呢?

我们讲过“*”代表的是占位符,霸占位置的意思,而#也是占位符,同时他也代表数字,难道正确的答案应该是“****#*”我们来试下Sub B9000b()

Dim i&

For i = 2 To 17

If Cells(i, "d") Like "****#*" Then

Cells(i, "d").Interior.Color = vbYellow

End If

Next i

End Sub

看看结果变成什么样子了

这个结果似乎有点出乎我们的意料之外,我们仅仅是想要得到第5位是数字的订单号,但是我们来看看结果,全部都选中了,只有一个没有数字的纯英文的订单号没有被选中,而选中的结果中,有些完全不符合我们的要求,比方说test上面2个,G200Ax,第5位并不是数字,而实一个问好,这很明显不符合我们的要求,证明我们的写法存在错误,为什么会这样呢?

这里要解释下,"*"他虽然是霸位的那个,你可以理解不管他是霸占一个位置也好,霸占5个位置也好,他都叫霸占,俺么再程序上可能就理解,他至少霸占了一个,那么看看我们的数据,至少霸占了一个,那就是第一位,从第一位开始,第二位是数字的有哪些?是不是剩下的都是属于这种情况呢?所以结果才会出现这样打的偏差,那么我们要怎么处理呢?

今天在分享一个新的知识点,那就是另外一个特殊符号"?",他也算是占位符,但是他就属于比较老实一点的那种霸位的人,他一次只霸占一个位置,那么就是说一个"?"就代表了一个位置的意思了,那么既然第5位是数据,那么我只需要填上4个?+一个#,也就是这样的格式"????#*?",我们再代码中验证下Sub B9000b()

Dim i&

For i = 2 To 17

If Cells(i, "d") Like "????#*?" Then

Cells(i, "d").Interior.Color = vbYellow

End If

Next i

End Sub

虽然结果还是很多,但是你看看是不是都符合要求了,第5位数都是数字,不是数字的,都没有被选中,是不是很完美呢?

3.包含?号的数量和

既然我们前面讲到了"?"的用法,那么不可避免的就会牵扯到一个问题,如果我们要筛选的数据,刚好里面就有?,而且?又正好是我们的参考标注呢,你不要说不可能,我换个场景,假设你再处理从网络中爬取的数据的时候,有些字符因为编码的问题,你爬出来的数据可能含有各种乱七八糟的符号,其中就有可能有?,某一些英文都转化成为了?,那么你要怎么办呢?Sub B9000b()

Dim i&

For i = 2 To 19

If Cells(i, "d") Like "*[?]*" Then

Cells(i, "d").Interior.Color = vbYellow

End If

Next i

End Sub

成功的将含有?的数据找了出来,你会看到含有*。#的数据,那么这些要如何实现呢,当成一个小练习,大家模拟着上面的代码就可以实现了。

总结

==========================================================================

OK ,今天的分享就到这里了,按照计划关于like()的分享,截止到本篇就结束了,章节也是比较的多,因为like()的应用场景延伸出来还是非常的广泛的,在一些日常工作中,小编经常用来进行复杂的数据筛选和数据是否包含于某种类型的情况下使用,大家也可以结合自己的实际场景使用需求来灵活运用。

==========================================================================

本人已经打算长期分享一些网络搜集的各种VBA知识,如果大家有问题也可以提出来共同解决,一起进步,毕竟VBA的世界还是很大的。

如果你有什么想要分享的,或者有什么想要知道的,都可以留言等方式告诉我,大家一起努力进步。

好了,明晚19:00,准时再见。

=============================历史相关文章==============================



推荐阅读
  • 通过在项目中引用 NuGet 包 `ExcelDataReader`,可以实现高效地读取和导入 Excel 文件中的数据。具体方法是在项目中执行 `Install-Package ExcelDataReader` 命令,然后通过定义一个 `LeadingIn` 方法并传入上传文件的路径来完成数据导入。该方法不仅简化了代码逻辑,还显著提升了数据处理的效率和可靠性。 ... [详细]
  • 在 Vbox 和 Hbox 布局中,当用户点击容器添加一个矩形时,系统会自动为该矩形分配坐标并打印其位置信息。此外,在按键事件触发时,系统仅打印当前矩形的坐标值。这两种布局在特定的交互场景下,能够动态地管理和更新子组件的位置。 ... [详细]
  • 在C#中开发多线程应用程序变得高效且简便,与之前使用VB时的复杂性和局限性形成鲜明对比。C#不仅提供了丰富的多线程编程模型,还简化了线程管理、同步和通信等关键任务,使得开发者能够更加轻松地构建高性能的应用程序。此外,C#的异步编程特性进一步增强了多线程应用的开发效率和可维护性。 ... [详细]
  • 池子比率:BSV 区块链上的去中心化金融应用——Uniswap 分析
    池子比率:BSV 区块链上的去中心化金融应用——Uniswap 分析 ... [详细]
  • 本项目在Java Maven框架下,利用POI库实现了Excel数据的高效导入与导出功能。通过优化数据处理流程,提升了数据操作的性能和稳定性。项目已发布至GitHub,当前最新版本为0.0.5。该项目不仅适用于小型应用,也可扩展用于大型企业级系统,提供了灵活的数据管理解决方案。GitHub地址:https://github.com/83945105/holygrail,Maven坐标:`com.github.83945105:holygrail:0.0.5`。 ... [详细]
  • 在 Linux 系统中,`/proc` 目录实现了一种特殊的文件系统,称为 proc 文件系统。与传统的文件系统不同,proc 文件系统主要用于提供内核和进程信息的动态视图,通过文件和目录的形式呈现。这些信息包括系统状态、进程细节以及各种内核参数,为系统管理员和开发者提供了强大的诊断和调试工具。此外,proc 文件系统还支持实时读取和修改某些内核参数,增强了系统的灵活性和可配置性。 ... [详细]
  • 利用ViewComponents在Asp.Net Core中构建高效分页组件
    通过运用 ViewComponents 技术,在 Asp.Net Core 中实现了高效的分页组件开发。本文详细介绍了如何通过创建 `PaginationViewComponent` 类并利用 `HelloWorld.DataContext` 上下文,实现对分页参数的定义与管理,从而提升 Web 应用程序的性能和用户体验。 ... [详细]
  • PyQt5 QTextEdit:深入解析Python中多功能GUI库的应用与实现
    本文详细探讨了 PyQt5 中 QTextEdit 组件在 Python 多功能 GUI 库中的应用与实现。PyQt5 是 Qt 框架的 Python 绑定,提供了超过 620 个类和 6000 个函数及方法,广泛应用于跨平台应用程序开发。QTextEdit 作为其中的重要组件,支持丰富的文本编辑功能,如富文本格式、文本高亮和自定义样式等。PyQt5 的流行性不仅在于其强大的功能,还在于其易用性和灵活性,使其成为开发复杂用户界面的理想选择。 ... [详细]
  • 掌握DSP必备的56个核心问题,我已经将其收藏以备不时之需! ... [详细]
  • 本文探讨了如何利用Python的反射机制,高效地将Excel中的数据映射并转换为类对象属性。通过反射技术,可以动态地读取Excel文件中的数据,并将其加载到内存中,转换为相应的类对象,从而方便进行后续的数据处理和操作。该方法适用于需要频繁从Excel导入数据的场景,能够显著提高开发效率和代码可维护性。 ... [详细]
  • 使用PyQt5与OpenCV实现电脑摄像头的图像捕捉功能
    本文介绍了如何使用Python中的PyQt5和OpenCV库来实现电脑摄像头的图像捕捉功能。通过结合这两个强大的工具,用户可以轻松地打开摄像头并进行实时图像采集和处理。代码示例展示了如何初始化摄像头、捕获图像并将其显示在PyQt5的图形界面中。此外,还提供了详细的步骤说明和代码注释,帮助开发者快速上手并实现相关功能。 ... [详细]
  • 本文详细介绍了 Sublime Text 3 在 2021 年的激活密钥及其在线激活方法。用户可以通过提供的链接访问云海天教程,获取更多详细的激活码信息和操作步骤。此外,文章还提供了安全可靠的激活方案,帮助用户顺利激活软件,提升编程效率。 ... [详细]
  • 在处理数据框时,常见的需求是从Excel文件中读取数据,并清除所有字段中的特定字符,如分号。由于列中可能包含多种数据类型,直接操作可能会引发AttributeError。为避免此类错误,建议使用Pandas库中的`applymap`方法,结合自定义函数来实现字符的高效移除。 ... [详细]
  • Sublime Text 3 注册密钥及激活方法详解
    本文详细介绍了Sublime Text 3的注册密钥获取与激活方法,旨在帮助用户合法且高效地使用这款强大的文本编辑器。文章不仅提供了最新的注册密钥信息,还涵盖了详细的激活步骤,确保用户能够顺利激活软件,享受其带来的便捷与高效。此外,文中还简要对比了Sublime Text 3与其他主流文本编辑器的功能差异,为用户提供更多选择参考。 ... [详细]
  • 在 CentOS 7 系统中,为了扩展根目录(/)的存储空间,本文详细介绍了从虚拟机硬盘扩容到文件系统调整的全过程。通过具体的操作步骤,成功解决了因空间不足导致的 GNOME 桌面无法正常登录的问题,为用户提供了一套完整的解决方案。 ... [详细]
author-avatar
Magic淘
这个家伙很懒,什么也没留下!
PHP1.CN | 中国最专业的PHP中文社区 | DevBox开发工具箱 | json解析格式化 |PHP资讯 | PHP教程 | 数据库技术 | 服务器技术 | 前端开发技术 | PHP框架 | 开发工具 | 在线工具
Copyright © 1998 - 2020 PHP1.CN. All Rights Reserved | 京公网安备 11010802041100号 | 京ICP备19059560号-4 | PHP1.CN 第一PHP社区 版权所有