基礎編での質問でしたが 発展編で改行とモジュールの復習を・・とのアドバイスでしたのでこちらに再度掲載しました。 修正版作成してみましたのでアドバイス願います。 改行と変数retu 追加です。 【修正版】・・前回に加え合計数とカウント数両方算出にしました Option Explicit Dim retu As String _____________________の Sub goukeiRenzoku() retu = "L" goukei1 retu = "M" goukeicount2 retu = "N" goukei1 retu = "O" goukeicount2 ______________________ End Sub Sub goukei1() ’合計数 Dim goukei Dim mAx1, mAx2 As Long mAx1 = Range("A" & Rows.Count).End(xlUp).Row mAx2 = Range("K" & Rows.Count).End(xlUp).Row Dim hida Dim migi Dim gyo gyo = 2 For migi = 3 To mAx2 goukei = 0 For hida = 3 To mAx1 If Range("E" & hida).Value = _ Range("K" & migi).Value And Range("H" & hida).Value = _ Range(retu & gyo).Value Then goukei = goukei + Range("F" & hida).Value End If Range(retu & migi).Value = goukei Next Next End Sub _________________________________ Sub goukeicount2() ’カウント数 Dim goukei Dim mAx1, mAx2 As Long mAx1 = Range("A" & Rows.Count).End(xlUp).Row mAx2 = Range("K" & Rows.Count).End(xlUp).Row Dim hida Dim migi Dim gyo gyo = 2 For migi = 3 To mAx2 goukei = 0 For hida = 3 To mAx1 If Range("E" & hida).Value = _ Range("K" & migi).Value And Range("H" & hida).Value = _ Range(retu & gyo).Value Then goukei = goukei + 1 End If Range(retu & migi).Value = goukei Next Next End Sub ************************************************************************************************************* 【前回】 Sub syuukei4() Dim goukei Dim retu Dim hida Dim migi For migi = 3 To 9 retu = "L" goukei = 0 For hida = 3 To 13 If Range("E" & hida).Value = Range("K" & migi).Value And Range("H" & hida).Value = Range("L2").Value Then goukei = goukei + Range("F" & hida).Value End If Range(retu & migi).Value = goukei Next Next
For migi = 3 To 9 retu = "M" goukei = 0 For hida = 3 To 13 If Range("E" & hida).Value = Range("K" & migi).Value And Range("H" & hida).Value = Range("M2").Value Then goukei = goukei + Range("F" & hida).Value
End If Range(retu & migi).Value = goukei Next Next
最後のプロシージャは End Sub がありません。 貼りつけるなら、それをコピペしてVBEに貼り付ける評価者の後作業も考えましょう。そうしたら、複数プロシージャの間に構文エラーで怒られること必須の文字列含めたりしませんね。上級者がガッカリして「コイツは話し相手にならないな。。」と思わせてしまうか将来伸びそうだと思うかを分けるのはこういうところ(自分の仕事があとでどう使われるかのイメージを豊かに持っている、という印象を与えられるかどうか)です。
>基礎編での質問でしたが 発展編で改行とモジュールの復習を・・とのアドバイスでしたのでこちらに再度掲載しました。 >修正版作成してみましたのでアドバイス願います。 >改行と変数retu 追加です。 >【修正版】・・前回に加え合計数とカウント数両方算出にしました >Option Explicit >Dim retu As String >_____________________の >Sub goukeiRenzoku() > retu = "L" > goukei1 > retu = "M" > goukeicount2 > retu = "N" > goukei1 > retu = "O" > goukeicount2 >______________________ >End Sub >Sub goukei1() ’合計数 > Dim goukei > Dim mAx1, mAx2 As Long > mAx1 = Range("A" & Rows.Count).End(xlUp).Row > mAx2 = Range("K" & Rows.Count).End(xlUp).Row > Dim hida > Dim migi > Dim gyo > gyo = 2 > For migi = 3 To mAx2 > goukei = 0 > For hida = 3 To mAx1 > If Range("E" & hida).Value = _ > Range("K" & migi).Value And Range("H" & hida).Value = _ > Range(retu & gyo).Value Then > goukei = goukei + Range("F" & hida).Value > End If > Range(retu & migi).Value = goukei > Next > Next >End Sub >_________________________________ >Sub goukeicount2() ’カウント数 > Dim goukei > Dim mAx1, mAx2 As Long > mAx1 = Range("A" & Rows.Count).End(xlUp).Row > mAx2 = Range("K" & Rows.Count).End(xlUp).Row > Dim hida > Dim migi > Dim gyo > gyo = 2 > For migi = 3 To mAx2 > goukei = 0 > For hida = 3 To mAx1 > If Range("E" & hida).Value = _ > Range("K" & migi).Value And Range("H" & hida).Value = _ > Range(retu & gyo).Value Then > goukei = goukei + 1 > End If > Range(retu & migi).Value = goukei > Next > Next >End Sub >************************************************************************************************************* >【前回】 > Sub syuukei4() > Dim goukei > Dim retu > Dim hida > Dim migi > For migi = 3 To 9 > retu = "L" > goukei = 0 > For hida = 3 To 13 > If Range("E" & hida).Value = Range("K" & migi).Value And Range("H" & hida).Value = Range("L2").Value Then > goukei = goukei + Range("F" & hida).Value > End If > Range(retu & migi).Value = goukei > Next > Next > > For migi = 3 To 9 > retu = "M" > goukei = 0 > For hida = 3 To 13 > If Range("E" & hida).Value = Range("K" & migi).Value And Range("H" & hida).Value = Range("M2").Value Then > goukei = goukei + Range("F" & hida).Value > > End If > Range(retu & migi).Value = goukei > Next > Next
受講生さんの投稿
(投稿ID: 2244)
修正版作成してみましたのでアドバイス願います。
改行と変数retu 追加です。
【修正版】・・前回に加え合計数とカウント数両方算出にしました
Option Explicit
Dim retu As String
_____________________の
Sub goukeiRenzoku()
retu = "L"
goukei1
retu = "M"
goukeicount2
retu = "N"
goukei1
retu = "O"
goukeicount2
______________________
End Sub
Sub goukei1() ’合計数
Dim goukei
Dim mAx1, mAx2 As Long
mAx1 = Range("A" & Rows.Count).End(xlUp).Row
mAx2 = Range("K" & Rows.Count).End(xlUp).Row
Dim hida
Dim migi
Dim gyo
gyo = 2
For migi = 3 To mAx2
goukei = 0
For hida = 3 To mAx1
If Range("E" & hida).Value = _
Range("K" & migi).Value And Range("H" & hida).Value = _
Range(retu & gyo).Value Then
goukei = goukei + Range("F" & hida).Value
End If
Range(retu & migi).Value = goukei
Next
Next
End Sub
_________________________________
Sub goukeicount2() ’カウント数
Dim goukei
Dim mAx1, mAx2 As Long
mAx1 = Range("A" & Rows.Count).End(xlUp).Row
mAx2 = Range("K" & Rows.Count).End(xlUp).Row
Dim hida
Dim migi
Dim gyo
gyo = 2
For migi = 3 To mAx2
goukei = 0
For hida = 3 To mAx1
If Range("E" & hida).Value = _
Range("K" & migi).Value And Range("H" & hida).Value = _
Range(retu & gyo).Value Then
goukei = goukei + 1
End If
Range(retu & migi).Value = goukei
Next
Next
End Sub
*************************************************************************************************************
【前回】
Sub syuukei4()
Dim goukei
Dim retu
Dim hida
Dim migi
For migi = 3 To 9
retu = "L"
goukei = 0
For hida = 3 To 13
If Range("E" & hida).Value = Range("K" & migi).Value And Range("H" & hida).Value = Range("L2").Value Then
goukei = goukei + Range("F" & hida).Value
End If
Range(retu & migi).Value = goukei
Next
Next
For migi = 3 To 9
retu = "M"
goukei = 0
For hida = 3 To 13
If Range("E" & hida).Value = Range("K" & migi).Value And Range("H" & hida).Value = Range("M2").Value Then
goukei = goukei + Range("F" & hida).Value
End If
Range(retu & migi).Value = goukei
Next
Next
ゲストさんのコメント
(コメントID: 3647)
だいたいこんな感じじゃないかな。
あえて細かいところをいろいろ挙げると:
Dim mAx1, mAx2 As Long
のところは、個別にデータ型の宣言を。これだと mAx1 は Variant型で宣言されてしまいます。
型宣言するならほかのもしましょう。
最後のプロシージャは End Sub がありません。
貼りつけるなら、それをコピペしてVBEに貼り付ける評価者の後作業も考えましょう。そうしたら、複数プロシージャの間に構文エラーで怒られること必須の文字列含めたりしませんね。上級者がガッカリして「コイツは話し相手にならないな。。」と思わせてしまうか将来伸びそうだと思うかを分けるのはこういうところ(自分の仕事があとでどう使われるかのイメージを豊かに持っている、という印象を与えられるかどうか)です。
>基礎編での質問でしたが 発展編で改行とモジュールの復習を・・とのアドバイスでしたのでこちらに再度掲載しました。
>修正版作成してみましたのでアドバイス願います。
>改行と変数retu 追加です。
>【修正版】・・前回に加え合計数とカウント数両方算出にしました
>Option Explicit
>Dim retu As String
>_____________________の
>Sub goukeiRenzoku()
> retu = "L"
> goukei1
> retu = "M"
> goukeicount2
> retu = "N"
> goukei1
> retu = "O"
> goukeicount2
>______________________
>End Sub
>Sub goukei1() ’合計数
> Dim goukei
> Dim mAx1, mAx2 As Long
> mAx1 = Range("A" & Rows.Count).End(xlUp).Row
> mAx2 = Range("K" & Rows.Count).End(xlUp).Row
> Dim hida
> Dim migi
> Dim gyo
> gyo = 2
> For migi = 3 To mAx2
> goukei = 0
> For hida = 3 To mAx1
> If Range("E" & hida).Value = _
> Range("K" & migi).Value And Range("H" & hida).Value = _
> Range(retu & gyo).Value Then
> goukei = goukei + Range("F" & hida).Value
> End If
> Range(retu & migi).Value = goukei
> Next
> Next
>End Sub
>_________________________________
>Sub goukeicount2() ’カウント数
> Dim goukei
> Dim mAx1, mAx2 As Long
> mAx1 = Range("A" & Rows.Count).End(xlUp).Row
> mAx2 = Range("K" & Rows.Count).End(xlUp).Row
> Dim hida
> Dim migi
> Dim gyo
> gyo = 2
> For migi = 3 To mAx2
> goukei = 0
> For hida = 3 To mAx1
> If Range("E" & hida).Value = _
> Range("K" & migi).Value And Range("H" & hida).Value = _
> Range(retu & gyo).Value Then
> goukei = goukei + 1
> End If
> Range(retu & migi).Value = goukei
> Next
> Next
>End Sub
>*************************************************************************************************************
>【前回】
> Sub syuukei4()
> Dim goukei
> Dim retu
> Dim hida
> Dim migi
> For migi = 3 To 9
> retu = "L"
> goukei = 0
> For hida = 3 To 13
> If Range("E" & hida).Value = Range("K" & migi).Value And Range("H" & hida).Value = Range("L2").Value Then
> goukei = goukei + Range("F" & hida).Value
> End If
> Range(retu & migi).Value = goukei
> Next
> Next
>
> For migi = 3 To 9
> retu = "M"
> goukei = 0
> For hida = 3 To 13
> If Range("E" & hida).Value = Range("K" & migi).Value And Range("H" & hida).Value = Range("M2").Value Then
> goukei = goukei + Range("F" & hida).Value
>
> End If
> Range(retu & migi).Value = goukei
> Next
> Next