使用するデータは A-003 です。
B列の機種名を重複しないようにJ列に機種名の一覧を作成して下さい。
合わせてK列に台数を表示させて下さい。
今回初めて 文字列型変数 String を使用します。
変数を使用しなくてもコードを書くことは出来ます。
使用していないのが以下になります。
機種名を格納する変数 KisyuName が Cells(i, “B”).Value に変わっただけです。
解答の分と見比べて 文字列変数を使っていない方がゴチャゴチャした感じに見えます。
変数を使用するとスッキリします。スッキリすると可読性が上がります。
If WorksheetFunction.CountIf(Range(“J:J”), KisyuName) = 0 Then の解説です。
Ifステートメントで まず2行目の機種名がJ列に存在しているか確認しています。
確認方法は COUNTIF関数で範囲内に検索条件(機種名)の個数を取得しています。
未登録の場合 0、登録済の場合 1 となります。
機種名の個数が0の場合 機種名をJ列に 台数をK列 に入力しています。
台数の取得方法も WorksheetFunction.CountIf(Range(“B:B”), KisyuName) とWorksheetFunctionを使っています。
台数の取得方法についてです。
2行目から201行目まで条件に一致する機種名があるのか For~Nextステートメントを使う方法もあります。
その方法が下になります。
cntというカウント用の変数を用意して機種名に一致する場合 cnt = cnt + 1 として台数を取得しています。
取得した後に cnt(設置台数)をK列に入力しています。
今回の課題ではどちらでやっても瞬時に機種一覧が作成されます。
しかし、実務では複数店舗、複数の日数、複数の機種、複数の貸料金、複数のタイプ(ミドルタイプ・甘デジタイプ ・・)などの集計を行います。
多くの条件ごとにFor~Nextでカウントする事は非常に時間が掛かります。
WorksheetFunction を使うことで時間が大幅に短縮されます。
WorksheetFunction では VLookup や AVERAGE,COUNTIFS なども使用できます。
VBAのコードで WorksheetFunction. と .(ピリオド)まで入力するとリストが表示されます。
WorksheetFunction はセルに元データが存在する場合とても便利な機能です。
ぜひ覚えて活用しましょう。