Sub sokei003()
Dim sokei
Dim gyo
sokei = 4
For gyo = 4 To 9
If Range("M" & gyo).Value > Range("M" & sokei).Value Then
sokei = gyo
End If
Next
Range("k10").Value = Range("K" & sokei).Value
Range("L10").Value = Range("L" & sokei).Value
Range("M10").Value = Range("M" & sokei).Value
End Sub
列に変数をいれる方法は、動画を見ながらでないと書けません(;´・ω・) ゆっくり練習しようと思います。 offsetも覚えたいので挑戦してみたいと思います。 by gooska
受講生さんの投稿
(投稿ID: 2151)
最大値を求めるときの考え方が勉強になりました。私が浮かんだイメージは、オリンピックなどで
一人ずつ順番に競技を行い、タイムや獲得点数を競うようなケースです。
「これで期待のA選手、暫定1位に躍り出ました!残るはB国の前回メダリストC選手が残るのみです!」
みたいなアナウンスが。・・・そんなイメージで1行ずつ比較していけばいいのだなと。
この考えで単体1列の比較であれば書けそうな予感がします。
列ごとの比較ですが、ついに出てきたという感じです。
見た感じ、難しいです・・・cellを使わないとなると、offsetかな。
どこの参考書にも、rangeの解説後、比較的早くcellの解説があります。
それをあえて先生が基礎編で取り上げなかったことには理由があると踏んでおります。
私が考えた理由とは、カウント変数の指定→箱を作って切り取って中に入れる→
for next文への変数の代入で置き換えというハナコの一連の作業を考えると、
常にrangeを使うならば機械的に代入操作できるため、無駄なミスを回避できるという点です。
一見すると列移動があるときはcellを使うほうが便利そうですが、
代入ルールがrangeと異なるため、一度立ち止まって検証しなくてはならない。
cellの代入ルールを覚えたら覚えたで、rangeと混同してしまうリスクが生じます。
コードを見直す際も、こっちがrange、こっちがcell・・のように頭を切り替えなくてはならず
読みながら考えるのが複雑になりそう。・・・以上です。
どちらにしろ、列比較の連続技を書く能力はまだないので、
自分ならば単体で各列ごとのMAX値を算出し、最後に列ごとのmaxを比較すると思います。
予選勝ち抜きした人が、後日決勝戦に出るというイメージですね(笑)
by gooska
ゲストさんのコメント
(コメントID: 3535)
その後どうでしょう?
すでに何らかのトライをされたかもしれませんね。まずは、またのフィードバックいただければと思います。
受講生さんのコメント
(コメントID: 3548)
>受講生 さん:
>
>その後どうでしょう?
>すでに何らかのトライをされたかもしれませんね。まずは、またのフィードバックいただければと思います。
あれからいろいろ模索しています。ちょっと遠回りなのですが、まずは
単月集計からの積み上げ方法を考えました。
導入編で学んだマクロの連続実行を使っています。
分けなくても連続処理が使えそうなのに、なぜ?という気持ちもありますが;(;´・ω・)
うまく書けないときの回避策として、最終目標を得る手段をいろいろ試したかったので;
(中間略)
※コピペを使って、2月~6月の単体集計マクロを用意し、ワークシート上の
集計結果のリストに数値を並べることにしました。
最後に、以上の結果から半期の最高値を求めるマクロを作りました。
列に変数をいれる方法は、動画を見ながらでないと書けません(;´・ω・)
ゆっくり練習しようと思います。
offsetも覚えたいので挑戦してみたいと思います。
by gooska
受講生さんのコメント
(コメントID: 3552)
他の列は新たなIF文を立てて調べていけばいいのですね。
最高値が更新される時だけ、その列記号を変数に代入すればいいと。
ちょっと難しく考えすぎていたみたいです。
offsetを使おうとしたんですが、IFの条件式を満たしたときに、次の行どうしたらいいかで
詰まってしまいました。
If Range("C" & gyo).Offset(0, 1).Value > Range(retu & syui) Then
「起点から左隣の列のあるセルが、暫定1位のセルデータを上回ったらば」
この列の位置を、変数retuにどう代入したらいいのかと。
もしここで代入ができたら、列移動して比較を続けていく処理を、入れ子のForNext構文に
できそうな気がしたのですが・・・
発展編ではもっとすっきりな方法があるそうなので、
手持ちの材料ではこの辺が精いっぱいでしょうか(;´・ω・)
by gooska
ゲストさんのコメント
(コメントID: 3578)
何度か見て考えていると分かりますよね。
そして、分かってしまえば、仕組みは難しくはないです。
.Offset を使う場合は、中の数字を For Next構文で変化させながら処理します。
セルの指定は、その場合は、 .Offset だけで行ったほうがよいですね。