false, trueのところがつかめませんで、下のcodeが解説講義の分ですが、(1)でfalseとありますが、falseは右のIDの中で左のIDにないもの(36,44)についてなので、(1)以下のhida,,,を処理するにはfalseでなくtrueにして右のIDの中に左のIDにあるときC列に転記する処理と考えtrueと書くのでないかと思いました(実行したらおかしな結果でした) また(2)のtrueですが、右のIDの中で左のIDにないものがあればforからexitで抜けて(3)の処理に続けばと考えてしまいました。実行結果がおかしいので理解・解釈がおかしいのはわかりますが、きちんとつかんでおきたいので、(1)がfalse, (2)がtrueとなるところをアドバイスお願いします。 Sub mondai201_01() Dim hida Dim migi Dim mitsuketa Dim tenkisaki tenkisaki = 30 For migi = 11 To 21 mitsuketa = False---------(1) For hida = 4 To 29 If Range("A" & hida).Value = Range("E" & migi).Value Then Range("C" & hida).Value = Range("F" & migi).Value mitsuketa = True-------(2) Exit For End If Next If mitsuketa = False Then--------(3) Range("A" & tenkisaki).Value = Range("E" & migi).Value Range("C" & tenkisaki).Value = Range("F" & migi).Value tenkisaki = tenkisaki + 1 End If Next End Sub
Sub mondai201_01()
Dim hida
Dim migi
Dim mitsuketa
Dim tenkisaki
tenkisaki = 30
For migi = 11 To 21
mitsuketa = False---------(1)
For hida = 4 To 29
If Range("A" & hida).Value = Range("E" & migi).Value Then
Range("C" & hida).Value = Range("F" & migi).Value
mitsuketa = True-------(2)
Exit For
End If
Next
If mitsuketa = False Then--------(3)
Range("A" & tenkisaki).Value = Range("E" & migi).Value
Range("C" & tenkisaki).Value = Range("F" & migi).Value
tenkisaki = tenkisaki + 1
End If
Next
End Sub
morimotoさんの投稿
(投稿ID: 4099)
また(2)のtrueですが、右のIDの中で左のIDにないものがあればforからexitで抜けて(3)の処理に続けばと考えてしまいました。実行結果がおかしいので理解・解釈がおかしいのはわかりますが、きちんとつかんでおきたいので、(1)がfalse, (2)がtrueとなるところをアドバイスお願いします。
Sub mondai201_01()
Dim hida
Dim migi
Dim mitsuketa
Dim tenkisaki
tenkisaki = 30
For migi = 11 To 21
mitsuketa = False---------(1)
For hida = 4 To 29
If Range("A" & hida).Value = Range("E" & migi).Value Then
Range("C" & hida).Value = Range("F" & migi).Value
mitsuketa = True-------(2)
Exit For
End If
Next
If mitsuketa = False Then--------(3)
Range("A" & tenkisaki).Value = Range("E" & migi).Value
Range("C" & tenkisaki).Value = Range("F" & migi).Value
tenkisaki = tenkisaki + 1
End If
Next
End Sub
小川慶一さんのコメント
(コメントID: 5658)
コードの話の前に...。
> false, trueのところがつかめませんで、下のcodeが解説講義の分ですが、(1)でfalseとありますが、falseは右のIDの中で左のIDにないもの(36,44)についてなので、(1)以下のhida,,,を処理するにはfalseでなくtrueにして右のIDの中に左のIDにあるときC列に転記する処理と考えtrueと書くのでないかと思いました(実行したらおかしな結果でした)
↑
ご自身でも、読みにくいということは感覚として分かるかと思います。
こういう分かりにくい日本語を使ってしまうクセを改めましょう。
一文で済ませられるような情報量ではないです。
短い文の組み合わせで書きなおしてみましょう。
こういうスキルは言語運用の能力です。言語運用能力は、こびとちゃんにとって読みやすいプログラムを書くとか、人が書いたプログラムを読むとかいうとときにも大切です。
言い換えると、こういうスキルの弱さが、あなたの構文理解力を制約しています。
ということで、上に示した文を少し分解してみました。
こういうこと↓でしょうか?
言いたいことの流れはたぶん上記のとおりだろうと思います。
が、理由のところは読んでも理解できませんでした。上記「そう思う理由」を自分なりに整理して再投稿してください。
それから、「おかしな結果」というだけで済ませてあとは人に委ねるというのもプログラマーの態度としては無責任です。
ので、具体的に、本来望ましい実行結果と比較してどのような差が生じているのか?を自分の言葉で示してください。
あと、動画解説の何分何秒までは理解できたのか?もお知らせください。
そして、何分何秒のどういう説明が理解できなかったのか?もお知らせください。
苦手なタイプの宿題を多くもらってしまい、大変に感じられるかもしれませんが...。
マクロの勉強と思ってしっかり取り組んでいただければと思います。よろしくお願いします。
もっとも、上記のとおりに整理すれば、再度質問する前に、ご自身で問題解決できてしまうかもしれません。
> false, trueのところがつかめませんで、下のcodeが解説講義の分ですが、(1)でfalseとありますが、falseは右のIDの中で左のIDにないもの(36,44)についてなので、(1)以下のhida,,,を処理するにはfalseでなくtrueにして右のIDの中に左のIDにあるときC列に転記する処理と考えtrueと書くのでないかと思いました(実行したらおかしな結果でした)
> また(2)のtrueですが、右のIDの中で左のIDにないものがあればforからexitで抜けて(3)の処理に続けばと考えてしまいました。実行結果がおかしいので理解・解釈がおかしいのはわかりますが、きちんとつかんでおきたいので、(1)がfalse, (2)がtrueとなるところをアドバイスお願いします。