練習問題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の練習)解答
練習問題20(総合練習2)解答
新着記事NEW ・・・新着記事一覧を見る
TRIMRANGE関数(セル範囲をトリム:端の空白セルを除外)|エクセル入門(2024-08-30)
正規表現関数(REGEXTEST,REGEXREPLACE,REGEXEXTRACT)|エクセル入門(2024-07-02)
エクセルが起動しない、Excelが立ち上がらない|エクセル雑感(2024-04-11)
ブール型(Boolean)のis変数・フラグについて|VBA技術解説(2024-04-05)
テキストの内容によって図形を削除する|VBA技術解説(2024-04-02)
ExcelマクロVBA入門目次|エクセルの神髄(2024-03-20)
VBA10大躓きポイント(初心者が躓きやすいポイント)|VBA技術解説(2024-03-05)
テンキーのスクリーンキーボード作成|ユーザーフォーム入門(2024-02-26)
無効な前方参照か、コンパイルされていない種類への参照です。|エクセル雑感(2024-02-17)
初級脱出10問パック|VBA練習問題(2024-01-24)
アクセスランキング ・・・ ランキング一覧を見る
1.最終行の取得(End,Rows.Count)|VBA入門
2.セルのコピー&値の貼り付け(PasteSpecial)|VBA入門
3.変数宣言のDimとデータ型|VBA入門
4.繰り返し処理(For Next)|VBA入門
5.RangeとCellsの使い方|VBA入門
6.ブックを閉じる・保存(Close,Save,SaveAs)|VBA入門
7.セルのクリア(Clear,ClearContents)|VBA入門
8.メッセージボックス(MsgBox関数)|VBA入門
9.条件分岐(Select Case)|VBA入門
10.ブック・シートの選択(Select,Activate)|VBA入門
- ホーム
- マクロVBA入門編
- マクロVBA練習問題解答
- 練習問題19(総合練習1)解答
このサイトがお役に立ちましたら「シェア」「Bookmark」をお願いいたします。
記述には細心の注意をしたつもりですが、
間違いやご指摘がありましたら、「お問い合わせ」からお知らせいただけると幸いです。
掲載のVBAコードは動作を保証するものではなく、あくまでVBA学習のサンプルとして掲載しています。
掲載のVBAコードは自己責任でご使用ください。万一データ破損等の損害が発生しても責任は負いません。