• ベストアンサー

EXCELでの並べ替え

縦一列(EXCELの場合A列に10000以上もあります)にずらっと並んだデータがあります。 このデータは、測定を100回ぐらい行ったデータが下に加算されてるため縦長なのです。 そこでこのデータを1回の測定データごとに一列に並べたいと考えています。 それぞれのデータの頭にはpointやらnoneという文字があるので、その文字が出てきたら列を変える!みたいなプログラムをEXCELでは出来ないのでしょうか? あまりプログラムとかわからないので、何か簡単に並べかえる方法ってないでしょうか? 丁寧に教えていただけたら嬉しいです。よろしくお願いいたします。

  • 128yen
  • お礼率92% (513/553)

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

  • ベストアンサー
  • don_cha
  • ベストアンサー率34% (139/407)
回答No.4

あ、1回目と2回目の測定データの間に空のセルが存在しませんか?もし存在するということであれば、 'データの抽出&並び替え For ii = 1 To 65535 <=この65535をデータ最終行値に変更して、 'データが存在しない場合は並び替え終了 If IsEmpty(Sheet1.Cells(ii, 1)) Then Exit For End If の部分を消してください。 これで上手く行くと思います。

128yen
質問者

お礼

おおおおおおおおっ、できました。(量が多いのでかなり時間がかかりますが。。。) 本当にご丁寧にありがとうございました。 かなり尊敬してます。。。20ptじゃなくて10000ptぐらい差し上げたい気分です。 またこういうデータ整理とかで困ったことがあると思いますので、その時はまたよろしくお願いします。

その他の回答 (3)

  • don_cha
  • ベストアンサー率34% (139/407)
回答No.3

質問の内容の確認ですが、データは、以下のような感じであるのですよね?  A列 1:point 2:1 3:2 4:3 5:4 6:none 7:5 8:6 9:7 10:8 11:point 12:2 13:3 14:4 ※「1:」等は行 これを  A列 B列 C列 1:point none point 2:1 5 2 3:2 6 3 4:3 7 4 5:4 8 っと言う風な感じですよね?(スペースが詰まってしまうので見づらいですが・・・) 上記の内容であれば、先のプログラムで並び替えが可能です。

128yen
質問者

補足

A列に縦に一列に並んでいますが、データの間にはスペースが入っています。 A列 Point 541 145 54564 1545 Point 5245 4865 5277 1250 ・・・ ↑ こんな感じになっています。(noneは気にしないでください。) 結果は、上に書いてあるとおりにしたいと思ってます。 それぞれのデータの間にスペースが入ってるので、その時点で終了してしまうみたいです。だからうまくいかなかったのだと思います。 データの終了はデータが存在しない場合に終了するというのではなくて、たとえば10000行目まで行うかというのにしていただければ嬉しいのですが。。。

  • don_cha
  • ベストアンサー率34% (139/407)
回答No.2

以下の手順で実行してください。 1.ツール→マクロ→Visual Basic Editor <以下、BasicEditorのWindow> 2.表示→コード 3.下記のプログラムSub DataSort()~End Subまでを表示されたウィンドウにコピー 4.実行→Sub/ユーザーフォームの実行 これで並び替えが終了していますので、Visual Basic Editorのウィンドウを閉じてください。

128yen
質問者

補足

私の場合は、VBAを立ち上げてからコピーして保存してからEXCELの画面でツール→マクロ→マクロでやりました。 プログラムの中身は、検索の文字だけ変更しました。 don chaさんの場合も、私の場合も結果は同じでした。 やはりB列に1回目の測定データしかコピーされてません。

  • don_cha
  • ベストアンサー率34% (139/407)
回答No.1

