列 a の昇順、次に b の昇順、次に d の昇順、列 e の昇順、f の昇順、h の昇順の順に並べ替える必要があります。QTP だけを使用すると、Excel でデータを正しく並べ替えることができないようです。
私が欲しいもの:
表1: | | | | b | c | d | e | ふ | グラム | 時間 | -------------------------------------------------- ------------------- | | 1 | する | 空白 | 51もの | 1 | する | 空白 | 51もの | | | 1 | する | 空白 | 100もの | 1 | する | 空白 | 100もの | | | 1 | ビー・オブ・ア | 空白 | 121もの | 1 | ビー・オブ・ア | 空白 | 121もの | | | 1 | ビー・オブ・ア | 空白 | 200もの | 1 | ビー・オブ・ア | 空白 | 200もの | | | 2 | 海 | 海 | 空白 | 5 もの | 1 | 海 | 海 | 空白 | 5 もの |
代わりに得たもの:
表 2: | | | | b | c | d | e | ふ | グラム | 時間 | -------------------------------------------------- ------------------- | | 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: | | | | b | c | d | e | ふ | グラム | 時間 | -------------------------------------------------- ------------------- | | 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