-PR-
解決済み

EXCELでの並べ替え

  • すぐに回答を!
  • 質問No.68369
  • 閲覧数69
  • ありがとう数2
  • 気になる数0
  • 回答数4
  • コメント数0

お礼率 92% (513/553)

縦一列(EXCELの場合A列に10000以上もあります)にずらっと並んだデータがあります。
このデータは、測定を100回ぐらい行ったデータが下に加算されてるため縦長なのです。

そこでこのデータを1回の測定データごとに一列に並べたいと考えています。
それぞれのデータの頭にはpointやらnoneという文字があるので、その文字が出てきたら列を変える!みたいなプログラムをEXCELでは出来ないのでしょうか?
あまりプログラムとかわからないので、何か簡単に並べかえる方法ってないでしょうか?

丁寧に教えていただけたら嬉しいです。よろしくお願いいたします。
通報する
  • 回答数4
  • 気になる
    質問をブックマークします。
    マイページでまとめて確認できます。

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

  • 回答No.4
レベル11

ベストアンサー率 34% (139/407)

あ、1回目と2回目の測定データの間に空のセルが存在しませんか?もし存在するということであれば、

'データの抽出&並び替え
For ii = 1 To 65535 <=この65535をデータ最終行値に変更して、

'データが存在しない場合は並び替え終了
If IsEmpty(Sheet1.Cells(ii, 1)) Then
Exit For
End If
の部分を消してください。

これで上手く行くと思います。
お礼コメント
128yen

お礼率 92% (513/553)

おおおおおおおおっ、できました。(量が多いのでかなり時間がかかりますが。。。)

本当にご丁寧にありがとうございました。
かなり尊敬してます。。。20ptじゃなくて10000ptぐらい差し上げたい気分です。

またこういうデータ整理とかで困ったことがあると思いますので、その時はまたよろしくお願いします。
投稿日時 - 2001-04-26 12:10:16
-PR-
-PR-

その他の回答 (全3件)

  • 回答No.1
レベル11

ベストアンサー率 34% (139/407)

機械的に並び替えさせるには、やはり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

お礼率 92% (513/553)

わざわざ貴重な時間を使って回答していただいてありがとうございました。

今EXCEL2000を使っているのですが、VBAって何なんでしょうか?ビジュアルベーシックですか?(ちなみにぜんぜんやり方がわかりません)
できればこのプログラムをどうやって動かすかとか初心者の私にわかるように丁寧に解説していただけないでしょうか?
ツール→マクロ→Visual Basic Editorからやるんでしょうか?
その後も丁寧に教えてください。。。
わがままばかり言ってすみません。。。
投稿日時 - 2001-04-26 11:02:48
お礼コメント
128yen

お礼率 92% (513/553)

適当にやってみました。。。
で、できた!と思ったのですがうまくいきませんでした。

Sheet1のA列に縦長のデータを載せてマクロを実行したら、1回の測定分のデータだけがSheet2のB列にコピーされていました。その他のデータの値はSheet2にいってません。。。
もしかして私のやり方が間違っていたのかもしれませんので、丁寧に教えていただきたいのですが。。。よろしくお願いいたします。
投稿日時 - 2001-04-26 11:27:47

  • 回答No.2
レベル11

ベストアンサー率 34% (139/407)

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

これで並び替えが終了していますので、Visual Basic Editorのウィンドウを閉じてください。
補足コメント
128yen

お礼率 92% (513/553)

私の場合は、VBAを立ち上げてからコピーして保存してからEXCELの画面でツール→マクロ→マクロでやりました。
プログラムの中身は、検索の文字だけ変更しました。

don chaさんの場合も、私の場合も結果は同じでした。
やはりB列に1回目の測定データしかコピーされてません。
投稿日時 - 2001-04-26 11:30:12
  • 回答No.3
レベル11

ベストアンサー率 34% (139/407)

質問の内容の確認ですが、データは、以下のような感じであるのですよね?

 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

お礼率 92% (513/553)

A列に縦に一列に並んでいますが、データの間にはスペースが入っています。

A列
Point
541
145
54564
1545

Point
5245
4865
5277
1250

・・・

↑ こんな感じになっています。(noneは気にしないでください。)
結果は、上に書いてあるとおりにしたいと思ってます。

それぞれのデータの間にスペースが入ってるので、その時点で終了してしまうみたいです。だからうまくいかなかったのだと思います。
データの終了はデータが存在しない場合に終了するというのではなくて、たとえば10000行目まで行うかというのにしていただければ嬉しいのですが。。。
投稿日時 - 2001-04-26 11:55:55
このQ&Aのテーマ
このQ&Aで解決しましたか?
AIエージェント「あい」

こんにちは。AIエージェントの「あい」です。
あなたの悩みに、OKWAVE 3,500万件のQ&Aを分析して最適な回答をご提案します。

関連するQ&A
-PR-
-PR-
このやり方知ってる!同じこと困ったことある。経験を教えて!
このQ&Aにはまだコメントがありません。
あなたの思ったこと、知っていることをここにコメントしてみましょう。

その他の関連するQ&A、テーマをキーワードで探す

キーワードでQ&A、テーマを検索する
-PR-
-PR-
-PR-

特集


専門家があなたの悩みに回答!

-PR-

ピックアップ

-PR-
ページ先頭へ