
縦一列(EXCELの場合A列に10000以上もあります)にずらっと並んだデータがあります。
このデータは、測定を100回ぐらい行ったデータが下に加算されてるため縦長なのです。
そこでこのデータを1回の測定データごとに一列に並べたいと考えています。
それぞれのデータの頭にはpointやらnoneという文字があるので、その文字が出てきたら列を変える!みたいなプログラムをEXCELでは出来ないのでしょうか?
あまりプログラムとかわからないので、何か簡単に並べかえる方法ってないでしょうか?
丁寧に教えていただけたら嬉しいです。よろしくお願いいたします。
No.4ベストアンサー
- 回答日時:
あ、1回目と2回目の測定データの間に空のセルが存在しませんか?もし存在するということであれば、
'データの抽出&並び替え
For ii = 1 To 65535 <=この65535をデータ最終行値に変更して、
'データが存在しない場合は並び替え終了
If IsEmpty(Sheet1.Cells(ii, 1)) Then
Exit For
End If
の部分を消してください。
これで上手く行くと思います。
おおおおおおおおっ、できました。(量が多いのでかなり時間がかかりますが。。。)
本当にご丁寧にありがとうございました。
かなり尊敬してます。。。20ptじゃなくて10000ptぐらい差し上げたい気分です。
またこういうデータ整理とかで困ったことがあると思いますので、その時はまたよろしくお願いします。
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
っと言う風な感じですよね?(スペースが詰まってしまうので見づらいですが・・・)
上記の内容であれば、先のプログラムで並び替えが可能です。
この回答への補足
A列に縦に一列に並んでいますが、データの間にはスペースが入っています。
A列
Point
541
145
54564
1545
Point
5245
4865
5277
1250
・・・
↑ こんな感じになっています。(noneは気にしないでください。)
結果は、上に書いてあるとおりにしたいと思ってます。
それぞれのデータの間にスペースが入ってるので、その時点で終了してしまうみたいです。だからうまくいかなかったのだと思います。
データの終了はデータが存在しない場合に終了するというのではなくて、たとえば10000行目まで行うかというのにしていただければ嬉しいのですが。。。
No.2
- 回答日時:
以下の手順で実行してください。
1.ツール→マクロ→Visual Basic Editor
<以下、BasicEditorのWindow>
2.表示→コード
3.下記のプログラムSub DataSort()~End Subまでを表示されたウィンドウにコピー
4.実行→Sub/ユーザーフォームの実行
これで並び替えが終了していますので、Visual Basic Editorのウィンドウを閉じてください。
この回答への補足
私の場合は、VBAを立ち上げてからコピーして保存してからEXCELの画面でツール→マクロ→マクロでやりました。
プログラムの中身は、検索の文字だけ変更しました。
don chaさんの場合も、私の場合も結果は同じでした。
やはりB列に1回目の測定データしかコピーされてません。
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
この回答への補足
わざわざ貴重な時間を使って回答していただいてありがとうございました。
今EXCEL2000を使っているのですが、VBAって何なんでしょうか?ビジュアルベーシックですか?(ちなみにぜんぜんやり方がわかりません)
できればこのプログラムをどうやって動かすかとか初心者の私にわかるように丁寧に解説していただけないでしょうか?
ツール→マクロ→Visual Basic Editorからやるんでしょうか?
その後も丁寧に教えてください。。。
わがままばかり言ってすみません。。。
適当にやってみました。。。
で、できた!と思ったのですがうまくいきませんでした。
Sheet1のA列に縦長のデータを載せてマクロを実行したら、1回の測定分のデータだけがSheet2のB列にコピーされていました。その他のデータの値はSheet2にいってません。。。
もしかして私のやり方が間違っていたのかもしれませんので、丁寧に教えていただきたいのですが。。。よろしくお願いいたします。
お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!
似たような質問が見つかりました
- Excel(エクセル) 関数EXACT(文字列,文字列)とexcelVBA 3 2022/04/14 15:07
- Visual Basic(VBA) Excelで横書き50行の漢字テストデータを縦書きのテスト問題にしたい。 6 2022/04/27 15:03
- Excel(エクセル) Excelの計算式で質問です。 3 2022/06/21 21:58
- その他(プログラミング・Web制作) プログラミング python pandas 固定長データの出力 2 2022/08/16 11:22
- Excel(エクセル) excelの列幅高さが勝手に変わる(特定のPCだけ) 8 2022/07/14 16:51
- その他(Microsoft Office) エクセルソートと抽出について 3 2022/10/22 22:09
- 統計学 2019年度の毎日朝6時に測定された東京都霞が関における窒素酸化物(Nox)濃度のモニタリングデータ 4 2023/04/24 16:45
- Excel(エクセル) エクセルでのマクロを使ったデータの並べ替え 3 2022/12/03 18:54
- Excel(エクセル) 結合セルのソートについて 5 2022/04/22 11:57
- Excel(エクセル) excelで1行ごとに一気に削除する方法はありませんか? 3 2022/05/18 20:58
関連するカテゴリからQ&Aを探す
おすすめ情報
デイリーランキングこのカテゴリの人気デイリーQ&Aランキング
-
エクセルで日付から日にちを削...
-
複数の条件に合う行番号を取得...
-
Excelで2行単位のソートの出来...
-
エクセルで1列に500行並んだデ...
-
Countifよりも早く重複数をカウ...
-
excel:別シートの値を飛び飛び...
-
エクセルで、重複データを除外...
-
不要な行を消したい
-
Excelの30個ずつの平均値の出し方
-
エクセルで重複を抽出して合計...
-
エクセルで重複データを削除す...
-
エクセルで別々な2つのデータを...
-
エクセルで時刻だけを抜き出す...
-
EXCEL2003で上手く集計したい
-
Excelで重複チェックの方法
-
500行の中から、多い順に抽出す...
-
エクセル2003でマクロでマクロ...
-
エクセルのデータの整理
-
エクセル 条件つきで最小値を...
-
エクセルのマクロ Range("A1")...
マンスリーランキングこのカテゴリの人気マンスリーQ&Aランキング
-
Excelで2行単位のソートの出来...
-
エクセルで日付から日にちを削...
-
複数の条件に合う行番号を取得...
-
エクセルで1列に500行並んだデ...
-
エクセルで、重複データを除外...
-
excel:別シートの値を飛び飛び...
-
Countifよりも早く重複数をカウ...
-
エクセルで横並びの複数データ...
-
VBA 数式を最終行までコピー
-
不要な行を消したい
-
エクセルVBA C列に特定の文字列...
-
Excelの30個ずつの平均値の出し方
-
エクセル2016にて、行挿入&コピ...
-
エクセルで1つの会社名に対して...
-
VBA 大きなtxtテキストファ...
-
【VBA】A列にある連続したデー...
-
エクセルで沢山のレコードの最...
-
500行の中から、多い順に抽出す...
-
エクセルで時刻だけを抜き出す...
-
Excel VBA 【QueryTables.Add】...
おすすめ情報