マクロでの質問になります。
どなたか助けてくださいm_ _m
A列~N列 2~48行まで数字が入っているエクセルファイルに
シート名がバラバラの複数シートが入っています。
ここに下記作業を実行したいです!!
C列 2-19行の合計をC-20に反映 21-36行の合計をC-37に反映 38-48行の合計をC-49に反映
C列 20,37,49の合計をC-51に反映
C列と同じ作業をD,F,G,H,J,K,L,M列にも実行する
E列 2-19行の平均をE-20に反映 21-36行の合計をE-37に反映 38-48行の合計をE-49に反映
E列 20,37,49の平均をE-51に反映
E列と同じ作業をI,N列にも実行する
①0または0%の場合は空白(表示させない)
②エラー表示の場合は空白(表示させない)
③全セル3桁カンマ(,)表示で 20,37,49,51行目は太文字
④空白は無視して合計、平均は反映させる
⑤C列チームは数値 E列チームは%
⑥同ファイル内に名前がバラバラの複数シートがありこのシート全てに同じ作業を繰り返す
以上①~⑥の条件を盛り込み実行させる方法を
どなたか宜しくお願いいたします。
No.2ベストアンサー
- 回答日時:
この程度の変更はご自分で出来るように頑張って下さい。
Sub goo_Sample()
Dim wb As Workbook
Dim sh As Worksheet
Dim i As Integer
Dim tmp As Variant
Application.ScreenUpdating = False
Set wb = Workbooks.Open("D:\Data\test.xlsx")
For Each sh In wb.Worksheets
With sh
.Range("C2:N51").NumberFormatLocal = "#,##0;-#,##0;"
With Range("C20:N20, C37:N37, C49:N49, C51:N51").Font
.FontStyle = "太字"
End With
For i = 3 To 14
'E,I,N列
If i = 5 Or i = 9 Or i = 14 Then
tmp = Application.Average(.Range(.Cells(2, i), .Cells(19, i)))
If IsError(tmp) Then
.Cells(20, i).Value = ""
Else
.Cells(20, i).Value = tmp
End If
tmp = Application.Average(.Range(.Cells(21, i), .Cells(36, i)))
If IsError(tmp) Then
.Cells(37, i).Value = ""
Else
.Cells(37, i).Value = tmp
End If
tmp = Application.Average(.Range(.Cells(38, i), .Cells(48, i)))
If IsError(tmp) Then
.Cells(49, i).Value = ""
Else
.Cells(49, i).Value = tmp
End If
.Cells(51, i).Value = (.Cells(20, i).Value + .Cells(37, i).Value + .Cells(49, i).Value) / 3
Else
'C,D,F,G,H,J,K,L,M列
.Cells(20, i).Value = Application.Sum(.Range(.Cells(2, i), .Cells(19, i)))
.Cells(37, i).Value = Application.Sum(.Range(.Cells(21, i), .Cells(36, i)))
.Cells(49, i).Value = Application.Sum(.Range(.Cells(38, i), .Cells(48, i)))
.Cells(51, i).Value = .Cells(20, i).Value + .Cells(37, i).Value + .Cells(49, i).Value
End If
Next i
End With
Next sh
wb.Close SaveChanges:=True
Application.ScreenUpdating = True
End Sub
No.1
- 回答日時:
処理したいブックは下記で設定して下さい。
コード7行目
Set wb = Workbooks.Open("D:\Data\test.xlsx")
Sub goo_Sample()
Dim wb As Workbook
Dim sh As Worksheet
Dim i As Integer
Dim tmp As Variant
Application.ScreenUpdating = False
Set wb = Workbooks.Open("D:\Data\test.xlsx")
For Each sh In wb.Worksheets
With sh
.Range("C2:N51").NumberFormatLocal = "#,##0;-#,##0;"
With Range("C20:N20, C37:N37, C49:N49, C51:N51").Font
.FontStyle = "太字"
End With
For i = 3 To 14
.Cells(37, i).Value = Application.Sum(.Range(.Cells(21, i), .Cells(36, i)))
.Cells(49, i).Value = Application.Sum(.Range(.Cells(38, i), .Cells(48, i)))
'E,I,N列
If i = 5 Or i = 9 Or i = 14 Then
tmp = Application.Average(.Range(.Cells(2, i), .Cells(19, i)))
If IsError(tmp) Then
.Cells(20, i).Value = ""
Else
.Cells(20, i).Value = tmp
End If
.Cells(51, i).Value = (.Cells(20, i).Value + .Cells(37, i).Value + .Cells(49, i).Value) / 3
Else
'C,D,F,G,H,J,K,L,M列
.Cells(20, i).Value = Application.Sum(.Range(.Cells(2, i), .Cells(19, i)))
.Cells(51, i).Value = .Cells(20, i).Value + .Cells(37, i).Value + .Cells(49, i).Value
End If
Next i
End With
Next sh
wb.Close SaveChanges:=True
Application.ScreenUpdating = True
End Sub
いつもありがとうございますm(_ _)m
こちら使わせて頂きました、 完璧でしたm(_ _)m ありがとうございます! 質問なのですが、I. N列の37,49行目を合計ではなく平均にしたい場合はどの様に変更したらよろしいでしょうか。 宜しくお願いいたします。
お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!
似たような質問が見つかりました
- Excel(エクセル) エクセル・スプレッドシートで、一定数を超えたらゼロから再累計する方法 8 2022/05/28 03:52
- Excel(エクセル) 列を自動で追加したい 3 2022/07/11 12:58
- Excel(エクセル) エクセルで最初に値が入っているセルを見つける方法はありますか? 2 2023/07/18 14:58
- Excel(エクセル) 別シートに毎回異なるデータをコピーする 7 2022/06/24 09:02
- Excel(エクセル) 【!】Excel 2つの条件付き書式が反映されません。。 5 2023/07/14 16:47
- Visual Basic(VBA) ファイル全てを .xlsm に変更したところ、プログラムが途中で落ちてしまっています 17 2022/12/07 12:03
- C言語・C++・C# このプログラミングの問題を教えてほしいです。 キーボードからデータ数nとn個のデータを入力し、平均値 3 2022/12/19 22:51
- Excel(エクセル) 特定文字(数字)で行挿入、挿入された行で合計したい 2 2023/03/13 14:30
- Excel(エクセル) ある数値に対して、値を返す数式についてです 2 2022/09/13 22:06
- Excel(エクセル) エクセルの条件付き書式 個人シートを参照して集計シートに色付けしたい 1 2023/06/22 00:39
関連するカテゴリからQ&Aを探す
おすすめ情報
デイリーランキングこのカテゴリの人気デイリーQ&Aランキング
-
数学 Tan(θ)-1/Cos(θ)について...
-
スマートな関数を教えて下さい。
-
Excel ウインドウ枠の固定をす...
-
EXACT関数とIF関数の組み合わせ...
-
4つのパターンを表示するEXACT...
-
関数を教えて下さい。
-
Excel:一部のフォントでセルの...
-
エクセルで指定した日付、店舗...
-
エクセルでセルに「氏名を入力...
-
Excel 2019 のピボットテーブル...
-
スプレッドシートの関数VLOOKUP...
-
エクセルで日付の入ったセルの...
-
Excelファイルの「数式」タブ→...
-
excelの不要な行の削除ができな...
-
Excelのif関数で文字が見えなく...
-
各ページの1番上の表示について
-
エクセル関数に詳しい方、教え...
-
INDIRECTを使わず excelで複数...
-
Excel 2019 は、SPILL機能があ...
-
UNIQUE関数が使えないバージョ...
マンスリーランキングこのカテゴリの人気マンスリーQ&Aランキング
-
ファイル内にある数字の出現回...
-
Excel関数の先頭に「@」が入っ...
-
エクセルの気味悪い不思議
-
Excel VBAで、実行時にsheet上...
-
表示されている人数だけを数え...
-
他人が作ったマクロの理解
-
Excelの関数について質問です。
-
Excel 集計表
-
エクセル 日時の計算式について
-
Excelの関数に関して質問です。...
-
エクセル:セル内の文字列の下...
-
絞り込み検索
-
エクセルの関数で
-
エクセルの書式設定について教...
-
余分なEXCELファイルに印刷され...
-
VBA 同一シート内での転記の仕方
-
長期休みの関数はありますか
-
Excelの空のセル
-
エクセルで入力してある文を別...
-
Excelのマクロで、セルを結合し...
おすすめ情報