Excel。VBA。面倒な割り振りを何度も行うのは面倒なので、どうにかしたい
<Excel VBA:Select Case文>
データを読み込んだあとに、毎回、地域名を割り振り入力するのは面倒なので、どうにかしたいと考えたわけです。
店舗名が、東京都内ならば、地域に「都内」
神奈川県にあれば「神奈川」
それ以外は「その他」
と入力するように振り分けたいわけです。
データを読み込むたびに、入力するのは面倒以外の何物でもありません。
IF+OR関数で数式をつくるのも、店舗数が多く煩雑になってしまいます。
そこで、今回はExcel VBAでプログラム文をつくって対応していきます。
次のようなプログラム文をつくってみました。
Sub 地域振り分け()
Dim i As Long
Dim lastrow As Long
lastrow = Cells(Rows.Count, "a").End(xlUp).Row
For i = 2 To lastrow
Select Case Cells(i, "a").Value
Case "秋葉原", "池袋", "品川", "新宿"
Cells(i, "b").Value = "都内"
Case "大船", "川崎", "藤沢", "横須賀", "横浜"
Cells(i, "b").Value = "神奈川"
Case Else
Cells(i, "b").Value = "その他"
End Select
Next
End Sub
Select Case文をつかってみました。
ただ、「秋葉原」だったら「都内」というような、1条件ごとにCaseをつくっていくと大変です。
そこで、OR条件のSelect Caseにすることで、可読性を改善することができます。
プログラム文を説明します。
Dim i As Long
Dim lastrow As Long
lastrow = Cells(Rows.Count, "a").End(xlUp).Row
お馴染みの変数宣言ですね。
「lastrow = Cells(Rows.Count, "a").End(xlUp).Row」は、繰り返し数を算出させるものです。
そして、Select Case文ですが、For文をつかって、データを判定させていきます。
For i = 2 To lastrow
Select Case Cells(i, "a").Value
Case "秋葉原", "池袋", "品川", "新宿"
Cells(i, "b").Value = "都内"
Case "大船", "川崎", "藤沢", "横須賀", "横浜"
Cells(i, "b").Value = "神奈川"
Case Else
Cells(i, "b").Value = "その他"
End Select
Next
Case文のOR条件は「,(カンマ)」で区切っていきます。
「Case "秋葉原", "池袋", "品川", "新宿"」
なんとなく、OR関数のように入力しそうになりますね。
あと、それ以外は「Case Else」と設定してあげれば、対応することができます。
簡単だけど、面倒な作業とかは、Excel VBAでマクロをつくれないか考えてみるのもいいかもしれませんね。