いま選択している列を基準にして昇順または降順で並び変えるよ
この説明は、ChatGPTで作成しています。
このプロシージャの仕組みについて
このマクロは、いま選択している列を基準にして、そのデータを昇順または降順で並べ替えることができます。以下に、このマクロがどのように動作するのか、ステップごとにわかりやすく説明します。
1. メッセージボックスで並べ替えの方向を選ぶ
マクロを実行すると、**「昇順で並び替えますか?」**というメッセージが表示されます。
選択肢は以下の3つです。
「はい」:昇順(小さい順から大きい順)に並べ替えます。
「いいえ」:降順(大きい順から小さい順)に並べ替えます。
「キャンセル」:並べ替えを中止します。
2. データ範囲を特定
並べ替えの対象となるデータ範囲を自動的に認識します。
データがある最終行と最終列を計算して、その範囲を特定します。
3. 選択中の列を基準に並べ替え
今選択している列のアルファベット(例: "A", "B", "C")を取得します。
この列を並べ替えの「基準」に設定します。
ヘッダーがある(見出し行がある)と仮定して、1行目を除いた範囲で並べ替えます。
4. 並べ替えを実行
設定した並べ替え条件(昇順または降順)で、データ全体を並べ替えます。
並べ替えが完了したら、基準となった列の最初のセル(1行目)を選択状態に戻します。
注意ポイント
選択している列が基準になるので、実行前に基準にしたい列を必ず選択してから動かしてください。
並べ替えの操作中、画面の更新や警告メッセージが一時的に無効化されますが、処理が終了すると元に戻ります。
Sub いま選択している列を基準にして昇順または降順で並び変えるよ()
Application.ScreenUpdating = False
Application.DisplayAlerts = False
' アクティブシートを設定
Dim ws As Worksheet
Set ws = ActiveSheet
ws.Activate
Dim button As Integer
Dim selectedOrder As XlSortOrder '列挙型定数
button = MsgBox("昇順で並び替えますか?" + vbCrLf + "< いいえ:降順で並び替え >", vbYesNoCancel + vbQuestion + vbDefaultButton3, "いま選択している列を基準にして並替")
Select Case button '押されたボタンの確認
Case vbYes
selectedOrder = xlAscending '昇順
Case vbNo
selectedOrder = xlDescending '降順
Case vbCancel
Exit Sub
End Select
' 最終行と最終列を取得して最終列の記号を取得
Dim lastRow As Long, lastCol As Long, colLetter As String
lastRow = ws.Cells(ws.Rows.count, 1).End(xlUp).row
lastCol = ws.Cells(1, ws.Columns.count).End(xlToLeft).Column
colLetter = Split(ws.Cells(1, lastCol).Address(True, False), "$")(0)
' いま選択している列アルファベットを取得
Dim N As String
N = Split(Selection.Address(True, False), "$")(0)
' いま選択している列を基準に並べ替える
With ws
.Sort.SortFields.Clear
.Sort.SortFields.Add key:=.Range(N & "1"), order:=selectedOrder
.Sort.SetRange .Range("A1", colLetter & lastRow)
.Sort.header = xlYes
.Sort.Apply
End With
ws.Range(N & "1").Select
Application.DisplayAlerts = True
Application.ScreenUpdating = True
End Sub
キーワード
#excel #できること #vba #並び替え #昇順 #降順 #列操作 #セル選択 #データ分析 #マクロ #初心者向け #プログラミング #アクティブシート #自動化 #メッセージボックス #選択中の列 #並べ替え設定 #プロシージャ #VisualBasic #ヘルプ
英語版説明
Sorting the Selected Column in Ascending or Descending Order
This explanation was created with ChatGPT.
About this Procedure
This macro sorts data based on the currently selected column, either in ascending or descending order, depending on the user's choice. Below is a step-by-step explanation of how it works.
1. Select the Sorting Order via a Message Box
When you run the macro, a message box will appear with the question: "Sort in ascending order?"
You can choose from three options:
Yes: Sort in ascending order (smallest to largest).
No: Sort in descending order (largest to smallest).
Cancel: Abort the sorting operation.
2. Identify the Data Range
The macro automatically identifies the range of data to be sorted.
It calculates the last row and column where data is present and defines the range accordingly.
3. Sort Based on the Selected Column
The macro retrieves the alphabet of the currently selected column (e.g., "A", "B", "C").
This column is set as the "key" for sorting.
Assuming there is a header row, the sorting excludes it and operates only on the data below it.
4. Execute Sorting
The macro applies the sorting conditions (ascending or descending) to the entire data set.
After sorting, the macro selects the top cell (row 1) of the key column to make it the active cell.
Points to Note
The currently selected column becomes the basis for sorting, so ensure you select the desired column before running the macro.
While sorting, screen updates and alerts are temporarily disabled, but they are restored after the process completes.
Keywords
#excel #features #vba #sorting #ascending #descending #columnOperations #cellSelection #dataAnalysis #macro #forBeginners #programming #activeSheet #automation #messageBox #selectedColumn #sortingSettings #procedure #VisualBasic #help
リンク集