- ベストアンサー
データの入れ替えについて
こんばんは。データの処理について是非アドバイスをお願い致します。 Excel98でとある数値データを処理しなければいけないことになったのですが、 まずこれを並び替えないといけないのです。最終的にXY散布図を作りたいの ですが、そのYに対応するデータが横に並んでしまっているのです。より正確に 書くと、400行×6列くらいのデータでして、データの構成は例えば A B C 1 1 2 3 2 4 5 6 3 7 8 9 という様になっています。これを1-2-3…7-8-9と並び替えたいのです。 こちらのサイトにデータをコピーして「行と列を入れ替える」にチェックをして ペーストする、という方法があったのですが、行数が多すぎるらしく、機能して くれません。是非お力を貸して下さい。
- みんなの回答 (3)
- 専門家の回答
質問者が選んだベストアンサー
テストデータとして A1からG1まで各セルに1から7 A2からG2まで各セルに8から14 A3からG3まで各セルに15から21を入力する。 (ちゃんと並んだことが判るように、1からの整数にしています。) VBEの画面で、挿入-モジュールで Sub test01() k = 1 For i = 1 To 100 For j = 1 To 7 Worksheets("sheet1").Cells(k, 2) = Worksheets("sheet2").Cells(i, j) 'この行前行に続けること k = k + 1 Next j Next i End Sub と打ちこみ実行する。 Sheet1のB列に1~21まで順に並びます。 これでSheet1のA1とB1、A2とB2、A3とB3、・・・の ペアーは正しい対応関係になるのでしょうか。 (上記VBAの仮定他注記) 1.Sheet1にX系列のデータがA列に縦に並んでいるものと 仮定しています。 2.kはSheet1での、行(数)を示すポインターです。 3.Sheet2の各行が7列で皆そろっていると、質問の内容を受けとっています。もし不ぞろいなら後記。 4.for i=1 to 100 の100は最下行のつもりです。 最下行を察知する方法がありますが省略。 5.Worksheets("sheet1").Cells(k, 2)の2はB列を示します。 もしD列にセットするから4に変えることになります 6.Worksheets("sheet2").Cells(i, j)のiとjは、 Sheet2のi行j列の意味です。 7.各行でデータ数(列数)が不揃いの場合 各行に1からの整数を順に入れて適当に改行しテストデータにしてください。 Sub test01() k = 1 For i = 1 To 100 For j = 1 To 20 '一番データが沢山入っている行のデータ数を '20と仮定 If Worksheets("sheet2").Cells(i, j) = "" Then Exit For Worksheets("sheet1").Cells(k, 2) = Worksheets("sheet2").Cells(i, j) k = k + 1 Next j Next i End Sub
その他の回答 (2)
- imogasi
- ベストアンサー率27% (4737/17069)
#1の方もそうらしいが、良く判らない。 エクセルで散布図を作るのなら A B 1 2 8 のようにデータが2列に並ん でおれば 2 4 2 直ぐプロットさせることが出 来る。 3 3 5 現状は左記のX系列(A列) 4 5 7 はどう記録されているのです か。 5 9 8 A1,A2、・・・とデータは入っ ているのですか。 6 2 5 さてY系列はどう言う風に現あ るシートに 7 5 5 記録されているのですか。 8 ・ ・ 解せないのはA1,B1,C1,・・・ に並べていくと256列で限界になりますが、どうなるのですか。1-2-3・・・7-8-9と9列で打ちきり、その後は第2行に続くのですか。(1)X系列はどう(2)Y系列はどう(3)どのXとどのYが対応すべきなのか(4)シートまたはブックは異なるのか同じかなど図示しないと答えられないのでは。 法則性があれば、短いVBAでA列とB列に並べて対比出来るよう加工できると思う。
補足
こんばんは。早速のお返事有難うございます。 私の説明が至らない部分があったようで、申し訳有りません。 お二人に伝わらなかった部分が共通しているようなので、こちらの方に まとめて補足させていただきます。 まず、X系列のデータですが、これは別に作っています。なので、今考えて いるのはY系列のデータのみです。それで、取り込んだ状態のデータは A B C D E F G 1 1 2 3 4 5 6 7 2 1 2 3 4 5 6 7 3 1 2 3 4 5 6 7 という風になっていて、これを A 1 A1 2 B1 3 C1 ↓ 7 G1 8 A2 9 B2 ↓ というようにしたい、というのが私が意図するところです。ですので wolvさんがイメージされた内容でよろしいと思います。 恐らく、私の質問の中にあった、「1-2-3…7-8-9」という部分で 誤解を生じさせてしまったものと思います。そして、この並び変えした データを別のシートにペーストして散布図のためのデータとするのが 最終的な目的です。つまり、横を縦に直したい、ということなんです(^^;) 伝わりましたでしょうか・・・?是非、よろしくお願い致します。
- wolv
- ベストアンサー率37% (376/1001)
ちょっとよくわからないのですが、…… 結果として、 A B C D E F G H I 1 1 2 3 4 5 6 7 8 9 のようにしたいということなのですか? xに関する情報は別に2400個あって、 yに対応する400行×6列のデータとあわせて、 2400個の点からなる散布図を書きたい、ということでいいでしょうか?
お礼
こんにちは。おかげさまで問題を解決することが出来ました。 近々実験の結果を報告することになっていまして、どうしようかと 焦っていたところです。ありがとうございました。
お礼
こんにちは。早朝にも関わらず、回答ありがとうございます。 マクロを使う方法で、非常に素早くデータを処理することが 出来ました。現在はこれらのデータをグラフ化しているところです。 エクセルのマクロ機能は具体的にどのように使うのか、 というところでいつも戸惑ってしまい使っていませんでしたが、 これはやはり使えるものなのですね!これからはマクロも食わず嫌いをせずに 勉強していきたいと思います。本当にありがとうございました。
補足
すいません、さらに補足です。 データの対応関係もバッチリでした!