練習問題19(総合練習1)解答
マクロVBA練習問題19の回答ページです。
マクロVBA練習問題
・客単価は、小数以下1桁で表示。
・1週間の合計の客単価より低い日の客単価は赤字にして下さい。
月曜日 | 火曜日 | 水曜日 | 木曜日 | 金曜日 | 土曜日 | 日曜日 | 合計 | ||
第1週 | 日付 | 1月30日 | 1月31日 | 2月1日 | 2月2日 | 2月3日 | 2月4日 | 2月5日 | |
売上 | 74,233 | 51,133 | 55,347 | 19,689 | 56,239 | 49,860 | 61,796 | ||
客数 | 81 | 71 | 49 | 90 | 88 | 51 | 14 | ||
客単価 | |||||||||
第2週 | 日付 | 2月6日 | 2月7日 | 2月8日 | 2月9日 | 2月10日 | 2月11日 | 2月12日 | |
売上 | 75,717 | 54,261 | 57,582 | 20,892 | 55,137 | 47,925 | 59,398 | ||
客数 | 80 | 67 | 51 | 91 | 91 | 49 | 15 | ||
客単価 | |||||||||
第3週 | 日付 | 2月13日 | 2月14日 | 2月15日 | 2月16日 | 2月17日 | 2月18日 | 2月19日 | |
売上 | 77,231 | 52,155 | 53,199 | 20,082 | 51,958 | 50,857 | 63,031 | ||
客数 | 83 | 66 | 50 | 89 | 90 | 50 | 13 | ||
客単価 | |||||||||
第4週 | 日付 | 2月20日 | 2月21日 | 2月22日 | 2月23日 | 2月24日 | 2月25日 | 2月26日 | |
売上 | 72,778 | 53,198 | 56,453 | 20,483 | 52,997 | 48,883 | 60,585 | ||
客数 | 79 | 69 | 52 | 92 | 92 | 51 | 14 | ||
客単価 | |||||||||
合計 | 売上 | ||||||||
客数 | |||||||||
客単価 |
※上記表の全体を選択し、コピー(Ctrl+C)の後、エクセルのシートのA1セルに貼り付け(Ctrl+V)してください。
すぐに解答を見ずに、必ず自力で書けるとこまででも良いので書きましょう。
シンキングタイム
シンキングタイム終了
書くべきマクロVBAが分からない時は、
ここでじっくり勉強してから再チャレンジしてください。
マクロVBA練習問題解答
※.Valueは適宜省略しています。
Sub 練習問題19()
Dim i As Long
Dim j As Long
Dim ix As Long
'全体のfont色をリセット
Range("A1:J20").Font.ColorIndex = xlAutomatic
'合計欄の消去
Range("J2:J20").ClearContents
Range("C18:I20").ClearContents
'合計単価の小数設定
Range("C20:I20").NumberFormatLocal = "0.0"
'4週
For i = 1 To 4
ix = (i - 1) * 4 + 2 '日付の行位置
'単価の消去と小数設定
With Range(Cells(ix + 3, 3), Cells(ix + 3, 10))
.NumberFormatLocal = "0.0"
.ClearContents
End With
'7列
For j = 3 To 9
'横合計と客単価
Cells(ix + 1, 10) = Cells(ix + 1, 10) + Cells(ix + 1, j)
Cells(ix + 2, 10) = Cells(ix + 2, 10) + Cells(ix + 2, j)
Cells(ix + 3, j) = Cells(ix + 1, j) / Cells(ix + 2, j)
'縦合計
Cells(18, j) = Cells(18, j) + Cells(ix + 1, j)
Cells(19, j) = Cells(19, j) + Cells(ix + 2, j)
'縦合計の客単価
If i = 4 Then
Cells(20, j) = Cells(18, j) / Cells(19, j)
End If
Next
'横合計の客単価
Cells(ix + 3, 10) = Cells(ix + 1, 10) / Cells(ix + 2, 10)
For j = 3 To 9
If Cells(ix + 3, j) < Cells(ix + 3, 10) Then
Cells(ix + 3, j).Font.Color = vbRed
End If
Next
'縦横合計
Cells(18, 10) = Cells(18, 10) + Cells(ix + 1, 10)
Cells(19, 10) = Cells(19, 10) + Cells(ix + 2, 10)
Next
'縦横合計の客単価
Cells(20, 10) = Cells(18, 10) / Cells(19, 10)
End Sub
難しくはないですが、結構面倒な処理になります。
縦横の順番や書き方はいろいろあります。
Worksheetfunction.Sumを使うような方法もあり得ます。
いろいろな書き方に挑戦してみて下さい。
同じテーマ「マクロVBA練習問題解答」の記事
練習問題16(WorksheetFunctionの練習)解答
練習問題17(ブック・シートの操作の練習)解答
練習問題18(Dir関数の練習)解答
練習問題19(総合練習1)解答
練習問題20(総合練習2)解答
練習問題21(総合練習3)解答
練習問題22(総合練習4)解答
練習問題23(総合練習5)解答
練習問題24(再帰呼出し)解答
練習問題25(各種VBA関数)解答
練習問題26(全シート処理とハイパーリンク)解答
新着記事NEW ・・・新着記事一覧を見る
エクセル試験3:月間の所定労働時間|エクセル練習問題(2023-10-04)
エクセル試験2:所得税の計算|エクセル練習問題(2023-10-04)
エクセル試験1:曜日別の平均客単価|エクセル練習問題(2023-10-04)
列全体を指定する時のRangeとColumnsの違い|ツイッター出題回答 (2023-09-24)
シートのActiveXチェックボックスの指定方法|ツイッター出題回答 (2023-09-24)
ByRef引数の型が一致しません。|ツイッター出題回答 (2023-09-22)
シートコピー後のアクティブシートは何か|ツイッター出題回答 (2023-09-19)
Excel関数の引数を省略した場合について|ツイッター出題回答 (2023-09-14)
セル個数を返すRange.CountLargeプロパティとは|VBA技術解説(2023-09-08)
記号を繰り返してグラフ作成(10単位で折り返す)|ツイッター出題回答 (2023-08-28)
アクセスランキング ・・・ ランキング一覧を見る
1.最終行の取得(End,Rows.Count)|VBA入門
2.RangeとCellsの使い方|VBA入門
3.繰り返し処理(For Next)|VBA入門
4.セルのコピー&値の貼り付け(PasteSpecial)|VBA入門
5.変数宣言のDimとデータ型|VBA入門
6.マクロとは?VBAとは?VBAでできること|VBA入門
7.ブックを閉じる・保存(Close,Save,SaveAs)|VBA入門
8.条件分岐(IF)|VBA入門
9.並べ替え(Sort)|VBA入門
10.Range以外の指定方法(Cells,Rows,Columns)|VBA入門
- ホーム
- マクロVBA入門編
- マクロVBA練習問題解答
- 練習問題19(総合練習1)解答
このサイトがお役に立ちましたら「シェア」「Bookmark」をお願いいたします。
記述には細心の注意をしたつもりですが、
間違いやご指摘がありましたら、「お問い合わせ」からお知らせいただけると幸いです。
掲載のVBAコードは動作を保証するものではなく、あくまでVBA学習のサンプルとして掲載しています。
掲載のVBAコードは自己責任でご使用ください。万一データ破損等の損害が発生しても責任は負いません。