使用VBA实现快速模糊查询数据

news2024/11/29 12:53:16

实例需求:基础数据保存在Database工作表中,如下图所示。
在这里插入图片描述
基础数据有37个字段,上图仅展示部分字段内容,下图中黄色字段为需要提取的数据字段。
在这里插入图片描述

Search工作表B1单元格输入查询关键字TitleGenre字段中搜索关键字,包含关键字的数据提取到Search工作表,从第4行开始保存查询结果,如下图所示。
在这里插入图片描述

示例代码如下。

Sub Demo()
    Dim res(), arr, cols
    dim lngLstRow as long
    dim strKey as String
    dim intIndex as Integer
    dim i as long, j as Integer
    lngLstRow = Sheets("Database").Cells(Rows.Count, 1).End(xlUp).Row
    arr = Sheets("Database").Range("A2:I" & lngLstRow)
    ReDim res(1 To lngLstRow, 1 To 6)
    intIndex = 1
    cols = Array(1, 3, 5, 7, 8, 9)
    strKey = Sheets("Search").[b1]
    For i = 1 To lngLstRow - 1
        If InStr(1, arr(i, 3) & arr(i, 5), strKey) > 0 Then
            For j = 1 To 6
                res(intIndex, j) = arr(i, cols(j - 1))
            Next
            intIndex = intIndex + 1
        End If
    Next
    If intIndex > 1 Then
        With Sheets("Search")
            .Range("4:10000").Clear
            .Range("A4").Resize(intIndex, 6).Value = res
        End With
    End If
End Sub

【代码解析】
第7行代码获取基础数据的最后一行所在行号。
第8行代码读取A列到I列数据,由于基础数据字段很多,全部加载到数据中,将占用更多内存,可能导致运行效率下降,因此只加载需要提取部分。
第9行代码重新声明动态数组res用于保存查询结果。
第10行代码设置变量intIndex用于指示数组res中的写入位置。
第11行代码创建数组保存需要提取的列号,这样可以简化提取数据的代码(第15~17行代码)。
第12行代码读取查询关键字。
第13~20行代码循环处理每行数据。
第14行代码判断知道字段是否包含查询关键字,arr(i, 3) & arr(i, 5)将两个字段合并为一个字符串,这样调用一次Instr函数就可以完成查询。
第15~17行代码提取指定的字段,保存到数组res中。
第18行代码变量累加1,指向下一个保存位置。
第22行代码情况保存查询结果单元格区域。
第23行代码判断是否有符合查询添加的结果,如果满足条件,第24行代码将查询结果保存在工作表中。

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/1055225.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

nginx-proxy反向代理流程

1.浏览器发送请求数据到nginx。 2.nginx先处理请求头,后处理请求体。 client_header_buffer_size #ginx可设置客户端上传header缓冲区大小 client_body_buffer_size #nginx可设置客户端上传数据缓冲区大小 client_body_t…

Android 10.0 Launcher3定制化之folder文件夹文件居中显示的功能实现

1.概述 在10.0的系统产品开发中,在对Launcher3的定制开发中的功能,在最近的产品项目中,有需求要求带默认文件夹功能,所以需要对文件夹的ui做定制化功能的修改在文件夹全屏以后,需要对子文件部分做居中处理,在居中显示比较美观,接下来就来处理居中显示的部分. 如图: 2.…

UX设计VSUI设计

UX设计在近年来国内蓬勃发展,许多人对其产生了浓厚的兴趣。那么我们应该如何通过自学来系统地学习UX设计呢?话不多说,上干货! 1、 深入了解UX设计行业 在开始学习之前,需要深入了解UX设计师的工作内容和行业发展前景。确定这是自己想要从事的职业后,再…

Armv8/Armv9 Cache知识大纲分享--思维导图

关键词:cache学习、mmu学习、cache资料、mmu资料、arm资料、armv8资料、armv9资料、 trustzone视频、tee视频、ATF视频、secureboot视频、安全启动视频、selinux视频,cache视频、mmu视频,armv8视频、armv9视频、FF-A视频、密码学视频、RME/CC…

Arm Cache学习资料大汇总

关键词:cache学习、mmu学习、cache资料、mmu资料、arm资料、armv8资料、armv9资料、 trustzone视频、tee视频、ATF视频、secureboot视频、安全启动视频、selinux视频,cache视频、mmu视频,armv8视频、armv9视频、FF-A视频、密码学视频、RME/CC…

【Java接口性能优化】skywalking使用

skywalking使用 提示:微服务中-skywalking使用 文章目录 skywalking使用一、进入skywalking主页二、进入具体服务1.查看接口 一、进入skywalking主页 二、进入具体服务 可以点击列表或搜索后,点击进入具体服务 依次选择日期、小时、分钟 1.查看接口 依次…

Kubernetes(K8s):容器编排的未来是什么?

