Sub 更新()のマクロはとりあえず、完成して使用しています。(若干不都合なところがあります。)これは、毎週の累積が増えていきますが、・・・・・5・4・3・2・1と増えて行くのを1・2・3・4・5・・・・というように、若い番号から順序よくなるようにしたいと思っています。(約20週程度)
Sub Test4 順番() 以下のような、マクロコードを教えて頂いたのですが、前述のような順番になりません。どこをどのように修正したらよいでしょうか。
なお、
1.AL列のところから、7項目が1セットです。(約20週程度)
2.例えばX5=SUM(INDEX(INDIRECT("RC38:RC177",0)*(MOD(COLUMN(INDIRECT("A1:EJ1"))-1,7)=COLUMN(A2)-1),0))、黄色の部分は例えばX25=SUM(X5:X24)総合計累計の行の合計の関数です。(関数を使用しているところ)
3.Sub Test4 順番() のマクロコードでは、1行目の(7項目が1セット)の最初の場所に番号が必要になりますので、これを入れるマクロコードが必要になるかもしれません。
4.できればですが、AE~AK列が累積を送るとすると、どうしても空いてしまっています。これをどうにかできればと思っています。
Sub 更新()
Range("AE1:AK45").Value = Range("Q1:W45").Value '「先週までの累計」に「累計」数値を入れる
Range("AE1:AK45").Insert Shift:=xlToRight
Range("AL1", "AR45").BorderAround Weight:=xlMedium '外枠:中太線
Range("AL1", "AR52").Borders.Weight = xlHairline '格子:極細線
For c = 38 To 177 Step 7
Set Rng = Range(Cells(4, c), Cells(45, c))
Cells(46, c).Value = Application.WorksheetFunction.Sum(Rng)
Next c
For c = 39 To 177 Step 7
Set Rng = Range(Cells(4, c), Cells(45, c))
Cells(47, c).Value = Application.WorksheetFunction.Sum(Rng)
Next c
For c = 40 To 177 Step 7
Set Rng = Range(Cells(4, c), Cells(45, c))
Cells(48, c).Value = Application.WorksheetFunction.Sum(Rng)
Next c
For c = 41 To 177 Step 7
Set Rng = Range(Cells(4, c), Cells(45, c))
Cells(49, c).Value = Application.WorksheetFunction.Sum(Rng)
Next c
For c = 42 To 177 Step 7
Set Rng = Range(Cells(4, c), Cells(45, c))
Cells(50, c).Value = Application.WorksheetFunction.Sum(Rng)
Next c
For c = 43 To 177 Step 7
Set Rng = Range(Cells(4, c), Cells(45, c))
Cells(51, c).Value = Application.WorksheetFunction.Sum(Rng)
Next c
For c = 44 To 177 Step 7
Set Rng = Range(Cells(4, c), Cells(45, c))
Cells(52, c).Value = Application.WorksheetFunction.Sum(Rng)
Next c
Range("C4:I45").ClearContents 'C4:I45をクリアする
Range("C3").Value = Range("C3").Value + 7 '週の最初の日付を7日進める
End Sub
Sub Test4 順番()
Dim r As Range
With Range("A1").CurrentRegion
Set r = .Rows(1).SpecialCells(xlCellTypeConstants, xlNumbers)
r.Offset(, -1).FormulaR1C1 = "=RC[1]"
r.Offset(, 1).FormulaR1C1 = "=RC[-1]"
.Sort Key1:=.Rows(1), Order1:=xlAscending, Header:=xlNo, Orientation:=xlLeftToRight
.Rows(1).SpecialCells(xlCellTypeFormulas).Value = Empty
End With
End Sub
A 回答 (1件)
- 最新から表示
- 回答順に表示
No.1
- 回答日時:
こんにちは。
図が小さくて判別できないのと、コードではご説明にない範囲の値を参照したりしているので、これまたさっぱりなのですが・・・
>5・4・3・2・1と増えて行くのを1・2・3・4・5・・・・というように、
>若い番号から順序よくなるようにしたいと思っています
マクロを実行すると7列単位で左側に追加されるのを右側に追加するようになさりたいという事かと想像します。
やっている内容を良く把握できていないで、回答するのもなんなのですが・・・
ご提示のコードの最初のところで、
> Range("AE1:AK45").Value = Range("Q1:W45").Value
> Range("AE1:AK45").Insert Shift:=xlToRight
としている2行が、それぞれ
「Q1:W45」の範囲の値を「AE1:AK45」にコピー
「AE1:AK45」を右に移動して7列分挿入
ということを行っています。
この結果、ご質問のようなことになっていると思いますので、
使用している最終列の次の7列に「Q1:W45」の範囲の値をコピーするようにしてあげれば、そのまま右側に追加されてゆくことになると思われます。
使用している最終セルは
Cells.SpecialCells(xlCellTypeLastCell)
でも取得可能かと思いますが、操作で一度使ったセルはカウントされてしまう可能性がありますので、値が必ず入っている行があるならば
Cells(対象行、Columns.Count).End(xlToLeft).Column
という方法で取得する方がよろしいでしょう。求めた列+1の列から記入を始めれば良いはずです。
但し、その後で行っている38列~44列を対象とした操作は、新しく追加した値に対して行っているものと思いますので、対象列が上で求めた列からにかわってくるものと思われますので、調整が必要になると想像します。
(なんとなく繰り返しが多いので、もっと単純化できそうに見えますが・・・)
>AE~AK列が累積を送るとすると、どうしても空いてしまっています。
>これをどうにかできればと思っています
仮に、今のままの方法で処理を行うにしても、現状は
(空列に)「値をコピー」→「7列挿入して右にシフト」
としていますので、常に7列の空きができているものと思われます。
「7列挿入して右にシフト」→「挿入したところへ値をコピー」
のように必要な時に列を挿入するように順序を変えるだけでも、実現が可能と思います。
最初に述べました右側に追加して行く方式の場合は、「列の挿入」自体を行わなくても良いので、初めから(中間に)空き列を設けておく必要はないものと思います。
※ コード自体は理解できますが、処理の意味(意図)を理解できずに回答していますので、勘違いがあるかもしれません。その際はご容赦願います。
お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!
似たような質問が見つかりました
- Visual Basic(VBA) VBAで教えて頂きたいのですが? 1 2022/04/29 02:36
- Excel(エクセル) VBAの指示の内容 昨日こちらでご教示頂いたのですが初心者な為、一つ一つの指示が何をやっているのかわ 2 2022/10/25 18:08
- Visual Basic(VBA) Excelで下記のようにマクロを作ったところ、一回目は実行できたのですが、二回目以降「実行時エラー1 1 2022/03/25 08:08
- Visual Basic(VBA) VBA処理追加 こちらでご教示頂いたのですが回答完了させてしまいましたのでこちらからまた質問させてく 2 2022/10/27 09:57
- Visual Basic(VBA) ExcelVBAで、index、match関数を使用して、指定範囲に出力したい 3 2022/10/18 21:53
- Visual Basic(VBA) 他のシートからコピーする下記マクロで貼付け位置をWorksheets(1).Range("A3")の 8 2023/01/30 18:48
- Visual Basic(VBA) データベースから絞り込んでデータを読み込み 1 2023/02/21 19:51
- Visual Basic(VBA) 前回ご教授いただいたコードに覚えたてのループ処理で品名りんごAから順に20回for nextでループ 7 2023/01/13 22:01
- Excel(エクセル) マクロで最終行から上に検索を逆にしたい 1 2022/05/17 18:27
- Visual Basic(VBA) VBAコードが作動せず、どこに問題があるのか教えて下さい。 3 2023/06/13 13:20
関連するカテゴリからQ&Aを探す
おすすめ情報
デイリーランキングこのカテゴリの人気デイリーQ&Aランキング
-
至急!尿検査前日にオナニーし...
-
首吊りどこ締めるの
-
尿検査の前日は自慰控えたほう...
-
尿検査前日に自慰行為した時の...
-
射精をして1週間以内に尿検査を...
-
白血球が多いとどんな心配があ...
-
中出しをするとお腹が痛い・・・。
-
今朝、毎朝の習慣でオナニーし...
-
変な話しになります。尿検査で...
-
1日前の検尿
-
彼女のことが好きすぎて彼女の...
-
腕を見たら黄色くなってる部分...
-
検便についてです。 便は取れた...
-
EXCELで条件付き書式で空白セル...
-
小数点以下を繰り上げたものを...
-
勃起する時って痛いんですか? ...
-
男です。昨日の午後3時くらいに...
-
2つの数値のうち、数値が小さい...
-
これって喉仏ですか? 私は女性...
-
EXCELで式からグラフを描くには?
マンスリーランキングこのカテゴリの人気マンスリーQ&Aランキング
-
首吊りどこ締めるの
-
中出しをするとお腹が痛い・・・。
-
麻疹風疹の抗体検査結果につい...
-
エクセルでエラーが出て困って...
-
白血球が多いとどんな心配があ...
-
彼女のことが好きすぎて彼女の...
-
検便についてです。 便は取れた...
-
勃起する時って痛いんですか? ...
-
至急!尿検査前日にオナニーし...
-
納豆食べた後の尿の納豆臭は何故?
-
これって喉仏ですか? 私は女性...
-
EXCELで条件付き書式で空白セル...
-
精子が黄色?
-
小数点以下を繰り上げたものを...
-
値が入っているときだけ計算結...
-
口の中に黒い血の塊
-
健否~書類の書き方~
-
甲状腺が腫れているが血液検査...
-
はしかの抗体検査は何科の病院...
-
テスターで断線を調べる方法教...
おすすめ情報
画像はサンプルであり、実際の表のサイズが最大で177列の52行です。
Sub 更新()
Range("AE1:AK45").Insert Shift:=xlToRight ' 空白をしてから
Range("AE1:AK52").Value = Range("Q1:W52").Value '「先週までの累計」に「累計」数値を入れる ・・・・・・ 省略 ・・・・・・・
4.については、上記のようにして完成しました。
並び替えについては
Sub Test4 順番()
Dim r As Range
With Range("AE1").CurrentRegion
........省略.........
.Sort Key1:=.Rows(1), Order1:=xlAscending, Header:=xlNo, Orientation:=xlLeftToRight
>上記の部分がエラーになります。
.Rows(1).SpecialCells(xlCellTypeFormulas).Value = Empty
>以下のようにするということでしょうか。
.Rows(1).Cells.SpecialCells(xlCellTypeLastCell)
.Rows(1).Cells(”2”.Columns.Count).End(xlToLeft).Column
End With
End Sub
fujillinさん、ありがとうございます。
ここに補足するべきでしたか?
質問者のところに、回答に対する質問の再度の質問補足をしてしまいました。