' 【資料番号】のみのマクロ
' こっちは、比較対象の上下の値が違ったら「変数」の値を「+1」するだけなので問題なし
Sub siryoubangou()
Dim siryoubangou
Dim gyo
For gyo = 4 To 19
If Range("D" & gyo).Value <> Range("D" & gyo - 1).Value Then
siryoubangou = siryoubangou + 1
End If
Range("B" & gyo).Value = siryoubangou
Next
End Sub
' 【資料ごとの番号】のみのマクロ
'
' こっちは、最初の「1」をどのタイミングで「変数」に代入するか。。。
' 「変数」を「2」「3」と増やすのは、どこのタイミングなのか。。。
'
' 「変数」をどこのタイミングで「0」の状態にリセットすればよいのか。。。
Sub siryousuuryou()
Dim siryousuuryou
Dim gyo
For gyo = 4 To 19
If Range("D" & gyo).Value <> Range("D" & gyo - 1).Value Then
siryousuuryou = 0
End If
Range("C" & gyo).Value = siryousuuryou + 1
siryousuuryou = siryousuuryou + 1
Next
End Sub
W800CEDさんの投稿
(投稿ID: 4838)
この動画までは、かなり順調にきたのですが、ここで思いっきり躓きました(^_^;)。
同じ条件の「For~Next」と「If~End If」構文で、それぞれの列に異なった加算をするなんて。。。
まるで、左手でマルを書きながら、右手で三角を書かされているような(@_@;)。。。
この項に取り組んで、悩んで、解答を見て納得して、書いてみて、後日また取り組むと前回と同じことを繰り返す・・・みたいなことを何度か繰り返しても理解ができませんでした。
が、本日、同時に違うことを実行するのではなく、個々に考えてみようと思い取り組んだところ、時間も掛かりましたが以下のマクロを自力で書くことができました。
特に、資料ごとの番号のマクロは、「変数」をあっちこっちに移動したりしながら、実行の結果を見て悩んで、最終的には納得して「ここだ!」てとこに「変数」を書くことが出来たので、なんとなくですが長いトンネルの出口が見えてきたような気がしています。
あっ!「変数(「gyo」以外)」が長いのは、今回に限りです。
コロナウイルスのおかげで休日に家にいることが多くなったのと、以前から興味があったのと懐事情のタイミングが見事に合致したので習い始めたのですが、半世紀生きてからの手習いです。。。老化防止のため、まだまだ先は長そうですが、脳みそフル稼働させてやります(^o^)v。
小川 慶一さんのコメント
(コメントID: 6787)
おはようございます。
感想、ありがとうございます。
このお題は、趣旨としては、以下に似ています。
○出現回数を数える。CountIf関数がやっていることをマクロで書くと?
https://forum.pc5bai.com/lesson/page/150
○勘定項目ごとに合計額を算出する。SumIf関数がやっていることをマクロで書くと?
https://forum.pc5bai.com/lesson/page/151
ポイントは、For Next構文とは別にカウンターやそろばんを用意しておいて、一定の条件になったらそのカウンターの値を0や1にしたり、そろばんをザラっと傾けて値を0にしたりします。
IT用語で言うところの「初期化」です。
そういう見立てで、この問題を含めた3題を立て続けに解いてみてください。
「どれもやっていることは同じだな」と思えるようになればしめたものです。
ひきつづき、よろしくお願いいたします。