VBA練習問題解答
練習問題16(WorksheetFunctionの練習)解答

Excelマクロ練習問題集、エクセルVBAの学習教材
公開日:2013年5月以前 最終更新日:2021-03-31

練習問題16(WorksheetFunctionの練習)解答

マクロVBA練習問題16の回答ページです。

マクロVBA練習問題

・シート「練習16_マスタ」より、商品名と単価を取得し、
 それぞれのセル(C列とD列)に入れて下さい。
・シート「練習16_マスタ」に存在しない場合は、空欄のままにして下さい。
・各行の金額(単価×数量)を計算しF列に入れてください。、
・F12セルに合計金額を計算し入れて下さい。

練習問題用のExcelファイル
シート「練習16」
 A   B    C    D  E  F
商品番号 商品名 単価 数量 金額
1 A06     3  
2 A07     2  
3 A02     4  
4 A08     5  
5 A01     6  
6 A03     1  
7 A04     4  
8 A09     3  
9 A10     7  
10 A05     2  
        合計  

シート「練習16_マスタ」
  A      B    C
商品番号 商品名 単価
A01 商品△1 1100
A02 商品△2 1200
A03 商品△3 1300
A05 商品△5 1500
A06 商品△6 1600
A08 商品△8 1800
A09 商品△9 1900
A10 商品△10 2000

※上記表の全体を選択し、コピー(Ctrl+C)の後、エクセルのシートのA1セルに貼り付け(Ctrl+V)してください。

では、お考えください。
すぐに解答を見ずに、必ず自力で書けるとこまででも良いので書きましょう。

シンキングタイム

シンキングタイム開始


シンキングタイム終了

当サイトのコンテンツ
ExcelマクロVBA入門
VBA入門シリーズは、マクロVBAを実務で自在に使いこなし業務を効率化・自動化できるようになることを目的としています。始めはより詳しく丁寧に解説しつつ少しずつ難易度を上げることで無理なく学習を進められるようにしています。「マクロ」と「VBA」の違い マクロはエクセルの操作を自動化する機能であり、

書くべきマクロVBAが分からない時は、
ここでじっくり勉強してから再チャレンジしてください。

マクロVBA練習問題解答

では解答のマクロVBAコードです。
※.Valueは適宜省略しています。

Sub 練習問題16()
  Dim i As Long
  Dim ix As Long
  Dim lngTotal As Long
  Dim ws1 As Worksheet
  Dim ws2 As Worksheet
  Set ws1 = Worksheets("練習16")
  Set ws2 = Worksheets("練習16_マスタ")
  lngTotal = 0
  With ws1
    For i = 2 To 11
      ix = WorksheetFunction.CountIf(ws2.Columns(1), .Cells(i, 2))
      If ix > 0 Then
        ix = WorksheetFunction.Match(.Cells(i, 2), ws2.Columns(1), False)
        .Cells(i, 3) = ws2.Cells(ix, 2)
        .Cells(i, 4) = ws2.Cells(ix, 3)
        .Cells(i, 6) = .Cells(i, 4) * .Cells(i, 5)
        lngTotal = lngTotal + .Cells(i, 6)
      End If
    Next
    .Cells(12, 6) = lngTotal
  End With
End Sub

ここでの書き方は色々と考えられます。
上記では、あえてワークシート関数のCountIfでの存在確認をするように書いてみました。
On Err Resume Nextでのエラー処理も使えるようになっておきましょう。

Sub 練習問題16_2()
  Dim i As Long
  Dim ix As Long
  Dim lngTotal As Long
  Dim ws1 As Worksheet
  Dim ws2 As Worksheet
  Set ws1 = Worksheets("練習16")
  Set ws2 = Worksheets("練習16_マスタ")
  lngTotal = 0
  On Error Resume Next
  With ws1
    For i = 2 To 11
      Err.Clear
      ix = WorksheetFunction.CountIf(ws2.Columns(1), .Cells(i, 2))
      If Err.Number = 0 Then
        ix = WorksheetFunction.Match(.Cells(i, 2), ws2.Columns(1), False)
        .Cells(i, 3) = ws2.Cells(ix, 2)
        .Cells(i, 4) = ws2.Cells(ix, 3)
        .Cells(i, 6) = .Cells(i, 4) * .Cells(i, 5)
        lngTotal = lngTotal + .Cells(i, 6)
      End If
    Next
    .Cells(12, 6) = lngTotal
  End With
End Sub


ワークシート関数は非常に便利で、しかも、高速に動作します。
他の開発言語にはない、ExcelマクロVBAならではの機能です。
ぜひ、積極的に活用しましょう。

以下も参考にして下さい。

ExcelマクロVBA入門.第87回.WorksheetFunction(ワークシート関数を使う)
VBA関数以外に、Excelワークシート関数をマクロVBAで使うことが出来ます。ワークシート関数は、VBA関数よりはるかに多くの関数があるので、ぜひ活用したいところです。ワークシート関数を使う事で、VBAコードを非常に簡潔に記述することが出来る場合が多いものです。




