ashfinal 发表于 2011-9-1 01:25:17

不错 mark 有空学习下

SHINE 发表于 2011-9-1 21:36:01

这个太高深了~~~过段时间再向各位讨教吧~~呵呵呵,先讨教下下面这个问题吧~

$oExcelApp=ObjGet("","excel.application")这句,如果我同时打开了1.xls和2.xls(是手动打开的),但是我只想对1.xls操作,需要怎么写呢?谢谢~~

kevinch 发表于 2011-9-1 21:49:02

$o_Workbook1=$oExcelApp.workbooks("1.xls")然后对$o_Workbook1操作即可。

SHINE 发表于 2011-9-2 21:35:56

问题解决了一个,又发现一个,唉~~
今天试到一个奇怪的问题-------------用下面这段程式在excel中查找字符串,excel中有很多合并了的单元格(被查的字符也在此合并的单元格内):
1.如果该字符串在excel中出现了2次以上,则程式正常执行
2.如果该字符串在excel中仅出现了1次,则提示 Until $oR.address=$oRng.address不能被执行。试了下,发现是$oR=.usedrange.findnext($oR)出的问题,.usedrange.findnext($oR)找不到。
3.如果是在普通excel中(没有合并项)中查找,则不会出现以上问题

不懂为什么会这样~~Func searchcell($sFindValue)
    With $oExcel
                $oRng=.usedrange.find($sFindValue)
                If IsObj($oRng) Then
                        $oR=$oRng
                        Do
                              MsgBox(0,"GetColor",$oR.interior.color)
                              $oR=.usedrange.findnext($oR)
                        Until $oR.address=$oRng.address
                EndIf
      EndWith
MsgBox(0,"END","END")
EndFunc

unique009 发表于 2011-9-3 18:45:45

这个感觉挺有用的

xms77 发表于 2011-9-3 20:42:52

回复 15# kevinch
看出来了,你是个高人,还是个热心人,有你是AU3论坛的福气!

kevinch 发表于 2011-9-3 21:17:35

回复 21# xms77
我是吹水的高人,au3学得很菜的。

kevinch 发表于 2011-9-3 21:21:27

回复 19# SHINE
在excel中,findnext默认会从指定位置开始一直向后找,当找不到时会回到开始继续找,这样就会形成最开始找到并记住的位置与现在位置一样,从而达到退出条件成立,你说的情况我似乎没遇到过,对于合并单元格是不会影响到find的,因为find找到的是合并区域左上角单元格的位置。

SHINE 发表于 2011-9-3 21:28:45

高手都喜欢谦虚的哈,呵呵

ndyzx 发表于 2011-9-4 01:24:12

向你学习致敬。

SHINE 发表于 2011-9-4 08:30:05

回复 23# kevinch

附件是试到的情况,如果被查询的字符串不在合并单元格里面,看起来就没问题,可是如果在的话,就报错,如附件图片~~

SHINE 发表于 2011-9-4 10:09:24

虽然不知道是怎么一回事,不过还是用kevinch在其他帖子中提到的,将合并项解开的方式把这个问题给绕过去了~~谢谢kevinch~~
嗯,不过还是希望找一个好的解决方式~~期待中~~Func searchcell($sFindValue)
    With $oExcel
                $oRng=.usedrange.find($sFindValue)
                If IsObj($oRng) Then
                        $oR=$oRng
                     Do
                                                If $oR.mergecells=True Then
                                                       $oR.select
                                                       $oR.parent.parent.parent.selection.unmerge
                                                       $oR.parent.parent.parent.selection.cells.value=$oR.value
                                               EndIf
                                               
                                                  $adress=$oR.offset(1,0).address;在我所需要操作的excel里面,不会出现上下两个连续单元格的值一样的情况,解组合之后也只需要其中一个
                                                               
                                                        MsgBox(0,"GetColor",$oExcel.name&@TAB&$oR.address&@TAB&$oRng.address)
                                                        $oR=.usedrange.findnext($oR)
                                                               
                                                        If $oR.offset.address=$adress Then
                                                           $oR=.usedrange.findnext($oR)
                                                        EndIf
                                                          
                        Until $oR.address=$oRng.address
                EndIf
      EndWith
EndFunc

kevinch 发表于 2011-9-4 10:10:15

Func searchcell($sFindValue)
        With $oExcel
                $oRng = .usedrange.find($sFindValue)
                If IsObj($oRng) Then
                        $oR = $oRng
                        Do
                                MsgBox(0, "GetColor", $oExcel.name & @TAB & $oR.address & @TAB & $oRng.address)
                                $oR = .usedrange.findnext($oR)
                                If Not IsObj($oR) Then ExitLoop
                        Until $oR.address = $oRng.address
                EndIf
        EndWith
EndFunc   ;==>searchcell确实与vba有差别,要多加个判断。

SHINE 发表于 2011-9-4 10:22:27

谢谢kevinch ! 这样好用多了~~
If Not IsObj($oR) Then ExitLoop
我之前用msgbox看$oR=.usedrange.findnext($oR)的值,看到是空,但是不知道要用什么语句来判断~~

69041480 发表于 2012-11-12 16:27:56

追问高手:找到一个结果后,如何操作该行?我想要的是删除这一行或选定这一行复制到另一个表中
页: 1 [2]
查看完整版本: 【已解决】求教---快速查找excel中指定字符串