前提・実現したいこと
ここに質問の内容を詳しく書いてください。
VBAで都道府県の性別内訳をカウントするシステムを作っています。
性別をカウントする機能を実装中に「宮城県」の性別が0として反映されず空白のままになってしまいます。
該当のソースコード
Option Explicit '和歌山県 Dim male_wakayama Dim female_wakayama '神奈川県 Dim male_kanagawa Dim female_kanagawa '鹿児島県 Dim male_kagoshima Dim female_kagoshima '北海道 Dim male_hokkaido Dim female_hokkaido '青森県 Dim male_aomori Dim female_aomori '岩手県 Dim male_iwate Dim female_iwate '宮城県 Dim male_miyagi Dim female_miyagi '秋田県 Dim male_akita Dim female_akita Sub 都道府県性別カウント() i = 2 '和歌山県 male_wakayama = 0 female_wakayama = 0 '神奈川県 male_kanagawa = 0 female_kanagawa = 0 '鹿児島県 male_kagoshima = 0 female_kagoshima = 0 '北海道 male_hokkaido = 0 female_hokkaido = 0 '青森県 male_aomori = 0 female_aomori = 0 '岩手県 male_iwate = 0 female_iwate = 0 '宮城県 male_miyagi = 0 female_miyagi = 0 '秋田県 male_akita = 0 female_akita = 0 Do While Worksheets(1).Cells(i, 6).Value <> "" '和歌山県、鹿児島県、神奈川県の3つだけをチェック If Left(Worksheets(1).Cells(i, 6).Value, 4) = "和歌山県" Then If Worksheets(1).Cells(i, 6).Offset(0, -3) = 1 Then male_wakayama = male_wakayama + 1 Else female_wakayama = female_wakayama + 1 End If Worksheets(2).Cells(60, 3).Value = male_wakayama Worksheets(2).Cells(61, 3).Value = female_wakayama ElseIf Left(Worksheets(1).Cells(i, 6).Value, 4) = "神奈川県" Then If Worksheets(1).Cells(i, 6).Offset(0, -3) = 1 Then male_kanagawa = male_kanagawa + 1 Else female_kanagawa = female_kanagawa + 1 End If Worksheets(2).Cells(28, 3).Value = male_kanagawa Worksheets(2).Cells(29, 3).Value = female_kanagawa ElseIf Left(Worksheets(1).Cells(i, 6).Value, 4) = "鹿児島県" Then If Worksheets(1).Cells(i, 6).Offset(0, -3) = 1 Then male_kagoshima = male_kagoshima + 1 Else female_kagoshima = female_kagoshima + 1 End If Worksheets(2).Cells(92, 3).Value = male_kagoshima Worksheets(2).Cells(93, 3).Value = female_kagoshima 'それ以外の県を転記 '北海道 ElseIf Left(Worksheets(1).Cells(i, 6).Value, 3) = "北海道" Then If Worksheets(1).Cells(i, 6).Offset(0, -3) = 1 Then male_hokkaido = male_hokkaido + 1 Else female_hokkaido = female_hokkaido + 1 End If Worksheets(2).Cells(2, 3).Value = male_hokkaido Worksheets(2).Cells(3, 3).Value = female_hokkaido '青森県 ElseIf Left(Worksheets(1).Cells(i, 6).Value, 3) = "青森県" Then If Worksheets(1).Cells(i, 6).Offset(0, -3) = 1 Then male_aomori = male_aomori + 1 Else female_aomori = female_aomori + 1 End If Worksheets(2).Cells(4, 3).Value = male_aomori Worksheets(2).Cells(5, 3).Value = female_aomori '岩手県 ElseIf Left(Worksheets(1).Cells(i, 6).Value, 3) = "岩手県" Then If Worksheets(1).Cells(i, 6).Offset(0, -3) = 1 Then male_iwate = male_iwate + 1 Else female_iwate = female_iwate + 1 End If Worksheets(2).Cells(6, 3).Value = male_iwate Worksheets(2).Cells(7, 3).Value = female_iwate '宮城県 ElseIf Left(Worksheets(1).Cells(i, 6).Value, 3) = "宮城県" Then If Worksheets(1).Cells(i, 6).Offset(0, -3) = 1 Then male_miyagi = male_miyagi + 1 Else female_miyagi = female_miyagi + 1 End If Worksheets(2).Cells(8, 3).Value = male_miyagi Worksheets(2).Cells(9, 3).Value = female_miyagi '秋田県 ElseIf Left(Worksheets(1).Cells(i, 6).Value, 3) = "秋田県" Then If Worksheets(1).Cells(i, 6).Offset(0, -3) = 1 Then male_akita = male_akita + 1 Else female_akita = female_akita + 1 End If Worksheets(2).Cells(10, 3).Value = male_akita Worksheets(2).Cells(11, 3).Value = female_akita 'Worksheets(2).Cells(i, 1).Value = Left(Worksheets(1).Cells(i, 6).Value, 3) End If i = i + 1 Loop End Sub
試したこと
dimでの宣言を確認、初期値0を確認しましたがうまくいきません。
元のデータには「宮城県」が含まれておらず、シートに0と反映されるのが正解です。
補足情報(FW/ツールのバージョンなど)
excel 2016
分かる方、ご教示お願いいたします。
回答1件
あなたの回答
tips
プレビュー
バッドをするには、ログインかつ
こちらの条件を満たす必要があります。
2018/02/12 07:36
2018/02/12 07:36
2018/02/12 07:51
2018/02/12 07:56
2018/02/12 08:01
2018/02/12 08:02