建站之星网站模版商城,备案域名批量查询,长沙网页设计培训班哪家好,2021最新免费的推广引流软件实例需求#xff1a;基础数据保存在Database工作表中#xff0c;如下图所示。 基础数据有37个字段#xff0c;上图仅展示部分字段内容#xff0c;下图中黄色字段为需要提取的数据字段。
在Search工作表B1单元格输入查询关键字Title和Genre字段中搜索关键字#xff0c;包…实例需求基础数据保存在Database工作表中如下图所示。 基础数据有37个字段上图仅展示部分字段内容下图中黄色字段为需要提取的数据字段。
在Search工作表B1单元格输入查询关键字Title和Genre字段中搜索关键字包含关键字的数据提取到Search工作表从第4行开始保存查询结果如下图所示。
示例代码如下。
Sub Demo()Dim res(), arr, colsdim lngLstRow as longdim strKey as Stringdim intIndex as Integerdim i as long, j as IntegerlngLstRow Sheets(Database).Cells(Rows.Count, 1).End(xlUp).Rowarr Sheets(Database).Range(A2:I lngLstRow)ReDim res(1 To lngLstRow, 1 To 6)intIndex 1cols Array(1, 3, 5, 7, 8, 9)strKey Sheets(Search).[b1]For i 1 To lngLstRow - 1If InStr(1, arr(i, 3) arr(i, 5), strKey) 0 ThenFor j 1 To 6res(intIndex, j) arr(i, cols(j - 1))NextintIndex intIndex 1End IfNextIf intIndex 1 ThenWith Sheets(Search).Range(4:10000).Clear.Range(A4).Resize(intIndex, 6).Value resEnd WithEnd 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行代码将查询结果保存在工作表中。