• ベストアンサー

データの入れ替えについて

こんばんは。データの処理について是非アドバイスをお願い致します。 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と並び替えたいのです。 こちらのサイトにデータをコピーして「行と列を入れ替える」にチェックをして ペーストする、という方法があったのですが、行数が多すぎるらしく、機能して くれません。是非お力を貸して下さい。

質問者が選んだベストアンサー

  • ベストアンサー
  • imogasi
  • ベストアンサー率27% (4737/17068)
回答No.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          

d_aoki
質問者

お礼

こんにちは。早朝にも関わらず、回答ありがとうございます。 マクロを使う方法で、非常に素早くデータを処理することが 出来ました。現在はこれらのデータをグラフ化しているところです。 エクセルのマクロ機能は具体的にどのように使うのか、 というところでいつも戸惑ってしまい使っていませんでしたが、 これはやはり使えるものなのですね!これからはマクロも食わず嫌いをせずに 勉強していきたいと思います。本当にありがとうございました。

d_aoki
質問者

補足

すいません、さらに補足です。 データの対応関係もバッチリでした!

その他の回答 (2)

  • imogasi
  • ベストアンサー率27% (4737/17068)
回答No.2

#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列に並べて対比出来るよう加工できると思う。

d_aoki
質問者

補足

こんばんは。早速のお返事有難うございます。 私の説明が至らない部分があったようで、申し訳有りません。 お二人に伝わらなかった部分が共通しているようなので、こちらの方に まとめて補足させていただきます。 まず、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)
回答No.1

ちょっとよくわからないのですが、…… 結果として、   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個の点からなる散布図を書きたい、ということでいいでしょうか?

d_aoki
質問者

お礼

こんにちは。おかげさまで問題を解決することが出来ました。 近々実験の結果を報告することになっていまして、どうしようかと 焦っていたところです。ありがとうございました。

