Sub TempSortAndRestore()
Dim tbl As Range ' 表全体
Dim ws As Worksheet ' 対象シート
Dim idxCol As Range ' 行番号を格納する列
Set ws = ActiveSheet
Set tbl = ws.Range("C5").CurrentRegion ' 見出し行を含む範囲を取得
'--- 1. ヘルパーカラムを追加(表の右隣に作成)---
Set idxCol = tbl.Columns(tbl.Columns.Count).Offset(0, 1)
idxCol.Cells(1).Value = "RowID" ' 見出し
idxCol.Cells(2).Value = 1 ' 行番号の開始値
idxCol.Cells(2).DataSeries _ ' 連番を自動入力
Rowcol:=xlColumns, _
Type:=xlLinear, _
Step:=1
'--- 2. 任意の列でソート(例:表内 3 列目を昇順)---
With tbl
.Sort Key1:=.Columns(3), Order1:=xlAscending, Header:=xlYes
End With
' (ここで必要な編集や確認を行う)
'--- 3. ヘルパーカラムをキーに元の順番へ復元 ---
With tbl.Resize(ColumnSize:=tbl.Columns.Count + 1) ' 追加列を含めた範囲
.Sort Key1:=.Columns(.Columns.Count), Order1:=xlAscending, Header:=xlYes
End With
'--- 4. ヘルパーカラムを削除して完了 ---
idxCol.EntireColumn.Delete
End Sub