- ベストアンサー
各行をソートするVBAについて
- みんなの回答 (2)
- 専門家の回答
質問者が選んだベストアンサー
こんにちは! 一例です。 Sub 並び替え() Dim i As Long, j As Long For i = 1 To Cells(Rows.Count, 1).End(xlUp).Row j = Cells(i, Columns.Count).End(xlToLeft).Column If j > 1 Then Cells(i, 2).Resize(i, j - 1).Sort key1:=Cells(i, 1), order1:=xlAscending, _ Header:=xlYes, Orientation:=xlLeftToRight End If Next i End Sub こんな感じではどうでしょうか?m(_ _)m
その他の回答 (1)
- ki-aaa
- ベストアンサー率49% (105/213)
シートタブを右クリックして、コードの表示を選びます。 そこに、以下のコードを貼り付けてください。 マクロを動かすときは、B列,C列などををセレクトとしてください。 Private Sub Worksheet_SelectionChange(ByVal Target As Range) Dim t_Row As Long, t_Column As Long Dim 最終行 As Long If Target.Count <> Rows.Count Then Exit Sub If Target.Columns.Count > 1 Then Exit Sub t_Column = Target.Column If t_Column = 1 Then Exit Sub If t_Column > 14 Then Exit Sub 最終行 = Cells(Rows.Count, 1).End(xlUp).Row Application.EnableEvents = False If Cells(1, t_Column).Value < Cells(最終行, t_Column).Value Then Range("A1:N" & 最終行).Sort Key1:=Cells(1, t_Column), Order1:=xlDescending, Header:=xlNo, _ OrderCustom:=1, MatchCase:=False, Orientation:=xlTopToBottom, SortMethod _ :=xlPinYin Else Range("A1:N" & 最終行).Sort Key1:=Cells(1, t_Column), Order1:=xlAscending, Header:=xlNo, _ OrderCustom:=1, MatchCase:=False, Orientation:=xlTopToBottom, SortMethod _ :=xlPinYin End If Cells(1, t_Column).Select Application.EnableEvents = True End Sub
お礼
ありがとうございました。大変参考になりました。また分からないことがありましたらアドバイスをいただけますと幸いです。よろしくお願いします。
お礼
ご回答ありがとうございます。これはExcel2007以降で作動するでしょうか?よく分からず申し訳ありません。
補足
excel2003でプログラム動きました。失礼しました。ありがとうございました。大変参考になりました。2回答ともとても参考になり甲乙つけがたいですので最初に回答を下さりましたところでベストアンサーにさせていただきます。