dポイントプレゼントキャンペーン実施中!

現在Excel2010VBAを使って、化学のデータからスペクトルを出すようなプログラムを考えております。
データは以下のような形です。

温度 1500 1500 1500 1400 1400 1400
時間 5 10 20 5  10  20
電流 1 3 7 11  12 13


このようなデータをまず、1行のデータの順番に並べてから、2行のデータ順に並べ替えたいと思っています。
しかし、Sortを用いたところ、実行時エラー1004RangeクラスのSortエラーが検出されてしまいます。
そこで、SortSpecialにすると、このエラーは検出されず、マクロは回るものの思った通りに整列されません。

Sheets("Rawdata").Activate
Columns("A:BE").Sort
Key1 = Range("A7")
Order1 = xlAscending
Key2 = Range("A10")
Order2 = xlAscending
Header = xlGuess
Orientation = xlLeftToRight

Excelの整列を使えばできてしまうことなのですが、VBAを用いてはできないのでしょうか?
ExcelVBAを用いて、「行のデータ」基準にして「列を並べ替える」ことは可能なのでしょうか?
どなたかご教授ください。
よろしくお願いいたします。

A 回答 (2件)

Excel2010はまだ見たことがないのですが、VBAの書き方がかわったのでしょうか?


少なくとも、2000では以下のように書きます。
( =ではなく、:=  区切りはカンマで。途中改行は、半角スペース+_ )
もちろん列を並べ替えられます。
ただし、その場合は行の並べ替えとは違い、タイトル(Header)の指定は無視されるので、最初から並べ替え範囲にはタイトル部分を入れません。

Sub test02()
  Sheets("Rawdata").Activate
  Columns("B:BE").Sort Key1:=Range("B7"), Order1:=xlAscending, _
  Key2:=Range("B10"), Order2:=xlAscending, Orientation:=xlLeftToRight
End Sub
    • good
    • 0
この回答へのお礼

ご回答ありがとうございます。

コピーしてみたところ思い通りに動きました。
私も初めに:=でやっていたのですが、そのときは修正候補=と出てきたので、そちらでやっていました。

これで研究が進みそうです。
本当にありがとうございました。

追伸:実は現在ドイツの大学に留学中で手元にVBAに関する資料が全くなくて苦労していました。

お礼日時:2010/12/07 20:32

Columns("A:BE").Sort



Range("A7:BE15").Sort
というようにすればどうなるでしょうか。
    • good
    • 0
この回答へのお礼

ご回答ありがとうございます。
さっそく試してみたものの、やはり同じエラーメッセージが出てきました。
RangeメソッドやCellメソッドの使い方は難しいです。

お礼日時:2010/12/07 20:28

お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!