- ベストアンサー
Excelマクロで元のセル位置で並び替えする方法
- Excelマクロを使用して、元のセル位置でデータを並び替える方法について説明します。
- 提供されたマクロは、「ユーザー設定の基準」に従ってデータを並び替えるものですが、機能上の問題があります。
- マクロの修正方法についてアドバイスを提供します。
- みんなの回答 (5)
- 専門家の回答
関連するQ&A
- エクセルVBAでデータ並べ替え
マクロ記録をとると次のようになりました。 これをA列をキーに並べるもっと簡単なコードを教えてください。 Range("A2:G501")となっていますが、これ以上でも対応できるようにしたいです。 どなたか教えていただけないでしょうか。 Sub Macro1() Range("A1").Select ActiveWorkbook.Worksheets("***").Sort.SortFields.Clear ActiveWorkbook.Worksheets("***").Sort.SortFields.Add Key:=Range("A1"), SortOn _ :=xlSortOnValues, Order:=xlAscending, DataOption:=xlSortNormal With ActiveWorkbook.Worksheets("***").Sort .SetRange Range("A2:G501") .Header = xlNo .MatchCase = False .Orientation = xlTopToBottom .SortMethod = xlPinYin .Apply End With End Sub
- ベストアンサー
- オフィス系ソフト
- マクロ記録で作成した並べ替えのコードを修正したい
Windows7 Excel2007 使用しているマクロ初心者です。 マクロ記録で、次の2個のスクリプトをつくりました。 二つとも正常に実行できています。 しかし、このコードは .SetRange Range("A3:N26")の部分をいちいち手動で変更しなくてはなりません。 この部分を自動で設定し、しかもどちらの一覧表でも使えるコードにしたいです。 どう修正したらよろしいでしょうか? .Header = xlNo以下のコード省略できますか? Sub 一覧表1のソート() Range("B2").Select Worksheets("一覧表1").Sort.SortFields.Clear Worksheets("一覧表1").Sort.SortFields.Add Key:=Range("B2"), SortOn _ :=xlSortOnValues, Order:=xlAscending, DataOption:=xlSortNormal With Worksheets("一覧表1").Sort .SetRange Range("A3:N26") .Header = xlNo .MatchCase = False .Orientation = xlTopToBottom .SortMethod = xlPinYin .Apply End With End Sub ---------------------------------------------------- Sub 一覧表2のソート() Range("B2").Select Worksheets("一覧表2").Sort.SortFields.Clear Worksheets("一覧表2").Sort.SortFields.Add Key:=Range("B2"), SortOn _ :=xlSortOnValues, Order:=xlAscending, DataOption:=xlSortNormal With Worksheets("一覧表2").Sort .SetRange Range("A3:P28") .Header = xlNo .MatchCase = False .Orientation = xlTopToBottom .SortMethod = xlPinYin .Apply End With End Sub
- ベストアンサー
- Visual Basic
- マクロのシートでのコピーができません。
ビスタ エクセル 2007を使用しています。B2~E12まで簡単な表を作り E列で昇り順に並べ替えしました。そして並べ替えからこの表を印刷するまでマクロで完成しました。 ところが、別のシートにコピーすると印刷はされますが、並べ替えがされずに印刷だけされます。同じ表を30枚作成し、それぞれ同じ操作と印刷のマクロを組みたいのですが・・・・どなたか助けてください。 Sub ボタン5_Click() ' ' ボタン5_Click Macro ' ' Columns("E:E").Select ActiveWorkbook.Worksheets("Sheet1").Sort.SortFields.Clear ActiveWorkbook.Worksheets("Sheet1").Sort.SortFields.Add Key:=Range("E1"), _ SortOn:=xlSortOnValues, Order:=xlAscending, DataOption:=xlSortNormal With ActiveWorkbook.Worksheets("Sheet1").Sort .SetRange Range("B2:E12") .Header = xlNo .MatchCase = False .Orientation = xlTopToBottom .SortMethod = xlPinYin .Apply End With ActiveWindow.SelectedSheets.PrintOut Copies:=1 End Sub
- ベストアンサー
- Windows Vista
- EXCELでマクロが
昨日から、期待する動きでなくなりました。 シートに新たに数式を加え、rank関数ではきちんと表示するのですが、マクロを動かすと、 期待した動きでなくなりました。 Sub Sheet2STD昇順並べ替え() ' ' Sheet2STD昇順並べ替え Macro ' ' Range("B6:V24").Select ActiveWorkbook.Worksheets("Sheet2").Sort.SortFields.Clear ActiveWorkbook.Worksheets("Sheet2").Sort.SortFields.Add Key:=Range("C7:C24") _ , SortOn:=xlSortOnValues, Order:=xlAscending, DataOption:=xlSortNormal With ActiveWorkbook.Worksheets("Sheet2").Sort .SetRange Range("B6:V24") .Header = xlYes .MatchCase = False .Orientation = xlTopToBottom .SortMethod = xlPinYin .Apply End With Range("A1").Select End Sub 図にある下向きの矢印にマクロを登録しています。
- ベストアンサー
- その他(インターネット・Webサービス)
- マクロ 並び替え
Sub 並べ替え() With Worksheets("Sheet1").Sort .SortFields.Clear .SortFields.Add Key:=Range("e6"), _ SortOn:=xlSortOnValues, _ Order:=xlAscending, _ CustomOrder:="金,銀,銅" .SetRange Range("a6:Cl16").CurrentRegion .Header = xlNo .Apply End With End Sub 6行目~16行目で並び替えを行ってほしいのですが、1行目から並び替えになります。 .SetRange Range("a6:Cl16").CurrentRegion と記入しているので6列目からになると思っていたのですが。 マクロ初心者のため詳しい方がいれば教えて下さい。
- ベストアンサー
- Visual Basic
- エクセルのマクロ記録を他のシートでも実行したい
エクセル2010を使用しています。 シート1でマクロ記録を使用しデータの並び替えをし、 同じブック内にシート1をコピーしてシート2としました。 このシート2でもシート1で行ったデータの並び替えをしたいのですが シート2ではマクロは実行されませんでした。 わからないながらもVBAを見たところ下記のように 記述されおりましたが、どのような修正をすればよいかご教授いただけると助かります。 ちなみに、シート1でマクロを記録し、そのシートを同ブック内に複数コピーして それぞれのシートでマクロを実行させるということを考えています。 Sub Macro1() ' ' Macro1 Macro ' ' Range("A11:Q17").Select ActiveWorkbook.Worksheets("1").Sort.SortFields.Clear ActiveWorkbook.Worksheets("1").Sort.SortFields.Add Key:=Range("B11:B17"), _ SortOn:=xlSortOnValues, Order:=xlAscending, CustomOrder:="日,月,火,水,木,金,土" _ , DataOption:=xlSortNormal ActiveWorkbook.Worksheets("1").Sort.SortFields.Add Key:=Range("A11:A17"), _ SortOn:=xlSortOnValues, Order:=xlAscending, DataOption:=xlSortNormal With ActiveWorkbook.Worksheets("1").Sort .SetRange Range("A11:Q17") .Header = xlGuess .MatchCase = False .Orientation = xlTopToBottom .SortMethod = xlPinYin .Apply End With End Sub
- ベストアンサー
- その他MS Office製品
- フォルダ内の全てのファイルを降順で並べ替え
VBAは本を入門書を読み始めたばかりの初心者です。 一つのフォルダ内にエクセルファイルとcsvファイルが混在(400くらいずつ)あります。このうちエクセルファイルのみ降順で並べ替えをしたいと思います。データの範囲はA1:I501で1行目は見出しでA列は日付が入っているのですが、日付が昇順で入っているため日付を基準にして降順にしたいです。全てのファイルにシートは一つしかありません。 マクロの記録で作成したところ Sub 並べ替え降順() ' ' 並べ替え降順 Macro ' ' Columns("A:A").ColumnWidth = 10.63 '先ずA列の幅を整える Range("A1:I501").Select ActiveWorkbook.Worksheets(1).Sort.SortFields.Clear ActiveWorkbook.Worksheets(1).Sort.SortFields.Add Key:=Range("A1"), _ SortOn:=xlSortOnValues, Order:=xlDescending, DataOption:=xlSortNormal With ActiveWorkbook.Worksheets(1).Sort .SetRange Range("A2:I501") .Header = xlNo .MatchCase = False .Orientation = xlTopToBottom .SortMethod = xlPinYin .Apply End With End Sub こんな感じになったのですが、これをフォルダ内の全てのエクセルファイルにおなじ処理をするにはどうしたらよいのでしょうか?詳しい方いらっしゃいましたらどうぞよろしくお願いします。
- 締切済み
- オフィス系ソフト
- マクロ 並び替え エラーがでる
マクロの記録で以下のようなマクロを作りましたが、実行するとエラー91「オブジェクト変数またはブロック変数が設定されていません」とでます。どう直したらよいでしょうか? Sub Macro6() Columns("A:L").Select Selection.AutoFilter ActiveWorkbook.Worksheets("Sheet1").AutoFilter.Sort.SortFields.Clear ActiveWorkbook.Worksheets("Sheet1").AutoFilter.Sort.SortFields.Add Key:=Range _ ("A1:A497"), SortOn:=xlSortOnValues, Order:=xlDescending, DataOption:= _ xlSortNormal With ActiveWorkbook.Worksheets("Sheet1").AutoFilter.Sort .Header = xlYes .MatchCase = False .Orientation = xlTopToBottom .SortMethod = xlPinYin .Apply End With Range("B2").Select End Sub
- 締切済み
- Visual Basic
- 【Excel2010マクロ】シート名を固定したくな
マクロには全然詳しくないので、マクロの記録を利用して下記のようなデータの並び替えのマクロを作成したのですが、sheet名が「Sheet2」(大文字小文字区別無し)じゃないとマクロが動きません。 -------------------- Sub 並び替え() ' ' 並び替え Macro ' ' Columns("A:A").Select Columns("A:AR").Select With ActiveWorkbook.Worksheets("Sheet2").Sort .SortFields.Clear .SortFields.Add Key:=Range("AN:AN"), Order:=xlAscending, DataOption:=xlSortNormal .SortFields.Add Key:=Range("AC:AC"), Order:=xlAscending, DataOption:=xlSortNormal .SortFields.Add Key:=Range("AD:AD"), Order:=xlAscending, DataOption:=xlSortNormal .SortFields.Add Key:=Range("AF:AF"), Order:=xlAscending, DataOption:=xlSortNormal .SortFields.Add Key:=Range("AG:AG"), Order:=xlAscending, DataOption:=xlSortNormal .SortFields.Add Key:=Range("AH:AH"), Order:=xlAscending, DataOption:=xlSortNormal .SortFields.Add Key:=Range("AJ:AJ"), Order:=xlAscending, DataOption:=xlSortNormal .SortFields.Add Key:=Range("AK:AK"), Order:=xlAscending, DataOption:=xlSortNormal .SortFields.Add Key:=Range("AN:AN"), Order:=xlAscending, DataOption:=xlSortNormal .SetRange Range("A:AR") .Header = xlYes .MatchCase = False .Orientation = xlTopToBottom .SortMethod = xlPinYin .Apply End With End Sub -------------------- マクロを実行するsheet名は都度変わりますので、sheet名を固定しなくてもデータを並び替えられるようにするには、どのようにしたらよろしいのでしょうか?
- ベストアンサー
- Excel(エクセル)
- エクセルのvba(最終行を取得する並び替え)
初めまして、エクセルのvbaについて質問をさせてください。 マクロの記録を使って、以下の通りF列→M列→J列の順に優先して、A列からAL列を昇順に並び替えるvbaを作成したのですが、10000行までとう不恰好な書き方になっています。最終行までという書き方に変えたいのですが、色々試したもののうまくいきません…!この場合、最終行を取得するにはどのような書き方にすれば良いのでしょうか…??(T-T) '並び替え ActiveWorkbook.Worksheets("当月").Sort.SortFields.Clear ActiveWorkbook.Worksheets("当月").Sort.SortFields.Add Key:=Range("F2:F10000"_ ), SortOn:=xlSortOnValues, Order:=xlAscending, DataOption:= _ xlSortTextAsNumbers ActiveWorkbook.Worksheets("当月").Sort.SortFields.Add Key:=Range("M2:M10000"_ ), SortOn:=xlSortOnValues, Order:=xlAscending, DataOption:=xlSortNormal ActiveWorkbook.Worksheets("当月").Sort.SortFields.Add Key:=Range("J2:J10000"_ ), SortOn:=xlSortOnValues, Order:=xlAscending, DataOption:=xlSortNormal With ActiveWorkbook.Worksheets("当月").Sort .SetRange Range("A1:AL10000") .Header = xlYes .MatchCase = False .Orientation = xlTopToBottom .SortMethod = xlPinYin .Apply End With
- ベストアンサー
- Visual Basic
補足
最終結果が添付画像の「並び替え実行後」のようになればいいので、これで充分です。ありがとうございました。 このマクロをSheet1ではなく、アクティブシートで実行するには、 「Worksheets("Sheet1")」 を「ActiveSheet」に変えれば、よろしいでしょうか?