au3操作Excel,怎么查找表格中是否存在“abcdefg”,找到后返回单元格的行号
au3操作Excel,怎么查找表格中是否存在“abcdefg”,找到后返回单元格的行号 语句不写,用do until 循环
在读数据的时候置2个变量 一个行 一个列,然后从第一行 第一列开始循环查找, 找到后,返回当前行号 _ExcelReadSheetToArrayEx
_arraysearch 两位大哥,你们的方法是可行的,效率很低。我的表格有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这个参数一值不明白怎么赋值,什么类型的值 netegg 大哥的方法生成数组后可以一直使用,有个缺点就是我插入一行后,数据变了,又要重新生成数组,第一次打开也要生成数组。大把大把的青春就这么没 回复 5# 495910670
插入一行,就不用重新生成数组了,直接插入数组元素就行了,udf区有二维数组的操作 本帖最后由 netegg 于 2013-5-25 10:21 编辑
再不济就用sqlite操作excel,那可能是最快的 $rng=$oexcel.activesheet.cells.find("abcdefg")
if isobj($rng) then msgbox(0,"",$rng.row)
大体这样就行了,至于是不是在activesheet里找,可以自己修改 回复 4# 495910670
很好,你能找到这样的帖子说明你还是很用心的,在论坛上找了些资料。
我可以告诉你$sRangeOrRowStart的意思是Range()的区域,表示方法如"A1:A100",这就是Excel中表示一个区域的方法。
最近我也要用到Excel表格中的查找,我原来也打算将Excel先读到数组里,不过读取数据的过程是一个很漫长的过程,看看这个自定义函数,应该会有所帮助,哈哈!
最近我也在努力学习如何将Excel中录制的宏代码转换成Au3脚本来执行,现在已经做了好几个脚本了,进展还算顺利,大家一起努力,加油! 本帖最后由 xlj310 于 2013-5-27 10:46 编辑
回复 8# kevinch
276353762
$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;"格式"
)
页:
[1]