関連するQ&A

  • EXCELの「行列を入れ替える」マクロについてどなたか教えていただけないでしょうか?

    EXCELの「行列を入れ替える」マクロについてどなたか教えていただけないでしょうか? 下記のようにならんだDATAがあります。   A列   B列  C列  D列  E列 (1行)2002/12/17 15240 15280 15220 15220 (2行) (3行) (4行) (5行)2002/12/18 15250 15250 15210 15210 (6行) (7行) (8行) (9行)2002/12/19 15220 15310 15220 15310 (10行) (11行) (12行) (13行)2002/12/20 15220 15260 15210 15230 (14行) (15行) (16行) (17行)2002/12/24 15300 15310 15270 15310 (18行) (19行) (20行) (21行)2002/12/25 15300 15340 15300 15600  . . . . . . . . . . . . . . . . . . . . . . . と,このようにDATAは日付の横に数値が4つずつ横に並んでおりますが、この4つの数値をその4つ目の数値の真横のF列から縦に4つ並べたいのですが、一気にできるマクロがないものでしょうか?下記のようにです。   A列   B列 C列 D列 E列  F列 2002/12/17            15240                  15280                  15220                  15220 2002/12/18            15250                  15250                  15210                  15210 2002/12/19            15220 15310 15220 15310                   . . .                    といった感じに一気にマクロで処理してしまいたいのです。DATAはかなりの行数あり、すべて3行の間隔があります。日付の横に4つの数値が規則的に並んでいるというものです。何回でもマクロボタン一発で4つの横に並んだ数値のみを縦に並べた4つの数値にしたいのです。つたない説明で大変申し訳ありませんが、どなたかわかる方お教えくださいませ。

  • Matlab,文字を含む数値データの読み込み

    Matlabで,文字が含まれるデータから数値だけを読み込ませたいのですが,うまくいきません・・. データは,6行目まで文字が含まれており, その後100~120行ほど数値が存在します. 現在,dlmreadを用いて,その数値のみを抜きだそうと考えています. それぞれのデータ行数は分かっているため, 例えば最終行が109行目のものは dlmread ( filename , '\t' , 'A7..H109' ) という具合に書けるのですが, その行数がデータによって変化した場合, どのように読み込めばよいのでしょうか?

  • エクセルデータの列と行を入れ替える方法をご存知の方、教えて下さい。

    エクセルデータの列と行を入れ替える方法をご存知の方、教えて下さい。 今、A列(1行目から1,000行目位まで)に日付、B~F列にそれぞれ数値のデータを入れていますが、それを1行目に日付、2~6行目に数値のデータと言うように、いわゆるタテとヨコを入れ替えたいのですが、何か良い方法は無いでしょうか。 1,000日分位のデータがあるため、手で打ち換えるのもちょっと・・・ データは日付列が1列、データ列が5列、数値のみで数式などは入っていませんし、セル結合もしていません。単純に6列×1,000行位のエクセルデータです。 また、入れ替えるのでなく別のシートに入力し直す方法でも、同じシートの未使用スペースにコピーアンドペーストする方法でも構いませんし、(エクセルが何列使えるか知りませんが)1,000列使えないようなら幾つかに分割しても構いません。 ご存知の方がおられましたらよろしくお願いします!

  • エクセルデータの修正について

    横 列A~Zまで、縦 約2万行の数値データの表があります。 A列には「130」「160」「124」の3つの数値のいずれかが入っています。 このうち「130」と「160」は列の並び順がそろっているのですが、「124」の行には、D列でデータの欠如が1つあり、またW列とX列に不要なデータがそれぞれ1つ入っていて、Z列までのデータが一つ右にずれてしまっています。 この「124」のデータの横並び順を「130」「160」にそろえたいのですが、データの配置を変えずに直す良い方法はありますでしょうか? 縦並び順は、「130」「160」がランダムに72行続いた後、73行目に「124」が1行入り、これが繰り返しています。 「124」は全体で約300行ほどになります。 この300行を一度に修正し、元の配置に戻すことが出来れば、と思っております。 良い知恵がありましたら、お貸しください。 よろしくお願いいたします。

  • Excel VBAで範囲選択後にソートしたい

    OS: Windows 2000 ソフトウェア名/バージョン:Excel2000 Excelマクロで以下のような処理をしたいのですが、どのように記述したらよいのでしょうか? マクロの記述例を教えてください。 (1)Excelの複数シート上にデータがA列とB列に以下のように並んでいる。  ※以下の例の場合、3行~6行はグループ01、8行~12行はグループ02、~ (2)グループ行単位の範囲指定を実行し、その中でB列のソートを実行したい。 (3)データ行の行数、グループの数はシートごとにばらばらで決まっていない。 (4)A列のデータ行は上4桁がブランク、グループ行は上2桁がブランクとなっている。 (5)B列には数値しか入っていない。 【行数】 【A列】     【B列】 (01行)  タイトル行1 (02行)  タイトル行2 (03行) △△△△データ01 数値(78979) (04行) △△△△データ02 数値(34533) (05行) △△△△データ03 数値(21423) (06行) △△△△データ04 数値(51343) (07行) △△グループ01 (08行) △△△△データ11 数値(43522) (09行) △△△△データ12 数値(23432) (10行) △△△△データ13 数値(42312) (11行) △△△△データ14 数値(24123) (12行) △△△△データ15 数値(54343) (13行) △△グループ02 (14行) △△△△データ21 数値(64353) (15行) △△△△データ22 数値(42343) ~ ◆上記の例でやりたいこと: 1:データ行の最初の行(03行)から最初のグループ行を探してその1行前(06行)までを範囲指定してB列の数値でソート 2:最初のグループ行の次の行(08行)から次のグループ行を探してその1行前(12行)までを範囲指定してB列の数値でソート 3:2のグループの次の行(14行)から~以下、データの最終行まで処理する。 以上、よろしくお願いします。

  • エクセル縦データをズレが無く横並びに

    エクセルバージョンは、2002です。 A列に毎日処理するデータが1000行程あります。 構成としまして、基準となるデータから10行が1つのデータの構成で、途中から1行減って9行の構成に変化します。 途中から9行の構成部分から、10個目の部分に基準となる先頭部分が格納されて、構成データがズレてしまいます。 ズレるイメージ下記の通りです。 縦に並んでいるデータ(データは、文字列や数字です。) 1 2 3 4 5 6 7 8 9 10 1 2 3 4 5 6 7 8 9 1 2 3 4 5 6 7 8 9 このデータを各列のセル毎に格納 1 2 3 4 5 6 7 8 9 10 1 2 3 4 5 6 7 8 9 1 → ズレて10の部分に1が格納 2 3 4 5 6 7 8 9 1 2 → ズレて9と10の部分に1と2が格納 上記に組んである数式は、下記の通りです。 =INDEX($A$2:$A$1001,ROW(B2)*10+COLUMN(B2)-11) この式をB列からK列迄コピーして、必要な行数迄コピーしています。 このズレが無い様に表示させたい表示は 1 2 3 4 5 6 7 8 9 10 1 2 3 4 5 6 7 8 9 1 2 3 4 5 6 7 8 9 このズレが出来ない方法をご教授頂ければ幸いです。 宜しくお願い致します。

  • 関数 or マクロ(エクセル)

    行の項目と列の項目を検索して重なる部分のデータを拾いたいのですがどうもうまくいきません。初歩的なことかもしれませんが、VLOOKUPとHLOOKUP関数をあわせたようなもの。LOOKUPウィザードでもやってみるのですがうまくいかないのでよろしくお願いします。(最終的にVBAでやりたいです) 元のデータは、(Sheet3)にあって(Sheet2)で項目を並べ縦と横の項目に一致するデータを持ってきたいです。 Sheet3にあるデータは、別のブックよりVBAで検索したデータを持ってきています。 また、Sheet1、2ともその都度行数(検索項目数)が変わるので、できればデータシートの行数にあわせて行きたいのですが・・・こうなるとVBAになると思い挑戦しているのですがこれがまたうまくいきません。 で、データの行数にあわせて拾い出し、A列で最終行を検索して、L列~W列の各列の3行目に、5行目~最終行までの合計を取ろうと思っています。 説明が下手ですみませんが、よろしくお願いします。 環境:Win2000、98 Office2000です。

  • ExcelでIF関数を用いたときの散布図のエラー

    win7 64bit+Excel 2010を使用しています. Excelにて、IF関数を用いて次のように何行か入力するとします. =IF(A1="","",A1+B1) =IF(A2="","",A2+B2) これをC列に出力し,D列に任意のデータを入力します. そして,C列をx軸に,D列をy軸にして散布図をとったときに,C列の選択したセルの最後の行が空欄になっていると,A列をx軸にとった散布図になってしまいます. 入力するデータ数は定まっていないため,余裕をとって散布図表示ができるようにしたいのですが, 解決できる方法がありましたら,是非,お教え願います.

  • データの追加を反映させた散布図の作り方

    WindowsVistaです。 excelで散布図を作成しました。散布図用のデータが毎日1行づつ追加されます。 このとき、前日までのデータによる散布図に、新しいデータを反映した散布図を 表示させる方法を教えてください。 今のところは、前日までの散布図を一度削除して、新しいデータを反映した散布図を 表示させています。

  • このようなデータ処理はエクセルの関数組み合わせやオートフィルなどで可能でしょうか

    エクセルでのデータ処理に関する質問です。 ・処理する元データ ヨコ10列(A列からJ列まで)、タテ20個の数値データ ・行いたい処理 (1)それぞれの二つの列(たとえばA列とB列)の同じ行の数値データをそれぞれ三乗して足す。そのあと、足したものを合計する。 (2)すべての組み合わせについて計算する。(つまり、A列-A列、A列-B列、A列-C列、……、B列-A列、B列-B列、B列-C列、……、I列-J列、J列-J列の組み合わせ) (3)これら算出した数値を横一列(1×100)にする。 最終目標は(3)です。(1)は単純なオートフィルでなんとかなるのですが、(2)は、合計する範囲を毎回指定しなおさなくてはいけないために大変面倒です。 このような形式のデータがたくさんあるために、できるだけ手間を省きたいのですが、どうしたらいいかわかりません。オートフィルをうまく組み合わせればできるような気もしますが、どうもできません。10個計算したら次に移ってくれるようなオートフィルがあればいいのに、とか、不可能なことばかり考えてしまいます。うまくやれば、横向きに100個のセルをオートフィルで、つまんで引っ張るだけでできるような気もしますが、できません。 ご存知の方にとっては簡単なことかもしれませんが、うまくいかず、ムズムズしております。どうか、どなたかお教えいただけないでしょうか。

専門家に質問してみよう