文章目录 Kubernetes的核心概念和工作原理1. 节点(Nodes)2. 容器3. Pod4. 控制器5. 服务 Kubernetes为什么成为容器编排的首选工具?1. 自动化和可扩展性2. 多云支持3. 生态系统和社区4. 云原生开发 未来趋势:K8s如何继续发展和演进…

Moleculer微服务02

1.安装 Moleculer cli npm i moleculer-cli -g 2.创建微服务项目 moleculer init project micro-moleculer2.1 使用开发工具打开项目,执行命令npm run dev,在您的浏览器中打开 http://localhost:3000/ 如果您喜欢作者的话,帮忙点下关注&am…

Leetcode 69.x的平方根

给你一个非负整数 x ,计算并返回 x 的 算术平方根 。 由于返回类型是整数,结果只保留 整数部分 ,小数部分将被 舍去 。 注意:不允许使用任何内置指数函数和算符,例如 pow(x, 0.5) 或者 x ** 0.5 。 示例 1&#xff1…

微服务moleculer01

1.官网地址: Moleculer - Progressive microservices framework for Node.js 2. github代码地址: GitHub - moleculerjs/moleculer: :rocket: Progressive microservices framework for Node.js Moleculer是基于Node.js的一款快速、多功能的微服务框…

docker 安装本地starrocks测试环境

安装文档 Quick start: Deploy StarRocks with Docker deploy_in_docker StarRocks Docs Quick start: Deploy StarRocks with Docker deploy_in_docker StarRocks Docs 镜像版本 https://hub.docker.com/r/starrocks/allin1-ubuntu/tags?page1 docker安装starrocks

【软件工程_UML—StartUML作图工具】startUML怎么画interface接口

StartUML作图工具怎么画interface接口 初试为圆形 ,点击该接口在右下角的设置中->Format->Stereotype Display->Label,即可切换到想要的样式 其他方式 在class diagram下,左侧有interface图标,先鼠标左键选择&#xff0…

【多线程进阶】常见的锁策略

文章目录 前言1. 乐观锁 vs 悲观锁2. 轻量级锁 vs 重量级锁3. 自旋锁 vs 挂起等待锁4. 读写锁 vs 互斥锁5. 公平锁 vs 非公平锁6. 可重入锁 vs 不可重入锁总结 前言 本章节所讲解的锁策略不仅仅是局限于 Java . 任何和 “锁” 相关的话题, 都可能会涉及到以下内容. 这些特性主…

windows系统一键开启和关闭虚拟化

说明 跟虚拟化相关的三个程序 一键开启脚本 REM 开启 Hyper-V 服务 pushd "%~dp0"dir /b %SystemRoot%\servicing\Packages\*Hyper-V*.mum >hyper-v.txtfor /f %%i in (findstr /i . hyper-v.txt 2^>nul) do dism /online /norestart /add-package:"%Sy…

一步一招,教你如何制作出成功的优惠促销微传单

在当今的数字化时代,几乎所有的事情都可以在互联网上完成,包括制作宣传单。有很多在线工具可以帮助我们轻松制作出精美的商场促销宣传单。下面就以乔拓云为例,详细介绍如何简单几步制作出让人眼前一亮的商场促销宣传单。 1. 注册并登录乔拓云…

WPS Office for Linux即将面临开源

WPS Office 是一款免费(但不开源)的办公套件,目前已经在 Windows、macOS、Android、iOS 和 Linux 设备上线,由于在界面和功能上模仿了微软 Office 的部分特性,对于那些轻量办公的用户来说已经能够完全驾驭大部分需求。…

三、飞行和射击

目录 1.飞行的实现 2.限制玩家视角 3.射击的实现 4.附录 1.飞行的实现 (1)在Player预制体上挂载Configuration Joint组件,并修改其Y Drive属性 (2) 修改PlayerInput.cs和PlayerController.cs以实现飞行 PlayerIn…

【刷题笔记10.2】LeetCode: 罗马数字转整数

LeetCode: 罗马数字转整数 一、题目描述 二、分析 方法一: 将给定字符串s中的"IV", “IX”, “XL”, “XC”, “CD”, “CM” 全部替换为其他字符如:a, b, c, d, e, f 这种,然后就可以遍历累加了。 s s.replace("IV",…

【数据代理+事件处理+计算属性与监视+绑定样式+条件渲染】

数据代理事件处理计算属性与监视绑定样式条件渲染 1 数据代理1.1 回顾Object.defineProperty方法1.2 数据代理 2 事件处理2.1 绑定监听2.2 事件修饰符2.3 键盘事件 3 计算属性与监视3.1 计算属性3.2 监视属性(侦视属性)3.3 watch对比computed 4 绑定样式4.1 绑定class样式4.2 绑…

Linux命令(一)(目录相关)

目录可以更快找到你想要的命令 1. 命令入门2. 常用目录命令(cd、pwd、ls、cp、rm、mkdir)*cd:用来进入到指定的文件夹*常见操作关于绝对路径和相对路径的说明: *pwd:显示当前工作目录的路径*选项用例 *ls:显示目录中文件及其属性信…