找回密码
 加入
搜索
查看: 5148|回复: 9

[系统综合] au3操作Excel,怎么查找表格中是否存在“abcdefg”,找到后返回单元格的行号

  [复制链接]
发表于 2013-5-16 22:31:49 | 显示全部楼层 |阅读模式
au3操作Excel,怎么查找表格中是否存在“abcdefg”,找到后返回单元格的行号
发表于 2013-5-17 08:09:20 | 显示全部楼层
语句不写,
用do until 循环
在读数据的时候置2个变量 一个行 一个列,然后从第一行 第一列开始循环查找, 找到后,返回当前行号
发表于 2013-5-19 03:04:41 | 显示全部楼层
_ExcelReadSheetToArrayEx
_arraysearch
 楼主| 发表于 2013-5-25 09:46:13 | 显示全部楼层
两位大哥,你们的方法是可行的,效率很低。我的表格有5500*51个单元格,使用你们的方法,搜索一次要几分钟,得不偿失
不知道这个http://www.autoitx.com/forum.php?mod=viewthread&tid=2176  帖子里面的
找字串 $sFindWhat
_ExcelFindInRange($oExcel, $sFindWhat, $sRangeOrRowStart, $iColStart = 1, $iRowEnd = 1, $iColEnd = 1, $iDataType = 0, $iWholeOrPart = 2, $fMatchCase = False, $fMatchFormat = False)

自定义函数里面的这个方法会不会好点。你们知道这个函数里面各个参数是什么意思吗?
举个例子行吗?
$sRangeOrRowStart这个参数一值不明白怎么赋值,什么类型的值
 楼主| 发表于 2013-5-25 09:49:35 | 显示全部楼层
netegg 大哥的方法生成数组后可以一直使用,有个缺点就是我插入一行后,数据变了,又要重新生成数组,第一次打开也要生成数组。大把大把的青春就这么没
发表于 2013-5-25 10:17:57 | 显示全部楼层
回复 5# 495910670
插入一行,就不用重新生成数组了,直接插入数组元素就行了,udf区有二维数组的操作
发表于 2013-5-25 10:19:58 | 显示全部楼层
本帖最后由 netegg 于 2013-5-25 10:21 编辑

再不济就用sqlite操作excel,那可能是最快的
发表于 2013-5-25 16:03:51 | 显示全部楼层
$rng=$oexcel.activesheet.cells.find("abcdefg")
if isobj($rng) then msgbox(0,"",$rng.row)
大体这样就行了,至于是不是在activesheet里找,可以自己修改

评分

参与人数 1金钱 +10 收起 理由
jianganew + 10

查看全部评分

发表于 2013-5-26 18:00:34 | 显示全部楼层
回复 4# 495910670

很好,你能找到这样的帖子说明你还是很用心的,在论坛上找了些资料。
我可以告诉你$sRangeOrRowStart的意思是Range()的区域,表示方法如"A1:A100",这就是Excel中表示一个区域的方法。

最近我也要用到Excel表格中的查找,我原来也打算将Excel先读到数组里,不过读取数据的过程是一个很漫长的过程,看看这个自定义函数,应该会有所帮助,哈哈!

最近我也在努力学习如何将Excel中录制的宏代码转换成Au3脚本来执行,现在已经做了好几个脚本了,进展还算顺利,大家一起努力,加油!
发表于 2013-5-26 18:10:15 | 显示全部楼层
本帖最后由 xlj310 于 2013-5-27 10:46 编辑

回复 8# kevinch


    $oExcel.Selection.Find($sFindWhat, $oExcel.ActiveCell, $iDataType, $iWholeOrPart, Default, Default, $fMatchCase, Default, $fMatchFormat)

你只赋值了第一个参数,呵呵,这是函数原型
$iDataType, $iWholeOrPart, Default, Default, $fMatchCase, Default, $fMatchFormat)

Find(
        $sFindWhat;"要查找的值",
        $oExcel.ActiveCell;"查找的起始位置(FindNext可以用此位置作哨兵)"
        $iDataType;"查找值的字符类型xlValues为-4163, xlFormulas为-4123(默认),xlComments为-4144"
        $iWholeOrPart;"完全匹配Or部分匹配,1为完全,2为部分",
        $SearchOrder;"以行的方式Or列的方式查找, xlByRows值1(默认), xlByColumns值2", 
        $SearchDirection;"查找方向,向前查找(XlPrevious值2) 向后查找(xlNext值1,默认)"
        $fMatchCase;"区分大小写,默认为False"
        $MatchByter;"区分全角/半角"
        $fMatchFormat;"格式"
)
您需要登录后才可以回帖 登录 | 加入

本版积分规则

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

GMT+8, 2024-6-2 13:31 , Processed in 0.085279 second(s), 24 queries .

Powered by Discuz! X3.5 Licensed

© 2001-2024 Discuz! Team.

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