我需要按列 a 升序,然后 b 升序,然后 d 升序和按列 e 升序,然后 f 升序,然后 h 升序排序。仅使用 QTP,我似乎无法让 Excel 对数据进行正确排序。
我想要的是:
表格1: | 一个 | 乙 | c | d | 电子| f | 克 | h | -------------------------------------------------- ------------------ | 1 | 是 | 空白 | 51 东西 | 1 | 是 | 空白 | 51 东西 | | 1 | 是 | 空白 | 100 个东西 | 1 | 是 | 空白 | 100 个东西 | | 1 | 成为一个 | 空白 | 121 东西 | 1 | 成为一个 | 空白 | 121 东西 | | 1 | 成为一个 | 空白 | 200 东西 | 1 | 成为一个 | 空白 | 200 东西 | | 2 | 东南亚 | 空白 | 5 东西 | 1 | 东南亚 | 空白 | 5 东西 |
我得到的是:
表 2: | 一个 | 乙 | c | d | 电子| f | 克 | h | -------------------------------------------------- ------------------ | 1 | 是 | 空白 | 100 个东西 | 1 | 成为一个 | 空白 | 121 东西 | | 1 | 是 | 空白 | 51 东西 | 1 | 成为一个 | 空白 | 200 东西 | | 1 | 成为一个 | 空白 | 121 东西 | 1 | 是 | 空白 | 100 个东西 | | 1 | 成为一个 | 空白 | 200 东西 | 1 | 是 | 空白 | 51 东西 | | 2 | 东南亚 | 空白 | 5 东西 | 1 | 东南亚 | 空白 | 5 东西 |
e 到 h 列首先被填充和排序。通常,这些列的单元格按表 1 中所示的正确排序顺序填充。但是,也有排序顺序不正确的情况,但这种情况很少见。也许 100,000 次尝试中有 1 次会填充未排序的数据。
a 到 d 列最后被填充和排序。这些列的单元格以某种随意的方式填充。表 3 说明了一个非常简单的最终结果,没有强制进行排序。
表3: | 一个 | 乙 | c | d | 电子| f | 克 | h | -------------------------------------------------- ------------------ | 1 | 是 | 空白 | 100 个东西 | 1 | 是 | 空白 | 51 东西 | | 1 | 是 | 空白 | 51 东西 | 1 | 是 | 空白 | 100 个东西 | | 1 | 成为一个 | 空白 | 121 东西 | 1 | 成为一个 | 空白 | 121 东西 | | 1 | 成为一个 | 空白 | 200 东西 | 1 | 成为一个 | 空白 | 200 东西 | | 2 | 东南亚 | 空白 | 5 东西 | 1 | 东南亚 | 空白 | 5 东西 |
让 QTP 和 Excel 返回表 1 中显示的结果的最佳方法是什么?有没有办法?
我正在使用的代码片段:
'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