• ベストアンサー
※ ChatGPTを利用し、要約された質問です(原文:エクセルでマクロを使った同一処理を列方向に繰返す?)

エクセルでマクロを使った同一処理を列方向に繰返す方法

このQ&Aのポイント
  • VBAを使用して、エクセルでマクロを使った同一処理を列方向に繰り返す方法について説明します。
  • 具体的には、添付図の表でB2店について品名・数量・金額を、4行目~10行目まで、金額の多い順に並べ替え、金額の合計をセルD2に記入するマクロを実装する方法を解説します。
  • さらに、この処理をE5店、H8店……と3列ずつ例えば20ブロック処理するプログラムについても説明します。

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

  • ベストアンサー
  • tom04
  • ベストアンサー率49% (2537/5117)
回答No.3

こんにちは! せっかくNo.2さんがヒントを出してくださっているので、 余計なお世話かもしれませんが・・・ Sub 並び替え() Dim j As Long For j = 2 To Cells(3, Columns.Count).End(xlToLeft).Column Step 3 With Cells(3, j) .Resize(8, 3).Sort key1:=.Offset(, 2), order1:=xlDescending, Header:=xlYes .Offset(-1, 2) = WorksheetFunction.Sum(.Offset(1, 2).Resize(7)) End With Next j End Sub こんな感じではどうでしょうか?m(_ _)m

qwer098123
質問者

お礼

お答え有難うございます。 ともかく試させていただきました。すっきりです。 読み解くのにまだ勉強しなければいけないところがありますが 今回実際に直面しているのは、1ブロックあたりのマクロ処理がもっと 長いのですが、いただいた式で、セルの表現をきちっとおさえて適用 しようと思います。助かりました。

その他の回答 (2)

  • hallo-2007
  • ベストアンサー率41% (888/2115)
回答No.2

マクロの記録で得られたコードだと思いますが、 Range("B3:D10").Select をCellsを使って同じことをさせると Range(Cells(3, 2), Cells(10, 4)).Select Range("D4")は Cells(2, 4) Range("D2").Select はCells(2,4).Select と使ってできます。 試しに Sub Test() For i = 2 To 32 Step 3 Range(Cells(3, i), Cells(10, i + 2)).Select MsgBox "選択位置の変更" Next End Sub を試してみてください。今のコードをどうのようにすれば良いか 参考にしてみてください。

qwer098123
質問者

お礼

早速にお答え有難うございます。 試してみました。なるほどMsgBox "選択位置の変更"がはいっているので ステップがつかめました。活用させていただきたいと思います。

回答No.1

RangeをCellsにして For~next を使ってみた Sub 多い順と合計2()    Dim n As Long    For n = 0 To 57 Step 3        Range(Cells(3, 2 + n), Cells(10, 4 + n)).Sort Key1:=Cells(4, 4 + n), Order1:=xlDescending, Header:=xlGuess, _        OrderCustom:=1, MatchCase:=False, Orientation:=xlTopToBottom, SortMethod _         :=xlPinYin        Cells(2, 4 + n).FormulaR1C1 = "=SUM(R[2]C:R[18]C)"    Next n End Sub

qwer098123
質問者

お礼

早速に回答有難うございます。 試してみましたら、一瞬で目的としていたことができました。 まだ式は全ては読みきっていないので、後でしっかり理解したいと思います。