Warning: file_get_contents(/data/phpspider/zhask/data//catemap/5/excel/28.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
如何让QTP和Excel正确排序?_Excel_Vbscript_Qtp - Fatal编程技术网

如何让QTP和Excel正确排序?

如何让QTP和Excel正确排序?,excel,vbscript,qtp,Excel,Vbscript,Qtp,我需要按a列升序,b列升序,d列升序,e列升序,f列升序,h列升序排序。仅使用QTP,我似乎无法让Excel对数据进行正确排序 我想要的是: Table 1: | a | b | c | d | e | f | g | h | --------------------------------------------------------------------- | 1 | BE | blank | 51 s

我需要按a列升序,b列升序,d列升序,e列升序,f列升序,h列升序排序。仅使用QTP,我似乎无法让Excel对数据进行正确排序

我想要的是:

Table 1: | a | b | c | d | e | f | g | h | --------------------------------------------------------------------- | 1 | BE | blank | 51 stuff | 1 | BE | blank | 51 stuff | | 1 | BE | blank | 100 stuff | 1 | BE | blank | 100 stuff | | 1 | BE OF A | blank | 121 stuff | 1 | BE OF A | blank | 121 stuff | | 1 | BE OF A | blank | 200 stuff | 1 | BE OF A | blank | 200 stuff | | 2 | SEA | blank | 5 stuff | 1 | SEA | blank | 5 stuff |
尝试将数据加载到对象中。您可以按如下方式对记录集进行排序:

rs.Sort = "a ASC, b ASC, d ASC, e ASC, f ASC, h ASC"
然后将排序后的数据复制到Excel或写入CSV

rs.MoveFirst
Do Until rs.EOF
  For i = 0 To rs.Fields.Count - 1
    'copy/write rs.Fields(i).Value
  Next
  rs.MoveNext
Loop

我还没有机会尝试这个。而且不会持续很长时间。我会让你知道它是否有效。同时,我也发现了排序不好的原因。有人操纵了数据,在“f”列中为“BE OF A”添加了一个额外的“隐藏”字符,我在调试时没有注意到这个字符。
'Some Code Stuff here which leads to exporting the worksheet

rangeOne = "E1:H" & totalRowCnt
Set rangeObj = worksheetOne.Range(rangeOne)
Set range1 = excel1Obj.Range("E1")
Set range2 = excel1Obj.Range("F1")
Set range3 = excel1Obj.Range("H1")
rangeObj.Sort range1, ascend1, range2, ,ascend1, range3, ,ascend1,yes1

'Save worksheet then import sorted data back into Datatable 
'and add more Code Stuff here which leads to exporting the worksheet again

rangeOne = "A1:D" & totalRowCnt
Set rangeObj = worksheetOne.Range(rangeOne)
Set range1 = excel1Obj.Range("A1")
Set range2 = excel1Obj.Range("B1")
Set range3 = excel1Obj.Range("D1")
rangeObj.Sort range1, ascend1, range2, ,ascend1, range3, ,ascend1,yes1

'Save worksheet then end script
rs.Sort = "a ASC, b ASC, d ASC, e ASC, f ASC, h ASC"
rs.MoveFirst
Do Until rs.EOF
  For i = 0 To rs.Fields.Count - 1
    'copy/write rs.Fields(i).Value
  Next
  rs.MoveNext
Loop