advanced help
per page, with , order by , clip by
Results of 1 - 1 of about 159 for (素人) (0.000 sec.)
[[20220506200629]]
#score: 10177
@digest: 386e9188d189e903869f3e828fde4cd5
@id: 91206
@mdate: 2022-05-07T00:49:16Z
@size: 5984
@type: text/plain
#keywords: 20220504065443 (21322), ヒノ (19899), ノ, (17974), キ", (14723), ツ, (14119), ダ, (13171), イハ (13044), dataoption (12818), ハツ (12488), xlsortonvalues (11855), sortfields (11352), add2 (10668), 在位 (10181), ン, (9384), sorton (9164), xlsortnormal (8912), ズキ (7566), customorder (7517), ッサ (6145), スズ (5776), xlascending (5353), ブロ (4671), ク分 (4488), setrange (4451), バル (4187), 一組 (3991), order (3699), xlguess (3527), ル, (3136), xlpinyin (2739), スバ (2683), sortmethod (2608)
『[20220504065443]並べ替えのマクロ』(素人) [[20220504065443]]の内容において、さらに質問させていただきます。 25行ごとに並べ替えさせるマクロの設定ができればと思っています。 B5:G29を一組(25行)として、以下31組あるものを、 第1キー F列(数値) 第2キー G列(数値) 第3キー E列(I5:I14を参照(文字列)、ただし、10セル全てが入力済とは限らず空欄もあり得る) を条件に、並べ替えさせるマクロの設定について教えてください。 よろしくお願いいたします。 < 使用 Excel:Excel2019、使用 OS:Windows10 > ---- 一組の中で並び替えればいいのですか? それとも、31あるブロックを入れ替えるのですか? (わからん) 2022/05/06(金) 21:08 ---- わからん様、ありがとうございます。 1ブロックごとに、31ブロック、前述の要件にて並べ替え出来たらと思います。 (素人) 2022/05/06(金) 21:12 ---- 1つのブロックの並び替えを手動でやってみてください。 そして、その操作を「マクロの記録」で記録して、コードを提示してみましょう。 <参考> https://excel-ubara.com/excelvba1/EXCELVBA303.html (わからん) 2022/05/06(金) 21:21 ---- わからん様、ありがとうございます。 1ブロックのコードを記録してみました。 Sub Macro1() ' ' Macro1 Macro ' ' ActiveWorkbook.Worksheets("Sheet2").Sort.SortFields.Clear ActiveWorkbook.Worksheets("Sheet2").Sort.SortFields.Add2 Key:=Range("F5:F29") _ , SortOn:=xlSortOnValues, Order:=xlAscending, DataOption:=xlSortNormal ActiveWorkbook.Worksheets("Sheet2").Sort.SortFields.Add2 Key:=Range("G5:G29") _ , SortOn:=xlSortOnValues, Order:=xlAscending, DataOption:=xlSortNormal ActiveWorkbook.Worksheets("Sheet2").Sort.SortFields.Add2 Key:=Range("E5:E29") _ , SortOn:=xlSortOnValues, Order:=xlAscending, CustomOrder:= _ "ホンダ,ニッサン,ヒノ,ダイハツ,スバル,スズキ", DataOption:=xlSortNormal With ActiveWorkbook.Worksheets("Sheet2").Sort .SetRange Range("C5:H29") .Header = xlGuess .MatchCase = False .Orientation = xlTopToBottom .SortMethod = xlPinYin .Apply End With Range("C5").Select End Sub (素人) 2022/05/06(金) 21:34 ---- .SetRange Range("C5:H29")←誤りです。実際には、C5:G29です。 (素人) 2022/05/06(金) 21:42 ---- 1ブロック分ができたら、31ブロック分を繰り返すようにすればいいです。 Sub Macro1() For i = 0 To 30 With ActiveWorkbook.Worksheets("Sheet2").Sort .SortFields.Clear .SortFields.Add2 key:=Range("F5:F29").Offset(i * 25) _ , SortOn:=xlSortOnValues, Order:=xlAscending, DataOption:=xlSortNormal .SortFields.Add2 key:=Range("G5:G29").Offset(i * 25) _ , SortOn:=xlSortOnValues, Order:=xlAscending, DataOption:=xlSortNormal .SortFields.Add2 key:=Range("E5:E29").Offset(i * 25) _ , SortOn:=xlSortOnValues, Order:=xlAscending, CustomOrder:= _ "ホンダ,ニッサン,ヒノ,ダイハツ,スバル,スズキ", DataOption:=xlSortNormal .SetRange Range("C5:G29").Offset(i * 25) .Header = xlGuess .MatchCase = False .Orientation = xlTopToBottom .SortMethod = xlPinYin .Apply End With Next Range("C5").Select End Sub (わからん) 2022/05/06(金) 21:56 ---- わからん様、ありがとうございます。 [20220504065443]にて、γ様に教えていただいた現在位置を記憶するコードを追加したところ、実行時の挙動がとても静かになりました。他の書式にも流用できそうです。 ありがとうございました。 Sub Macro1() Application.ScreenUpdating = False Set r = ActiveCell 'セルの位置を記憶 For i = 0 To 30 With ActiveWorkbook.Worksheets("Sheet2").Sort .SortFields.Clear .SortFields.Add2 Key:=Range("F5:F29").Offset(i * 25) _ , SortOn:=xlSortOnValues, Order:=xlAscending, DataOption:=xlSortNormal .SortFields.Add2 Key:=Range("G5:G29").Offset(i * 25) _ , SortOn:=xlSortOnValues, Order:=xlAscending, DataOption:=xlSortNormal .SortFields.Add2 Key:=Range("E5:E29").Offset(i * 25) _ , SortOn:=xlSortOnValues, Order:=xlAscending, CustomOrder:= _ "ホンダ,ニッサン,ヒノ,ダイハツ,スバル,スズキ", DataOption:=xlSortNormal .SetRange Range("C5:G29").Offset(i * 25) .Header = xlGuess .MatchCase = False .Orientation = xlTopToBottom .SortMethod = xlPinYin .Apply End With Next r.Select 'セルの位置を復旧 Application.ScreenUpdating = True End Sub (素人) 2022/05/07(土) 00:06 ---- 補足と余談です。 とても静かになりました、というのは事実であり、それで結構なんですが、 それは"現在位置を記憶するコード"というよりも、 "画面更新を抑止するコード"の効果と言った方が適切でしょう。 以下は細かい話なので、忘れて頂いて結構です。 (1) 今回のコードでは、ソート処理では(画面抑止しない場合ですが) ・画面はスクロールしますが、 ・アクティブセルそのものは変化しませんので、 Application.ScreenUpdatingを操作するだけでOKです。 (2)余談の余談です。(たいていの人はスキップして頂いて結構です) 「余計なSelectはするな」ということが言われます。 中級者になる一里塚とも言われるほど有益なTipsです。 盲点になるのは、 「実質的に、Selectしているものは結構ありふれている」 という話があります。 SelectionChangeで調べてみると、 Range("セル1").Copy Range("セル2") とか Range("セル1").Copy Range("セル2").PasteSpecial などでも SelectionChangeが起動するんですね。 今回のコードで言うと、.Applyのところで、ソート対象範囲をTargetとして SelectionChangeが動きます。 だからと言って、それを回避せよということでなく(効果があるものは使わざるを得ない)、 内部ではSelectと同様なことが起きている、 ということを頭の片隅に入れておくとよいかもしれません、という話です。 SelectionChangeイベントプロシージャを使う場合に役立つTipsかもしれない。 (別の掲示板での記事で教えていただいたことの受け売りでした) (γ) 2022/05/07(土) 09:47 ...
https://www.excel.studio-kazu.jp/wiki/kazuwiki/202205/20220506200629.txt - [detail] - similar
PREV NEXT
Powered by Hyper Estraier 1.4.13, with 97056 documents and 608292 words.

訪問者:カウンタValid HTML 4.01 Transitional