
VB2008を使用しています。
VBからExcelのデータを並べ替えしたいのですが、どうやればいいのかわかりません。
VBからExcelを立ち上げ、シートおよびセルを参照するところまではできています。
下記を実行するとA列とD列が入れ替わっているだけです。
k_syain_Sheet.Range("A1:D10000").Sort(k_syain_Sheet.Range("A2"), Microsoft.Office.Interop.Excel.XlSortOrder.xlAscending, _
k_syain_Sheet.Range("D2"), , Microsoft.Office.Interop.Excel.XlSortOrder.xlAscending, _
k_syain_Sheet.Range("B2"), Microsoft.Office.Interop.Excel.XlSortOrder.xlAscending)
やりたいことは、Excel上のA1~D10000にデータが入っており、A1~D1はタイトル行です。
これから、最優先されるキー「A1」 2番目に優先されるキー「D1」 3番目に優先されるキー「B1」(それぞれ昇順)として並べ替えをしたいのです。
よろしくお願いします。
No.1ベストアンサー
- 回答日時:
#私は VB2008 自体のことはさっぱり解りません!!
#見当違いな回答でしたら、お見捨てください。
#また、追加でご質問いただいてもお答え致しかねます。
#飽くまで、「参考意見」ということで。。。
>A列とD列が入れ替わっているだけです。
お示しのコード以前に「列による並べ替え」が行なわれていませんでしょうか?
Excel 自体で [Sort メソッド] による並べ替えを行なった場合、
-- ここから引用 ------------------------------------ [Sort メソッド] ヘルプより--
Header、Order1、Order2、Order3、OrderCustom、および Orientation の設定は、このメソッドを使用するたびに、特定のワークシートについて保存されます。次にこのメソッドを使用するときに、これらの引数を指定しなかった場合は、保存されていた値が使用されます。保存されている値を使用しない場合は、Sort メソッドを使用するときにこれらの引数を明示的に設定してください。
----------------------------------------------------------------- ここまで引用 --
ということになっています。
>A列とD列が入れ替わっているだけです。
ということは、Excel では
Orientation:=xlLeftToRight
になっていると思われますので、
>これらの引数を明示的に設定してください。
が VB2008 の [Sort メソッド] にも言えることでしたら、
Orientation:=xlSortRows
を「明示的に設定」する必要があるということになると存じます。
つまり、
●NamedRange.Sort メソッド
http://msdn.microsoft.com/ja-jp/library/microsof …
の「Visual Basic (使用法)」にある
returnValue = instance.Sort(Key1, Order1, Key2, Type, Order2, Key3, Order3, Header, OrderCustom, MatchCase, Orientation, SortMethod, DataOption1, DataOption2, DataOption3)
で申すなら
Header, OrderCustom, , Orientation, , , , )
の部分は「引数を明示的に設定」した方が無難ということになるかと存じます。
で、「VB2008 のことは解りません」ので何とも申せませんが、
, Microsoft.Office.Interop.Excel.XlSortOrder.xlAscending)
を
, Microsoft.Office.Interop.Excel.XlSortOrder.xlAscending,,,,xlSortRows)
にするみたいなことではないかなぁと思ってしまいました。
【ご参考までに】
●COM 相互運用機能の省略可能なパラメータについて
http://msdn.microsoft.com/ja-jp/library/ms178843 …
No.2
- 回答日時:
VBのことはよくわかりませんが、ちょっと気になったことが1つ。
ソートキーの指定の後のカンマの数が"A2"と"B2"の場合と"D2"の場合とが違っています。
これが影響しているのでは?
お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!
似たような質問が見つかりました
- Visual Basic(VBA) ローマ字、ハイフン付きの並び替え ローマ字抽出方法 Excelマクロ 4 2022/04/01 14:10
- Visual Basic(VBA) Excelで横書き50行の漢字テストデータを縦書きのテスト問題にしたい。 6 2022/04/27 15:03
- Excel(エクセル) 関数EXACT(文字列,文字列)とexcelVBA 3 2022/04/14 15:07
- Visual Basic(VBA) VBAコードを張り付け後のエクセルの進め方 2 2023/02/07 18:24
- Visual Basic(VBA) Excel VBAで並べ替えをしたい 3 2023/02/25 09:31
- Visual Basic(VBA) excel2021で実行できないマクロ。どこを直したらいいのか 2 2022/03/28 03:40
- Visual Basic(VBA) エクセル VBA 処理スピードを上げたいのですが。 6 2023/03/31 20:52
- Visual Basic(VBA) エクセル VBA 条件付き書式 簡略化したい 2 2022/06/02 17:46
- Excel(エクセル) VBAで組み合わせ算出やCOUNTIFSの処理を高速化したいです。 4 2022/04/07 02:38
- Visual Basic(VBA) EXCELのVBAについて 2 2023/07/05 17:17
関連するカテゴリからQ&Aを探す
おすすめ情報
デイリーランキングこのカテゴリの人気デイリーQ&Aランキング
-
エクセルVBAで、条件に一致する...
-
0歳児の指しゃぶりに関して
-
final修飾子を使っているのに、...
-
処理内容がほぼ同じメソッドの...
-
【sendkeysメソッドが動かずに...
-
VBA コピーが出来ません…!
-
mainメソッドのthrows節で設定...
-
VBPをダブルクリックするとたま...
-
エクセルVBAにおけるON TIMEメ...
-
VB.netで、シリアル通信のタイ...
-
vbaエクセルマクロ RemoveDupli...
-
Labelコントロールに数字を代入...
-
vbaエクセルマクロ RemoveDupli...
-
C# 演算 最大値 最小値 表現の仕方
-
ExcelVBA Findメソッドで検索の...
-
javaでの日付の大小比較について
-
CALLされていないメソッドを見...
-
DAOのExcelVBAにてAccessのデー...
-
日本の教育って時間が無い中で...
-
VB6と2008、SQL使用方法の違い...
マンスリーランキングこのカテゴリの人気マンスリーQ&Aランキング
-
エクセルVBAで、条件に一致する...
-
DataGridViewでセルクリックイ...
-
【sendkeysメソッドが動かずに...
-
コマンドプロンプト実行後に画...
-
VBA コピーが出来ません…!
-
ウィンドウを最前面にできません
-
JSPで<SELECT>の中にDBから持っ...
-
javascriptからjavaを呼び出したい
-
VBPをダブルクリックするとたま...
-
eclipse-Tomcatでのデバッグに...
-
Application.Wait の参照設定
-
エクセルVBAにおけるON TIMEメ...
-
配列のメソッド
-
エクセルのマクロでプリンタを...
-
final修飾子を使っているのに、...
-
drawStringで文字間隔の調整
-
Excel VBA でExcelを終了したい...
-
worksheets & rows メソッドは...
-
CALLされていないメソッドを見...
-
vbaエクセルマクロ RemoveDupli...
おすすめ情報