機械的に並び替えさせるには、やはりVBAが必要になりますね。 簡単なVBAなんで組んでみました。 仕様としては、データが入っているシートをsheet1、変換後のデータをsheet2に出力します。注意としては、列(測定回数?)が255以内であることが必要です。(エラーチェックが入っていません) Sub DataSort() Dim ii As Long Dim OpLn As Long Dim OpCl As Long Dim Chk As String '出力先の行・列の設定 OpLn = 1 OpCl = 1 '最初の行に必ず区分文字列がある場合は0にすると最初の列から出力 'データの抽出&並び替え For ii = 1 To 65535 'データが存在しない場合は並び替え終了 If IsEmpty(Sheet1.Cells(ii, 1)) Then Exit For End If 'データを取得し、区分文字であれば次行の先頭にする Chk = Sheet1.Cells(ii, 1) If (Chk = "point" Or Chk = "none") Then OpLn = 1 OpCl = OpCl + 1 End If Sheet2.Cells(OpLn, OpCl) = Chk OpLn = OpLn + 1 Next End Sub

128yen
質問者

お礼

適当にやってみました。。。 で、できた!と思ったのですがうまくいきませんでした。 Sheet1のA列に縦長のデータを載せてマクロを実行したら、1回の測定分のデータだけがSheet2のB列にコピーされていました。その他のデータの値はSheet2にいってません。。。 もしかして私のやり方が間違っていたのかもしれませんので、丁寧に教えていただきたいのですが。。。よろしくお願いいたします。

128yen
質問者

補足

わざわざ貴重な時間を使って回答していただいてありがとうございました。 今EXCEL2000を使っているのですが、VBAって何なんでしょうか?ビジュアルベーシックですか?(ちなみにぜんぜんやり方がわかりません) できればこのプログラムをどうやって動かすかとか初心者の私にわかるように丁寧に解説していただけないでしょうか? ツール→マクロ→Visual Basic Editorからやるんでしょうか? その後も丁寧に教えてください。。。 わがままばかり言ってすみません。。。

