找回密码
 加入
搜索
查看: 1026|回复: 10

[系统综合] 【已解决】如何只获取_execl_filterset函数筛选后的结果

[复制链接]
发表于 2022-10-31 16:00:35 来自手机 | 显示全部楼层 |阅读模式
本帖最后由 zhaoceshi 于 2022-11-10 23:29 编辑

如题,表格有很多数据,我在使用了_excel_filtterset函数后,得到自己想要的数据,但是怎么把筛选后的数据提取出来呢?在使用了rangeread函数去读取返回的结果不是筛选后的数据


#include <Excel.au3>
#include <MsgBoxConstants.au3>

; 创建应用对象并打开一个示例工作簿
Local $oExcel = _Excel_Open()
If @error Then Exit MsgBox($MB_SYSTEMMODAL, "Excel UDF: _Excel_FilterSet 示例", "创建 Excel 应用对象发生错误." & @CRLF & "@error = " & @error & ", @extended = " & @extended)
Local $oWorkbook = _Excel_BookOpen($oExcel, @DesktopDir & "\工作簿2.et", True)
If @error Then
    MsgBox($MB_SYSTEMMODAL, "Excel UDF: _Excel_FilterSet 示例", "打开工作簿发生错误 '" & @ScriptDir & "\Extras\_Excel1.xls'." & @CRLF & "@error = " & @error & ", @extended = " & @extended)
    _Excel_Close($oExcel)
    Exit
EndIf


; 仅显示列 2 所选值 20, 40 与 60.
Local $aShow[] = ["192*","10*"]
_Excel_FilterSet($oWorkbook, Default, Default, 1, $aShow,$xlFilterValues)
If @error Then Exit MsgBox($MB_SYSTEMMODAL, "Excel UDF: _Excel_FilterSet 示例 4", "筛选数据发生错误." & @CRLF & "@error = " & @error & ", @extended = " & @extended)

;怎么把筛选后的数据写入新的Excel表就没头绪了‘’


本帖子中包含更多资源

您需要 登录 才可以下载或查看,没有账号?加入

×
发表于 2022-11-1 14:45:19 | 显示全部楼层


1:用_Excel_RangeFind,查找范围或工作簿中匹配的单元格, 并返回匹配单元格的信息数组



2:用$addfld = ObjCreate("ADODB.Connection")
$addfld.Open("Provider=Microsoft.ACE.OLEDB.12.0;Data Source=" & $exce1 & ";Extended Properties='Excel 12.0'")
读取判断
自己先玩几天,测试一下你的思路

本帖子中包含更多资源

您需要 登录 才可以下载或查看,没有账号?加入

×
发表于 2022-10-31 22:21:36 | 显示全部楼层
zhaoceshi 发表于 2022-10-31 20:27
得到想要的数据是提现在文件表格上的,不是返回结果,所以无法写入新的表格

是显示在excel表格上?
没看到代码,说不上解决方法
发表于 2022-10-31 18:09:39 | 显示全部楼层
即然得到自己想要的数据,应该保存到TXT或写入新的excel表格。
你用_Excel_RangeRead去读取是原本的表格,怎么会是筛选后的数据
 楼主| 发表于 2022-10-31 20:27:23 来自手机 | 显示全部楼层
chzj589 发表于 2022-10-31 18:09
即然得到自己想要的数据,应该保存到TXT或写入新的excel表格。
你用_Excel_RangeRead去读取是原本的表格, ...

得到想要的数据是提现在文件表格上的,不是返回结果,所以无法写入新的表格
 楼主| 发表于 2022-11-1 01:11:18 | 显示全部楼层
chzj589 发表于 2022-10-31 22:21
是显示在excel表格上?
没看到代码,说不上解决方法

不好意思,发帖时没有电脑,所以没有代码和图片,现已补上
 楼主| 发表于 2022-11-1 20:01:46 | 显示全部楼层
_Excel_RangeFind函数不能同时筛选多个条件和指定sheet表,实际上文件有多个sheet,且还要过滤【192.168.1.1】【10.10.10.10】这些,只获取192.168.1.1、10.10.10.10这种类型数据。ObjCreate的没怎么接触过,不懂
发表于 2022-11-2 17:05:20 | 显示全部楼层
zhaoceshi 发表于 2022-11-1 20:01
_Excel_RangeFind函数不能同时筛选多个条件和指定sheet表,实际上文件有多个sheet,且还要过滤【192.168.1. ...

那就用
Local $aResult = _Excel_RangeRead
读取后进行判断,行成数组
发表于 2022-11-2 20:52:05 | 显示全部楼层
本帖最后由 lin6051 于 2022-11-2 21:00 编辑

筛选后,  用 excel 的  复制函数 就可以了

复制 粘贴到另一个表格,     有需要再读

看你个人需求,  一开始 我也用 读取到数组的方式, 数据太多几十万行容易崩
 楼主| 发表于 2022-11-10 23:29:07 | 显示全部楼层
感谢两位大神的热心帮助,问题已经解决。最近太忙了,忘记结贴了
发表于 2022-11-15 09:07:56 | 显示全部楼层
本帖最后由 chzj589 于 2022-11-15 11:04 编辑
zhaoceshi 发表于 2022-11-10 23:29
感谢两位大神的热心帮助,问题已经解决。最近太忙了,忘记结贴了

用_Excel_RangeFind+_Excel_RangeRead查询
可整表模拟查询
缺点不能多个条件与多表查询
在二千多条的表格里查询形成数组速度还是蛮快的 
您需要登录后才可以回帖 登录 | 加入

本版积分规则

QQ|手机版|小黑屋|AUTOIT CN ( 鲁ICP备19019924号-1 )谷歌 百度

GMT+8, 2024-12-23 02:16 , Processed in 0.078326 second(s), 21 queries .

Powered by Discuz! X3.5 Licensed

© 2001-2024 Discuz! Team.

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