51Testing软件测试论坛

标题: excel两列比较的问题 [打印本页]

作者: trademark    时间: 2008-7-14 16:20
标题: excel两列比较的问题
我用QTP录制等操作后把结果写到了excel文件里的两列内,A列的第一个格内容为a,b,c,B列的第一个格的内容为c,a,b
我现在需要写什么样的程序让QTP判断这两列的内容是一样的(A列和B列内容是一样,只是排列顺序不一样)
如果A列是a,b,c,d,B列是a,b,c,那么A和B列的值就不等了。

请高手指教
作者: zte_boy    时间: 2008-7-14 16:46
split每格内容,然后循环取B中的Iitem值,在A中查找比对(for each就可以了)
作者: xyuan007    时间: 2008-7-14 17:08
楼上的方法,内容多的话会比较慢。
我的办法:遍历EXCEL的所有行,把第一列的内容取出来,SORT以后组成字符串A;第二列内容也是SORT以后组成字符串B,然后比较两个字符串就成了。
作者: yabest    时间: 2008-7-14 19:07
测试脚本要简单的好,速度倒是其次的。
而且每格的数据流又不大,速度差不了多少。
作者: trademark    时间: 2008-7-15 12:37
在写的时候又遇到一问题,就是qtp不能取到除Global外的Sheet的最大行数之类的操作

不知大家有没什么好的办法,因为如果把取到的值放到Global里会很乱
作者: dycadrtf    时间: 2008-7-15 14:50
学习来啦
作者: trademark    时间: 2008-7-15 17:01
该脚本都已搞定,谢谢各位提供的建议
作者: zte_boy    时间: 2008-7-15 17:18
建议你贴出来供其他有需要的朋友参考参考,
作者: trademark    时间: 2008-7-16 10:06
把最主要实现的地方贴出来:
'得到GenVal表单的最大行数
rowcount = DataTable.GetSheet("GenVal").GetRowCount
'操作Excel对象
Set xlApp= CreateObject("Excel.Application")
Set wkBook= xlApp.Workbooks.Open("C:\sg.xls")
Set wkSheet= wkBook.Worksheets("GenVal")
'从本地excel文件的第二行开始循环到第十一行
For i=2 to rowcount+1
'将excel里的第i行第2列数据然后转换成字符再去除两边空格后通过字符内部空格进行分割成数组
MyArray1=split(trim(CStr(wkSheet.Cells(i, 2)))," ")
MyArray2=split(trim(CStr(wkSheet.Cells(i,3)))," ")
s=0'统计,如各数组内元素匹配,则s加1,不匹配则不加1,最后通过s与数组最大下标比较,相同则说明两个数组元素都匹配
'判断两个数组哪个大,根据下标大的数组和下标小的数组进行循环比较
If  Ubound(MyArray1)>=Ubound(MyArray2) Then
  For j=0 to Ubound(MyArray1)
   For k=0 to Ubound(MyArray2)
    '去除括号及括号内部的内容
    If left(MyArray1(j),instr(1,MyArray1(j),"(")-1)=left(MyArray2(k),instr(1,MyArray2(k),"(")-1) Then
     s=s+1
     Exit for
    End If
            Next
  Next
  If s<>Ubound(MyArray1)+1 Then
   print trim(CStr(wkSheet.Cells(i, 1)))
  End If
Else
  For j=0 to Ubound(MyArray2)
   For k=0 to Ubound(MyArray1)
    If left(MyArray2(j),instr(1,MyArray2(j),"(")-1)=left(MyArray1(k),instr(1,MyArray1(k),"(")-1) Then
     s=s+1
     Exit for
    End If
   Next
  Next
  If s<>Ubound(MyArray2)+1 Then
   print trim(CStr(wkSheet.Cells(i, 1)))
  End If
End If
Next
wkBook.Close
xlApp.quit
作者: 鹭岛    时间: 2008-7-16 11:40
使用CELLS这个函数,可以用第几列第几行来弄的~~~
CELLS(行,列)




欢迎光临 51Testing软件测试论坛 (http://bbs.51testing.com/) Powered by Discuz! X3.2