関連するQ&A

  • エクセル カラムからデータ並べ替え

    ウェブからコピーしたデータをエクセル2010にペーストし、すべてA列にデータが入っています。 縦に並んで入っているデータは、17行で一つのデータになっています。 そのため、17行区切りで横に並べていきたいのです。 そのようなマクロプログラムをお教えください。 宜しくお願い致します。

  • EXCELでのデータ整理

    縦に長いデータ列があり、その先頭の行には文字が入ってます。 その後に数値が縦にズラッと並んでいます。 この縦に並んだデータ列を一括で規格化したいと思ってます。 (できれば列の最後に、最大値を残したいです。) あまりプログラムとかわからないので、よろしくお願いします。 こんな感じになればいいなぁ~と思ってます。 ↓ A B C(←EXCELの列番号) _______ a b c 4 1 5 4 4 0 2 2 4 0 1 2  ↓変換後 A  B  C(←EXCELの列番号) _______ 1.0 0.25 1.0 1.0 1.00 0.0 0.5 0.50 0.8 0.0 0.25 0.4 4   4  5 (←それぞれの列の最大値) 私もVisual Basicを使って頑張ってみたいと思ってます。 Visual Basicはやったことがないので、、、helpを見ればできるのでしょうか?。。。

  • エクセルの並べ替え

    エクセルの並べ替えについて質問です。 今、手元に最寄駅と住所のデータがあります。 A駅 住所A B駅 住所B C駅 住所C のように、エクセルの1つの列に2つの情報が入っています。 それを下のように、 A駅     住所A B駅     住所B C駅     住所C A列に最寄駅、B列には住所としたいのですが、 手作業で1つずつ住所をB列にカット&ペーストしていかないとできませんか? データが3000件ぐらいあるので、 簡単に並べ替える方法があれば教えていただきたいです。

  • エクセルの並べ替えについてできるか教えて下さい。

    下記のエクセルの並べ替えをしたいと考えていますが、どのような方法がありますか教えて下さい。   A B 1 ○ 3 2 △ 5 3 □ 2 4 ○ 4 5 △ 3 6 □ 2 7 ・ ・ 8 ・ ・   A B C 1 ○ △ □ 2 3 5 2 3 4 3 2 4 ・ ・ ・ 5 ・ ・ ・ 上側を下側のように項目毎(○△□)に列としてデータを並べたいのですが、難しいでしょうか。 いつも項目で並べ替えてデータをコピペしていますが、非常に項目数が多いので時間がかかりすぎて困っています。列にするのはデータで推移グラフを作るためです。 宜しくお願いします。 (エクセルはそんなに得意ではありません。)

  • エクセルマクロで流し込み書き出しはできますか?

    エクセルでSheet1,2,3に入っている値を加工してSheet3に書き出すマクロを作りたいと思っています。 特にSheet1と2には縦一列にデータが並んでおり、それらを結合したいのですが個数が不特定のため困っています。 例えば Sheet1には縦1列に 10 11 12 13 ・ ・ ・ と数値が並んでおり、 Sheet2には縦1列に a1 a2 a3 a4 ・ ・ ・ と文字が並んでおり、 Sheet3には 固定文字列1 固定文字列2 が記載されています。 これらを組み合わせて、 固定文字列1 10,11,12,13 固定文字列2 ('a1','a2','a3','a4') という文字列をSheet4に書き出したいのですがマクロでどのように記述すればよいでしょうか。 数値も文字も個数は変動するので、何個であったとしても対応可能にしたいです。 数値はカンマ区切り、文字はアポストロフィ区切りで全体を括弧で囲みたいです。 また文字の個数は1000を超える場合もあるため、 固定文字列1 10,11,12,13 固定文字列2 ('a1','a2','a3','a3',・・・'a100') 固定文字列1 10,11,12,13 固定文字列2 ('a101','a102','a103','a104',・・・'a200') 固定文字列1 10,11,12,13 固定文字列2 ('a201','a202') のように100個毎に区切りたいです。 これを吐き出すマクロ作りたいのですがご存知の方、ご教授いただけますでしょうか。

  • EXCELで、数字を文字列として認識する部分があって、並べ替えができません

    表題の通りですが、列の数字を昇順に並べ替えて、データを並べ替えたいのですが、列の数字の一部が、数字ではなく、文字列になっているみたいで、まともに並べ替えできません。 (書式設定で一列を通貨にしてみると、¥マークが頭につくのとつかないものが混在しています。) 文字列として認識されている数字を、数字として認識する数字にするには、どうすればいいのでしょうか?

  • 《エクセル2000》こんな並べ替えはできますか

    こんにちは。 各セルに、このような感じで文字列が入っています。 野菜  大根 人参  タマネギ ゴボウ 調味料 塩  砂糖  道具  包丁 まな板 菜箸 これを、一番左はじの列のカテゴリ(?)ごとに、このように細目を縦一列に並べ替えたいのです。 野菜  大根     人参     タマネギ     ゴボウ 調味料 塩     砂糖 道具  包丁     まな板     菜箸 大根、人参に相当する細目の数はランダムです。 一括で並べ替える方法はあるでしょうか。 情報お待ちしています。

  • Excelでの並べ替え

     いつもお世話になります。  急ぎで、以下のことをしたいのですが、Excelのマクロで何とかなりませんか? A B C D E F  このように300程の数字が、横に3つずつ区切ってセルに入っています。これを、 A B C のようにすべてA列に縦に並べ替えたいのですが。  申し訳ないですが、急ぐのでよろしくお願いします。

  • エクセルの並べ替え・・・

    エクセルで並べ替えをしたいんですが、思うようにいきません。教えてください。 A列:日にち B列:ナンバー C列:名前   が入っています。 C列には、関数が入っています。 B列にナンバーを入力すると、名前が自然に入るようになっています。 関数は、 =IF(B2="","",VLOOKUP(B2,' 名 簿 '!$A:$B,2,FALSE)) です。 A~C列を選択して、 C列(名前順)に並び替えをすると、(データ→並び替え) 空欄のセルが上の方に来て、日にち、NOが入力されているセルは、下の方で並び替えされている状態です。 入力されているセルを上にするには、どのようにすればいいのか、教えてください

  • エクセルで…

    エクセルでセルを縦に結合して文字列縦にしたときーがーの状態で書かれたり濁点が文字の下に来ます どうしたらいいでしょうか??

専門家に質問してみよう