zhaoceshi 发表于 2022-10-31 16:00:35

【已解决】如何只获取_execl_filterset函数筛选后的结果

本帖最后由 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表就没头绪了‘’




chzj589 发表于 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'")
读取判断
自己先玩几天,测试一下你的思路

chzj589 发表于 2022-10-31 22:21:36

zhaoceshi 发表于 2022-10-31 20:27
得到想要的数据是提现在文件表格上的,不是返回结果,所以无法写入新的表格

是显示在excel表格上?
没看到代码,说不上解决方法

chzj589 发表于 2022-10-31 18:09:39

即然得到自己想要的数据,应该保存到TXT或写入新的excel表格。
你用_Excel_RangeRead去读取是原本的表格,怎么会是筛选后的数据

zhaoceshi 发表于 2022-10-31 20:27:23

chzj589 发表于 2022-10-31 18:09
即然得到自己想要的数据,应该保存到TXT或写入新的excel表格。
你用_Excel_RangeRead去读取是原本的表格, ...

得到想要的数据是提现在文件表格上的,不是返回结果,所以无法写入新的表格

zhaoceshi 发表于 2022-11-1 01:11:18

chzj589 发表于 2022-10-31 22:21
是显示在excel表格上?
没看到代码,说不上解决方法

不好意思,发帖时没有电脑,所以没有代码和图片,现已补上

zhaoceshi 发表于 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的没怎么接触过,不懂

chzj589 发表于 2022-11-2 17:05:20

zhaoceshi 发表于 2022-11-1 20:01
_Excel_RangeFind函数不能同时筛选多个条件和指定sheet表,实际上文件有多个sheet,且还要过滤【192.168.1. ...

那就用
Local $aResult = _Excel_RangeRead
读取后进行判断,行成数组

lin6051 发表于 2022-11-2 20:52:05

本帖最后由 lin6051 于 2022-11-2 21:00 编辑

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

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

看你个人需求,一开始 我也用 读取到数组的方式, 数据太多几十万行容易崩

zhaoceshi 发表于 2022-11-10 23:29:07

感谢两位大神的热心帮助,问题已经解决。最近太忙了,忘记结贴了

chzj589 发表于 2022-11-15 09:07:56

本帖最后由 chzj589 于 2022-11-15 11:04 编辑

zhaoceshi 发表于 2022-11-10 23:29
感谢两位大神的热心帮助,问题已经解决。最近太忙了,忘记结贴了
用_Excel_RangeFind+_Excel_RangeRead查询
可整表模拟查询
缺点不能多个条件与多表查询
在二千多条的表格里查询形成数组速度还是蛮快的 
页: [1]
查看完整版本: 【已解决】如何只获取_execl_filterset函数筛选后的结果