• ベストアンサー
※ ChatGPTを利用し、要約された質問です(原文:エクセルVBA 繰り返し)

エクセルVBAで繰り返し操作する方法

このQ&Aのポイント
  • エクセルVBAを使用して、指定したデータを並び替える方法について教えてください。
  • 現在、1行のデータを並び替えるVBAコードを作成しましたが、3行や4行といった複数の行を並び替える方法がわかりません。
  • どなたか、VBAの繰り返し処理を使って複数行のデータを並び替える方法を教えていただけないでしょうか。

質問者が選んだベストアンサー

  • ベストアンサー
  • mshr1962
  • ベストアンサー率39% (7417/18945)
回答No.1

各行A:D列対象なら For i = 1 to 50 Range("A" & i & ":D" & i).select Application.CutCopyMode = False Selection.Sort Key1:=Range("A" & i), Order1:=xlAscending, Header:=xlGuess, _ OrderCustom:=1, MatchCase:=False, Orientation:=xlLeftToRight, SortMethod _ :=xlPinYin, DataOption1:=xlSortNormal Next i

sioyakiniku
質問者

お礼

VBA初心者なので、 とてもシンプルで使いやすかったです。 ありがとうございました。

その他の回答 (3)

  • hananoppo
  • ベストアンサー率46% (109/235)
回答No.4

こんな感じでいかがでしょう。 Sub Sample() Dim rNum As Long rNum = 1 Do Until Cells(rNum, 1).Value & Cells(rNum, 2).Value _ & Cells(rNum, 3).Value & Cells(rNum, 4).Value = "" Range("A" & rNum & ":D" & rNum).Sort Key1:=Cells(rNum, 1), Orientation:=xlLeftToRight rNum = rNum + 1 Loop End Sub

sioyakiniku
質問者

お礼

VBA初心者ですみません。 ちと、難しいです。

  • Wendy02
  • ベストアンサー率57% (3570/6232)
回答No.3

人と同じコードを書いてもしょうがないので、違うコードを書きました。 特に、問題はないと思いますが、最後の行を検出するために、End プロパティですと、心もとないです。一行ずつするなら、あまり、Sort メソッドは必要ないような気もします。 列は、可変ですから、D列、E列でも、それ以上でも可能です。なるべく標準モジュールに登録してお使いください。 Sub Test1()  Dim rng As Range  Dim LstRow As Long, LstCol As Long  Dim i As Long, j As Long  Dim ar As Variant  Set rng = Range("A1").CurrentRegion  With rng   LstRow = .Cells(.Cells.Count).Row   LstCol = .Cells(.Cells.Count).Column   ReDim arx(1 To LstCol)  End With  For i = 1 To LstCol   arx(i) = i  Next  With Application   .ScreenUpdating = False   For i = 1 To LstRow    ar = .Transpose(Range(Cells(i, 1), Cells(i, Columns.Count).End(xlToLeft)))    'ar = .Transpose(Range(Cells(i, 1), Cells(i, LstCol + 1).End(xlToLeft))) '※    ar = .Transpose(ar)    ar = .Small(ar, arx)    j = .Count(ar)    Cells(i, 1).Resize(, LstCol).ClearContents    Cells(i, 1).Resize(, j).Value = ar   Next i   .ScreenUpdating = True  End With End Sub もし、右側にデータがある場合は、※と。その上の行と交換してください。

sioyakiniku
質問者

お礼

VBA初心者のため、 なかなか、理解はできません。 これから、がんばります。 ありがとうございました。

  • keithin
  • ベストアンサー率66% (5278/7941)
回答No.2

たとえば dim n Application.CutCopyMode = False for n = 0 to range("A65536").end(xlup).row - 1  Range("A1:D1").offset(n).Sort _   Key1:=Range("A1").offset(n), _   Order1:=xlAscending, _   Header:=xlno, _   OrderCustom:=1, _   MatchCase:=False, _   Orientation:=xlLeftToRight, _   SortMethod:=xlPinYin, _   DataOption1:=xlSortNormal next n みたいなカンジで。 for to nextとfor nextは繰り返しの基本中の基本ですから,参考書(や,もし良いのが見つかればネット)でしっかりマスターしてください。 offsetを使う他に,headerの所も変えているで見落とさないようにしてください。

sioyakiniku
質問者

お礼

基本中の基本を質問して、 ごめんなさい。 たいへんべんきょうになりました。 これから、頑張ります。 ありがとうございました。

関連するQ&A