找回密码
 加入
搜索
查看: 1646|回复: 5

[AU3基础] 【已解决】excel两单元格的内容分别是222和222-22,在au3里相等,怎么使它们不相等?

  [复制链接]
发表于 2018-4-23 14:57:07 | 显示全部楼层 |阅读模式
本帖最后由 la2ygoo 于 2018-4-24 10:38 编辑

不改变xls内容的前提下,怎么让$a1=$b1的判断语句不成立?然后如果内容是数值222和文本222,我需要$a1=$b1,成立
不用StringLen,可以做到吗?(需要操作的xls有几万行,所以想效率高点)
#include <Excel.au3>
#include <MsgBoxConstants.au3>

Local $xls,$oxls1,$oxls2,$s1,$s2,$a1,$b1
$xls = _Excel_Open()
$oxls1 = $xls.WorkBooks.Open("D:\gao\au3\test.xls")
$s1=$oxls1.Worksheets("Sheet1")
$a1=$s1.range("a1").value ;~ a1是222,b1是222-22
$b1=$s1.range("b1").value
If $a1=$b1 then MsgBox(1,"1","1") ;~成立。怎么使$a1=$b1不成立?
if 222="222-22" then MsgBox(1,"2","2") ;~成立
If "222"="222-22" then MsgBox(1,"3","3") ;~不成立
发表于 2018-4-23 15:23:29 | 显示全部楼层
整个表读入数组,再比对判断多省事
        Local $erp_su[5001][15]
$xls = ObjGet($phe&"cx.csv");1物编,2描述,5数量,19作业号,22订单号, 21上线时间 27条码号
ConsoleWrite($phe&"cx.csv")
If Not IsObj($xls) Then
MsgBox(0,"错误","ObjGet(\cx.csv不是一个对象.")
Else
EndIf

         With $xls.activesheet
                $erp_cx  = .usedrange.value
                                $erp_cx  = .parent.application.transpose($erp_cx )
                .parent.close(False)
        EndWith
 楼主| 发表于 2018-4-23 16:26:13 | 显示全部楼层
回复 2# duxing

你的回帖好像和我的问题没关系。
其实我的问题主要就是au3判断数字和文本相不相等时,文本只会取前几位的数字,之后的“-”和字母之类的字符会忽略。

222和“222-22”、“222aaa”是相等的,和数组没关系。
而“222”和“222-22”、“222aaa”不相等
发表于 2018-4-23 16:57:46 | 显示全部楼层
回复 3# la2ygoo
兩個 ==

IF $a==$b THEN
发表于 2018-4-24 08:58:02 | 显示全部楼层
先判断单元格格式.$a1=$s1.range("a1").NumberFormatLocal,数字和文本这个格式是不同的,
第二.字符串比较格式如楼上所说==,而非=
 楼主| 发表于 2018-4-24 10:40:59 | 显示全部楼层
回复 4# kk_lee69

感谢。
原来这么基础,看来我要多看一下帮助文件
您需要登录后才可以回帖 登录 | 加入

本版积分规则

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

GMT+8, 2024-11-16 16:33 , Processed in 0.071647 second(s), 19 queries .

Powered by Discuz! X3.5 Licensed

© 2001-2024 Discuz! Team.

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