la2ygoo 发表于 2018-4-23 14:57:07

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

本帖最后由 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") ;~不成立

duxing 发表于 2018-4-23 15:23:29

整个表读入数组,再比对判断多省事
        Local $erp_su
$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

la2ygoo 发表于 2018-4-23 16:26:13

回复 2# duxing

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

222和“222-22”、“222aaa”是相等的,和数组没关系。
而“222”和“222-22”、“222aaa”不相等

kk_lee69 发表于 2018-4-23 16:57:46

回复 3# la2ygoo
兩個 ==

IF $a==$b THEN

tubaba 发表于 2018-4-24 08:58:02

先判断单元格格式.$a1=$s1.range("a1").NumberFormatLocal,数字和文本这个格式是不同的,
第二.字符串比较格式如楼上所说==,而非=

la2ygoo 发表于 2018-4-24 10:40:59

回复 4# kk_lee69

感谢。
原来这么基础,看来我要多看一下帮助文件
页: [1]
查看完整版本: 【已解决】excel两单元格的内容分别是222和222-22,在au3里相等,怎么使它们不相等?