No.3ベストアンサー
- 回答日時:
こんにちは。
KenKen_SP です。たまにありますね。こういう並べ替えの作業(^^)
VBA でやってみます。
【手順】
1. [Alt]+[F11]キー押下で、Visual Basic Editor(以下 VBE)が起動
2. [挿入]-[標準モジュール]クリック
4. 開いたスペースに、下記コードを コピー&ペースト
5. VBE を閉じる
6. ワークシートでセルを範囲選択
7. [Alt]+[F8]キー押下でマクロ実行
'-------ここから--------------------------------------------------------
Sub Sample()
Dim Buf As Variant
Dim Ret() As Variant
'選択されているのがセル以外なら中止、セルが1つでも中止
If TypeName(Selection) <> "Range" Or Selection.Count = 1 Then Exit Sub
'総件数が65536を超えたら警告
If Selection.Count > 65536 Then
If MsgBox("データ数が65,536件を超えています." & vbCrLf & _
"超えた分は無視されます.", vbOKCancel) = vbCancel Then
Exit Sub
End If
End If
'配列のサイズを決める
ReDim Ret(1 To Selection.Count, 1 To 1)
'選択範囲をバッファ
Buf = Selection.Value
'要素を並べ替え
Cnt = 1
For i = 1 To UBound(Buf) '行方向
For j = 1 To UBound(Buf, 2) '列方向
Debug.Print TypeName(Buf(i, j))
Ret(Cnt, 1) = Buf(i, j)
Cnt = Cnt + 1
Next j
Next i
'新規シートに書き出し
With Worksheets.Add
.Range("A1").Resize(UBound(Ret)).Value = Ret
End With
'終了メッセージ表示
MsgBox "終了しました", vbInformation
End Sub
'---------------------------------------------------------ここまで------
No.9
- 回答日時:
KenKen_SPさん、こんばんは。
今回は、しなかったけれども、
> If UBound(Ret) > 65536 Then Cnt = 65536 '<--- 追加
作成中、本来は、列を増やしていくのがいいかもしれないと思いました。セルの数は、1シートで、2^24 個ありますからね。ただ、手間を考えてやめてしまいました。
また、一種の縦横変換と考えたほうがよいかもしれませんね。つまり、縦横規定のマトリックスの中に入れることも、ある程度、考慮しないといけないようにも思いました。(これは、単なる思い付きですが。)
No.8
- 回答日時:
#3 です。
ご質問主 amine さんへ
65536行を超える場合の例外処理がもれてました。次のような例外処理を書き
足して下さい。あと、変数Cntの宣言なんかも漏れてます。適当ですみません。
'新規シートに書き出し
If UBound(Ret) > 65536 Then Cnt = 65536 '<--- 追加
With Worksheets.Add
.Range("A1").Resize(Cnt).Value = Ret '<--- Resizeの括弧内を変更
End With
Wendy02 さんへ
Wendy02 さんのコードを見て、上記のことに気がつきました。中途半端なこと
ばかりしている自分を反省しました。いつも勉強させてもらってます。
imogasi さんへ
なるほど。For Each を使うと最初に列方向へセルのフォーカスが移動してい
くのでしたね。参考になりました。
No.7
- 回答日時:
VBAなら簡単に短く
Sub test01()
Dim cl As Range
Dim sh2 As Worksheet
Set sh2 = Worksheets("sheet2") 'もって行く先シート名
j = 1 '開始行
For Each cl In Selection
If cl = "" Then
Else
sh2.Cells(j, "A") = cl 'A列にセット
j = j + 1
End If
Next
End Sub
でできます。
今のデータがあるシートのデータ部分を範囲指定してから(余分目の
四角範囲)実行のこと。
No.6
- 回答日時:
KenKen_SPさんと同じ2次元配列でも、配列の入れ方を簡単にさせました。
こういうものは、後だしでも構わないでしょうね。それぞれは、単なる個人のテクニックですから。ちなみに、KenKen_SPさんのものよりも、Rangeオブジェクトから配列に入れていますので、スピードはかなり落ちます。'<標準モジュール>
Option Explicit
Sub Sample2()
Dim myArray() As Variant
Dim i As Long, num As Long
'データのある場所にマウスカーソルを置く
With ActiveCell.CurrentRegion
If .Count = 1 Then
MsgBox "データのある場所にマウスカーソルを置いてください。", 16
Exit Sub
Else
'655356以下の数を添え字とする
num = Application.Min(Rows.Count, .Count)
ReDim myArray(1 To num, 1 To 1)
For i = 1 To num
myArray(i, 1) = .Cells(i).Value
Next i
End If
End With
'シートを増やす
With Worksheets.Add(After:=Worksheets(Worksheets.Count))
'シートを増やしたくないようでしたら、With Worksheets("Sheet3")などとする
.Range("A1").Resize(num).Value = myArray()
End With
Beep
End Sub
No.4
- 回答日時:
#3 です。
#3のコードで
Debug.Print TypeName(Buf(i, j))
は不要ですから、この行を削除して下さい。
実行スピードが落ちますので。
No.2
- 回答日時:
1列ずつコピー&ペーストする方法なら。
1)a~eをドラッグして右クリック、コピー
2)空いてるセルを右クリック、'形式を選択して貼り付け'を選択
3)'行列を入れ替える'をチェックしてOK
4)f~jについて、1)~3)を繰り返す
お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!
似たような質問が見つかりました
- Excel(エクセル) Excelグラフのラベルオプションの並べ替えは可能ですか。セルの値を最後にしたいのですが。 1 2022/06/05 10:45
- Excel(エクセル) Excelのソート(並べ替え) 2 2022/05/15 22:54
- その他(Microsoft Office) Excel 2列分のDATAの並べ替え 1 2023/01/01 17:12
- Excel(エクセル) Excelで、行に複数の数字が入力されているセルが複数の列存在し、行を跨いでセル内の数値を並び替える 5 2022/06/17 18:03
- その他(Microsoft Office) エクセルで串刺ししたシートの並べ替えをしたいです 4 2023/02/14 11:59
- その他(Microsoft Office) 1の行を固定した上でVBAを用いて日付順に自動並べ替え 2 2022/06/06 15:09
- Excel(エクセル) 棚卸表の前月比の関数等あれば教えてください 2 2023/05/02 18:34
- Excel(エクセル) 列の複数ある空白セルを飛ばして、セルに並べて表示したい 3 2023/02/12 16:49
- Excel(エクセル) 結合セルのソートについて 5 2022/04/22 11:57
- Excel(エクセル) 関数EXACT(文字列,文字列)とexcelVBA 3 2022/04/14 15:07
関連するカテゴリからQ&Aを探す
おすすめ情報
デイリーランキングこのカテゴリの人気デイリーQ&Aランキング
-
【関数】スペースがいくつ入っ...
-
西暦や和暦の表示をyyyymmdd表...
-
【Microsoft Office Excel Comp...
-
Excelはなんで先頭の0を消すん...
-
Excelのセルを飛ばして入力する
-
別シートからの文字を変更
-
エクセルの行の抽出について質...
-
Excelのオートフィル
-
Excel 2019 のピボットテーブル...
-
スプレッドシート クエリ関数 1...
-
excelの不要な行の削除ができな...
-
Excel初心者です。 詳しい方、...
-
【Excel】セル内の時間帯が特定...
-
Excel初心者です。 詳しい方、...
-
EXACT関数とIF関数の組み合わせ...
-
Excelのグラフ軸について
-
スマートな関数を教えて下さい。
-
Excelで全角を半角にしたいので...
-
【マクロ】エクセルにかいてあ...
-
Excel:一部のフォントでセルの...
マンスリーランキングこのカテゴリの人気マンスリーQ&Aランキング
-
ファイル内にある数字の出現回...
-
Excel関数の先頭に「@」が入っ...
-
エクセルの気味悪い不思議
-
Excel VBAで、実行時にsheet上...
-
表示されている人数だけを数え...
-
他人が作ったマクロの理解
-
Excelの関数について質問です。
-
Excel 集計表
-
エクセル 日時の計算式について
-
Excelの関数に関して質問です。...
-
エクセル:セル内の文字列の下...
-
絞り込み検索
-
エクセルの関数で
-
エクセルの書式設定について教...
-
余分なEXCELファイルに印刷され...
-
VBA 同一シート内での転記の仕方
-
長期休みの関数はありますか
-
Excelの空のセル
-
エクセルで入力してある文を別...
-
Excelのマクロで、セルを結合し...
おすすめ情報