同じテーマ「マクロVBA練習問題解答」の記事

練習問題13(文字列関数の練習)解答

マクロVBA練習問題13の解答ページです。マクロVBA練習問題 ・漢字の都道府県名と、漢字の県庁所在地を使い、都道府県名(県庁所在地)を作成し、C列に入力して下さい。・都道府県名と県庁所在地が同じ場合は、都道府県名だけにして下さい。
練習問題14(行の挿入・削除の練習)解答
マクロVBA練習問題14の解答ページです。マクロVBA練習問題 ・区分がDの行を削除して下さい。・区分がIの行の前に新規行を挿入して下さい。練習問題用のExcelファイル こちらからダウンロードできます。
練習問題15(Withとオブジェクト変数の練習)解答
マクロVBA練習問題15の解答ページです。マクロVBA練習問題 ・シート「練習15」の表データを、シート「練習15_回答」に支店別・分類別に集計して下さい。※シート「練習15_回答」には、すべての支店と分類が必ずあるとします。
練習問題16(WorksheetFunctionの練習)解答
練習問題17(ブック・シートの操作の練習)解答
マクロVBA練習問題17の解答ページです。マクロVBA練習問題 ※まず最初に A列にパス、B列にブック名(エクセルのファイル名)を、実際のあなたのPC環境に合わせて入力して下さい。・シート「練習17_回答」を新規に追加し、そのA列にブック名 B列にそのブックの全シート名の一覧を入れて下さい。
練習問題18(Dir関数の練習)解答
マクロVBA練習問題18の解答ページです。マクロVBA練習問題 ・A1に指定したフォルダ内にある、全てのエクセルファイル(xls,xlsx,xlsm)のブック名をA2以降に、そのブックの全シート名をB2から右に入れて下さい。(B2,C2,D2,…そのブックの全シート名を横に入れていく) ※サブフォルダ以下のファイル…
練習問題19(総合練習1)解答
マクロVBA練習問題19の回答ページです。マクロVBA練習問題 ・下記表の空欄を全て埋めて下さい。・客単価は、小数以下1桁で表示。・1週間の合計の客単価より低い日の客単価は赤字にして下さい。※客単価=売上÷客数 練習問題用のExcelファイル こちらからダウンロードできます。
練習問題20(総合練習2)解答
マクロVBA練習問題20の解答ページです。マクロVBA練習問題 ・「元表」を下の「出来上がりサンプル」のようにして下さい。・月が変わったら1行挿入して、挿入した行に月の合計売上を入れて下さい。A列に、○月合計 B列に、売上の合計 それぞれ太字にして下さい。
練習問題21(総合練習3)解答
マクロVBA練習問題21の解答ページです。マクロVBA練習問題 ・A列の都道府県から重複を失くし(ユニークにして)、D列に入れて下さい。・都道府県別の合計売上をE列に入れて下さい。練習問題用のExcelファイル こちらからダウンロードできます。
練習問題22(総合練習4)解答
マクロVBA練習問題22の解答ページです。マクロVBA練習問題 ・シート「練習22」では、各伝票の1行から6行が横に並んでいます。これを、シート「練習22_回答」を新規追加し、各伝票の行を縦に並べて下さい。
練習問題23(総合練習5)解答
マクロVBA練習問題23の解答ページです。マクロVBA練習問題 ・A2セルに日付、B2セルに名前を指定します。この条件に合うデータを、シート「練習23_データ」から抜出し、5行目以降に表示して下さい。


新着記事NEW ・・・新着記事一覧を見る

ブール型(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)
累計を求める数式あれこれ|エクセル関数応用(2024-01-22)
複数の文字列を検索して置換するSUBSTITUTE|エクセル入門(2024-01-03)
いくつかの数式の計算中にリソース不足になりました。|エクセル雑感(2023-12-28)


アクセスランキング ・・・ ランキング一覧を見る

1.最終行の取得(End,Rows.Count)|VBA入門
2.セルのコピー&値の貼り付け(PasteSpecial)|VBA入門
3.RangeとCellsの使い方|VBA入門
4.ひらがな⇔カタカナの変換|エクセル基本操作
5.繰り返し処理(For Next)|VBA入門
6.変数宣言のDimとデータ型|VBA入門
7.ブックを閉じる・保存(Close,Save,SaveAs)|VBA入門
8.並べ替え(Sort)|VBA入門
9.セルのクリア(Clear,ClearContents)|VBA入門
10.Findメソッド(Find,FindNext,FindPrevious)|VBA入門




このサイトがお役に立ちましたら「シェア」「Bookmark」をお願いいたします。


記述には細心の注意をしたつもりですが、
間違いやご指摘がありましたら、「お問い合わせ」からお知らせいただけると幸いです。
掲載のVBAコードは動作を保証するものではなく、あくまでVBA学習のサンプルとして掲載しています。
掲載のVBAコードは自己責任でご使用ください。万一データ破損等の損害が発生しても責任は負いません。


このサイトがお役に立ちましたら「シェア」「Bookmark」をお願いいたします。
本文下部へ