Sub hairetu() Dim gyo As Long Dim goukei(2) As Long goukei(0) = 0 goukei(1) = 0 goukei(2) = 0 For gyo = 4 To 33 Select Case Range("C" & gyo).Value Case Range("E4").Value goukei(0) = goukei(0) + 1 Case Range("E5").Value goukei(1) = goukei(1) + 1 Case Range("E6").Value goukei(2) = goukei(2) + 1 End Select Next For gyo = 4 To 6 Cells(gyo, "F").Value = goukei(gyo - 4) Next End Sub
2014/09/25 06:32
小川 慶一さんのコメント
(コメントID: 1614)
匿名 さん:
よいかと v(^^
あえて言うなら、select case のところは range、 for next のところは cells で書いているというのはちょっと気になるかな。 ひとつのプログラムの中ではどちらかに統一したほうがメンテナンス性が高いです。
>匿名 さん: > >よいかと v(^^ > >あえて言うなら、select case のところは range、 for next のところは cells で書いているというのはちょっと気になるかな。 >ひとつのプログラムの中ではどちらかに統一したほうがメンテナンス性が高いです。 > >あとは、さらにバージョンアップしたコードにするなら...。 >キャンペーンのタイプがいくつあるのかも未知のままだったらどうするか。 >その場合は、キャンペーンタイプのリストを自分で作成することになります。(発展編1の動画フォローでそういう課題がでてきます) > > >>小川先生 >> >>>>あと、上級DVDで紹介している「配列」を使うと以下のとおり。 >>>>出力部分については考えてみてください。 >>とのことでしたので、一部修正し、出力部分を追加して書いてみました。 >>修正箇所があれば教えて下さい。 >> >>Sub hairetu() >> Dim gyo As Long >> Dim goukei(2) As Long >> For gyo = 4 To 33 >> Select Case Cells(gyo,3).Value >> Case Cells(4,5).Value >> goukei(0) = goukei(0) + 1 >> Case Cells(5,5).Value >> goukei(1) = goukei(1) + 1 >> Case Cells(6,5).Value >> goukei(2) = goukei(2) + 1 >> End Select >> Next >> For gyo = 4 To 6 >> Cells(gyo, "F").Value = goukei(gyo - 4) >> Next >>End Sub >
Sub Sample1() Dim i As Long, j As Long, cnt As Long, flag As Boolean cnt = 4 For i = 4 To 33 flag = False For j = 4 To cnt If Cells(i, 3).Value = Cells(j, 5).Value Then flag = True Exit For End If Next j If Cells(i, 3).Value <> "" And flag = False Then Cells(cnt, 5).Value = Cells(i, 3).Value cnt = cnt + 1 End If Next i End Sub
Sub Sample1()
Dim i As Long, j As Long, cnt As Long, flag As Boolean
cnt = 4
For i = 4 To 33
flag = False
For j = 4 To cnt
If Cells(i, 3).Value = Cells(j, 5).Value Then
flag = True
Exit For
End If
Next j
If Cells(i, 3).Value <> "" And flag = False Then
Cells(cnt, 5).Value = Cells(i, 3).Value
cnt = cnt + 1
End If
Next i
End Sub
Sub hairetu()
Dim gyo As Long
Dim goukei(2) As Long
For gyo = 4 To 33
Select Case Cells(gyo,3).Value
Case Cells(4,5).Value
goukei(0) = goukei(0) + 1
Case Cells(5,5).Value
goukei(1) = goukei(1) + 1
Case Cells(6,5).Value
goukei(2) = goukei(2) + 1
End Select
Next
For gyo = 4 To 6
Cells(gyo, "F").Value = goukei(gyo - 4)
Next
End Sub
受講生さんの投稿
(投稿ID: 741)
>>あと、上級DVDで紹介している「配列」を使うと以下のとおり。
>>出力部分については考えてみてください。
とのことでしたので、一部修正し、出力部分を追加して書いてみました。
修正箇所があれば教えて下さい。
Sub hairetu()
Dim gyo As Long
Dim goukei(2) As Long
goukei(0) = 0
goukei(1) = 0
goukei(2) = 0
For gyo = 4 To 33
Select Case Range("C" & gyo).Value
Case Range("E4").Value
goukei(0) = goukei(0) + 1
Case Range("E5").Value
goukei(1) = goukei(1) + 1
Case Range("E6").Value
goukei(2) = goukei(2) + 1
End Select
Next
For gyo = 4 To 6
Cells(gyo, "F").Value = goukei(gyo - 4)
Next
End Sub
小川 慶一さんのコメント
(コメントID: 1614)
よいかと v(^^
あえて言うなら、select case のところは range、 for next のところは cells で書いているというのはちょっと気になるかな。
ひとつのプログラムの中ではどちらかに統一したほうがメンテナンス性が高いです。
あとは、さらにバージョンアップしたコードにするなら...。
キャンペーンのタイプがいくつあるのかも未知のままだったらどうするか。
その場合は、キャンペーンタイプのリストを自分で作成することになります。(発展編1の動画フォローでそういう課題がでてきます)
>小川先生
>
>>>あと、上級DVDで紹介している「配列」を使うと以下のとおり。
>>>出力部分については考えてみてください。
>とのことでしたので、一部修正し、出力部分を追加して書いてみました。
>修正箇所があれば教えて下さい。
>
>Sub hairetu()
> Dim gyo As Long
> Dim goukei(2) As Long
> goukei(0) = 0
> goukei(1) = 0
> goukei(2) = 0
> For gyo = 4 To 33
> Select Case Range("C" & gyo).Value
> Case Range("E4").Value
> goukei(0) = goukei(0) + 1
> Case Range("E5").Value
> goukei(1) = goukei(1) + 1
> Case Range("E6").Value
> goukei(2) = goukei(2) + 1
> End Select
> Next
> For gyo = 4 To 6
> Cells(gyo, "F").Value = goukei(gyo - 4)
> Next
>End Sub
受講生さんのコメント
(コメントID: 1618)
ご返信ありがとうございます。
>その場合は、キャンペーンタイプのリストを自分で作成することになります。(発展編1の動画フォローでそういう課題がでてきます)
ユニークリストの作成ということでしょうか?
そのあたりも、ぜひマスターしていきたいと思います。
講座を開始した当初は焦る気持ちもありましたが、まずは基礎編(フォローアップ課題やEnshuフォルダ)をしっかりと繰り返し実践し、
スラスラとできるようになってから、発展編に進んでいきたいという気持ちです。
余談ですが、小川先生のさりげないブレークポイントの使い方も大変参考になりました。
また、よろしくお願いいたします。
>匿名 さん:
>
>よいかと v(^^
>
>あえて言うなら、select case のところは range、 for next のところは cells で書いているというのはちょっと気になるかな。
>ひとつのプログラムの中ではどちらかに統一したほうがメンテナンス性が高いです。
>
>あとは、さらにバージョンアップしたコードにするなら...。
>キャンペーンのタイプがいくつあるのかも未知のままだったらどうするか。
>その場合は、キャンペーンタイプのリストを自分で作成することになります。(発展編1の動画フォローでそういう課題がでてきます)
>
>
>>小川先生
>>
>>>>あと、上級DVDで紹介している「配列」を使うと以下のとおり。
>>>>出力部分については考えてみてください。
>>とのことでしたので、一部修正し、出力部分を追加して書いてみました。
>>修正箇所があれば教えて下さい。
>>
>>Sub hairetu()
>> Dim gyo As Long
>> Dim goukei(2) As Long
>> For gyo = 4 To 33
>> Select Case Cells(gyo,3).Value
>> Case Cells(4,5).Value
>> goukei(0) = goukei(0) + 1
>> Case Cells(5,5).Value
>> goukei(1) = goukei(1) + 1
>> Case Cells(6,5).Value
>> goukei(2) = goukei(2) + 1
>> End Select
>> Next
>> For gyo = 4 To 6
>> Cells(gyo, "F").Value = goukei(gyo - 4)
>> Next
>>End Sub
>
ゲストさんのコメント
(コメントID: 1619)
>ユニークリストの作成ということでしょうか?
はい、そうです。
ユニークリスト作成自体はアルゴリズムそんなに難しくありません。
(よく考えたら、基礎編フォロー動画でも後半に登場しました (^^; )
基礎編の道具だけでも、相当のことができますよ。
あと、基礎編フォローでは主要なアルゴリズムはほぼ網羅しています。
>余談ですが、小川先生のさりげないブレークポイントの使い方も大変参考になりました。
生収録の魅力ですね。
見ていると分かるとおりけっこう失敗していますが、失敗した状態からどう修正するか?というのも大切なノウハウなので、すべて晒すようにしています。
ひきつづきお楽しみください☆
>小川先生:
>ご返信ありがとうございます。
>
>>その場合は、キャンペーンタイプのリストを自分で作成することになります。(発展編1の動画フォローでそういう課題がでてきます)
>ユニークリストの作成ということでしょうか?
>そのあたりも、ぜひマスターしていきたいと思います。
>
>講座を開始した当初は焦る気持ちもありましたが、まずは基礎編(フォローアップ課題やEnshuフォルダ)をしっかりと繰り返し実践し、
>スラスラとできるようになってから、発展編に進んでいきたいという気持ちです。
>
>余談ですが、小川先生のさりげないブレークポイントの使い方も大変参考になりました。
>また、よろしくお願いいたします。
>
>>匿名 さん:
>>
>>よいかと v(^^
>>
>>あえて言うなら、select case のところは range、 for next のところは cells で書いているというのはちょっと気になるかな。
>>ひとつのプログラムの中ではどちらかに統一したほうがメンテナンス性が高いです。
>>
>>あとは、さらにバージョンアップしたコードにするなら...。
>>キャンペーンのタイプがいくつあるのかも未知のままだったらどうするか。
>>その場合は、キャンペーンタイプのリストを自分で作成することになります。(発展編1の動画フォローでそういう課題がでてきます)
>>
>>
>>>小川先生
>>>
>>>>>あと、上級DVDで紹介している「配列」を使うと以下のとおり。
>>>>>出力部分については考えてみてください。
>>>とのことでしたので、一部修正し、出力部分を追加して書いてみました。
>>>修正箇所があれば教えて下さい。
>>>
>>>Sub hairetu()
>>> Dim gyo As Long
>>> Dim goukei(2) As Long
>>> For gyo = 4 To 33
>>> Select Case Cells(gyo,3).Value
>>> Case Cells(4,5).Value
>>> goukei(0) = goukei(0) + 1
>>> Case Cells(5,5).Value
>>> goukei(1) = goukei(1) + 1
>>> Case Cells(6,5).Value
>>> goukei(2) = goukei(2) + 1
>>> End Select
>>> Next
>>> For gyo = 4 To 6
>>> Cells(gyo, "F").Value = goukei(gyo - 4)
>>> Next
>>>End Sub
>>
>
受講生さんのコメント
(コメントID: 1622)
ユニークリストの作成、AdvancedFilterを使うのは反則かなと思い、アルゴリズムを考えてみました。
試行錯誤の結果、以下のようになりました。修正点がありましたら、教えて下さい。
Sub Sample1()
Dim i As Long, j As Long, cnt As Long, flag As Boolean
cnt = 4
For i = 4 To 33
flag = False
For j = 4 To cnt
If Cells(i, 3).Value = Cells(j, 5).Value Then
flag = True
Exit For
End If
Next j
If Cells(i, 3).Value <> "" And flag = False Then
Cells(cnt, 5).Value = Cells(i, 3).Value
cnt = cnt + 1
End If
Next i
End Sub
基礎編のフォロー動画はまだ第11回までしか終わっていませんが、この週末に少しでも
進めていきたいと思います。
メルマガの「休日は追いつくチャンス」という言葉、結構気に入っています。
>匿名 さん:
>
>>ユニークリストの作成ということでしょうか?
>
>はい、そうです。
>
>ユニークリスト作成自体はアルゴリズムそんなに難しくありません。
>(よく考えたら、基礎編フォロー動画でも後半に登場しました (^^; )
>
>基礎編の道具だけでも、相当のことができますよ。
>あと、基礎編フォローでは主要なアルゴリズムはほぼ網羅しています。
>
>>余談ですが、小川先生のさりげないブレークポイントの使い方も大変参考になりました。
>
>生収録の魅力ですね。
>見ていると分かるとおりけっこう失敗していますが、失敗した状態からどう修正するか?というのも大切なノウハウなので、すべて晒すようにしています。
>
>ひきつづきお楽しみください☆
>
>
>
>>小川先生:
>>ご返信ありがとうございます。
>>
>>>その場合は、キャンペーンタイプのリストを自分で作成することになります。(発展編1の動画フォローでそういう課題がでてきます)
>>ユニークリストの作成ということでしょうか?
>>そのあたりも、ぜひマスターしていきたいと思います。
>>
>>講座を開始した当初は焦る気持ちもありましたが、まずは基礎編(フォローアップ課題やEnshuフォルダ)をしっかりと繰り返し実践し、
>>スラスラとできるようになってから、発展編に進んでいきたいという気持ちです。
>>
>>余談ですが、小川先生のさりげないブレークポイントの使い方も大変参考になりました。
>>また、よろしくお願いいたします。
>>
>>>匿名 さん:
>>>
>>>よいかと v(^^
>>>
>>>あえて言うなら、select case のところは range、 for next のところは cells で書いているというのはちょっと気になるかな。
>>>ひとつのプログラムの中ではどちらかに統一したほうがメンテナンス性が高いです。
>>>
>>>あとは、さらにバージョンアップしたコードにするなら...。
>>>キャンペーンのタイプがいくつあるのかも未知のままだったらどうするか。
>>>その場合は、キャンペーンタイプのリストを自分で作成することになります。(発展編1の動画フォローでそういう課題がでてきます)
>>>
>>>
>>>>小川先生
>>>>
>>>>>>あと、上級DVDで紹介している「配列」を使うと以下のとおり。
>>>>>>出力部分については考えてみてください。
>>>>とのことでしたので、一部修正し、出力部分を追加して書いてみました。
>>>>修正箇所があれば教えて下さい。
>>>>
>>>>Sub hairetu()
>>>> Dim gyo As Long
>>>> Dim goukei(2) As Long
>>>> For gyo = 4 To 33
>>>> Select Case Cells(gyo,3).Value
>>>> Case Cells(4,5).Value
>>>> goukei(0) = goukei(0) + 1
>>>> Case Cells(5,5).Value
>>>> goukei(1) = goukei(1) + 1
>>>> Case Cells(6,5).Value
>>>> goukei(2) = goukei(2) + 1
>>>> End Select
>>>> Next
>>>> For gyo = 4 To 6
>>>> Cells(gyo, "F").Value = goukei(gyo - 4)
>>>> Next
>>>>End Sub
>>>
>>
>
ゲストさんのコメント
(コメントID: 1623)
アルゴリズムについては、基礎編フォロー動画後半ででてくるので、そちらにて。
気になるようでしたら、先に18回、17回あたりを観てしまっていただいてOKです。
このアルゴリズムについては、何かあればそれからまた質問してください!
>メルマガの「休日は追いつくチャンス」という言葉、結構気に入っています。
僕も好きです。気に入っています。
>小川先生:
>
>ユニークリストの作成、AdvancedFilterを使うのは反則かなと思い、アルゴリズムを考えてみました。
>試行錯誤の結果、以下のようになりました。修正点がありましたら、教えて下さい。
>
>
>基礎編のフォロー動画はまだ第11回までしか終わっていませんが、この週末に少しでも
>進めていきたいと思います。
>メルマガの「休日は追いつくチャンス」という言葉、結構気に入っています。
>
>
>>匿名 さん:
>>
>>>ユニークリストの作成ということでしょうか?
>>
>>はい、そうです。
>>
>>ユニークリスト作成自体はアルゴリズムそんなに難しくありません。
>>(よく考えたら、基礎編フォロー動画でも後半に登場しました (^^; )
>>
>>基礎編の道具だけでも、相当のことができますよ。
>>あと、基礎編フォローでは主要なアルゴリズムはほぼ網羅しています。
>>
>>>余談ですが、小川先生のさりげないブレークポイントの使い方も大変参考になりました。
>>
>>生収録の魅力ですね。
>>見ていると分かるとおりけっこう失敗していますが、失敗した状態からどう修正するか?というのも大切なノウハウなので、すべて晒すようにしています。
>>
>>ひきつづきお楽しみください☆
>>
>>
>>
>>>小川先生:
>>>ご返信ありがとうございます。
>>>
>>>>その場合は、キャンペーンタイプのリストを自分で作成することになります。(発展編1の動画フォローでそういう課題がでてきます)
>>>ユニークリストの作成ということでしょうか?
>>>そのあたりも、ぜひマスターしていきたいと思います。
>>>
>>>講座を開始した当初は焦る気持ちもありましたが、まずは基礎編(フォローアップ課題やEnshuフォルダ)をしっかりと繰り返し実践し、
>>>スラスラとできるようになってから、発展編に進んでいきたいという気持ちです。
>>>
>>>余談ですが、小川先生のさりげないブレークポイントの使い方も大変参考になりました。
>>>また、よろしくお願いいたします。
>>>
>>>>匿名 さん:
>>>>
>>>>よいかと v(^^
>>>>
>>>>あえて言うなら、select case のところは range、 for next のところは cells で書いているというのはちょっと気になるかな。
>>>>ひとつのプログラムの中ではどちらかに統一したほうがメンテナンス性が高いです。
>>>>
>>>>あとは、さらにバージョンアップしたコードにするなら...。
>>>>キャンペーンのタイプがいくつあるのかも未知のままだったらどうするか。
>>>>その場合は、キャンペーンタイプのリストを自分で作成することになります。(発展編1の動画フォローでそういう課題がでてきます)
>>>>
>>>>
>>>>>小川先生
>>>>>
>>>>>>>あと、上級DVDで紹介している「配列」を使うと以下のとおり。
>>>>>>>出力部分については考えてみてください。
>>>>>とのことでしたので、一部修正し、出力部分を追加して書いてみました。
>>>>>修正箇所があれば教えて下さい。
>>>>>