2011-11-14 6 views
1

誰もがバリアントバリアントのソート?

var_a = activesheet.range("A3:AL" & lastrow).value 

    var_a 1 column has some numbers 
    var_a 2 column has dates 2/22/2011 like these 
    var_a 3 column some other and so on 

を並べ替えで私を助けてもらえ今全体のバリアントvar_aは日付を

を持つ列2を考慮し、昇順にソートしなければならない私は、シート上で行うための方法を知っているが、私はシートをソートして、var_aにシートの内容を取得することができますが、シートをソートすることは望ましくないので、私はシートの代わりにバリアントを並べ替えたい30から40秒を取っています。

これらのおかげで

+0

シートのソートに30〜40秒かかる場合は、1トンの行が必要です。シート上のソート機能は非常に速く、よく実装されています。 :o – aevanko

+0

@Issunは行のトンではありません私はちょうど20000 :)行を持っている代わりに、すべてのセルは数式を持っていますそれはちょうど自分自身をリフレッシュする時間がかかるかもしれません – niko

+0

シートをソートしながら自動更新をオフにすることはできますか?このようにして、数式はプロセスを評価して速度を落とす必要はありません。 –

答えて

0

ニコ、

のではなく、あなたがこのためにExcelのネイティブのソートを使用する必要がありますバリアント内のソート・ルーチンを実装します。あなたは(私は最初あなたが手計算で現在のデータをソートしてみてください示唆)あなたの現在のファイルで苦労している場合は、この問題を回避するには、

  • になり、あなたの現在のファイルからあなたの変種を導き出す
  • にバリアントをダンプ
  • 並べ替えを実行して新しいソートバリアント配列を作成するか、既存のバリアント配列を更新する
  • ソート済みのバリアント配列を元のファイルにダンプします(または操作しないでください)さらに必要に応じて)
+1

私はそれが感謝したこれらの方法を試みた – niko

0

で私を助けてくださいここにあなたのニーズに合うようにソートアルゴリズムVB6を拾うには絶好の場所です:http://www.codeguru.com/vb/gen/vb_misc/algorithms/article.php/c14627

そして、ちょうどあなたは、変換中にバリアント変数をラップする必要があるかもしれないことを覚えておいてください関数(つまり、cint()、cstr()など)を適切にソートしたい場合は、たとえば、最初に1000を配置するため、1000と20を文字列としてソートする必要はありません。

関連する問題