- ベストアンサー
Excel VBAのコードを解説
- Excel VBAのコードには間違いがあります。14行上のセルに1または2がある場合、Cell( n , "A" )に0を記入します。14行上のセルに1または2がない場合、Cell( n , "A" )に1を記入します。
- 修正したコードでは、14行上のセルに1または2があるかどうかを確認しています。その結果でCell( n , "A" )に0または1を記入しています。
- もし8行上のセルまでを確認するのであれば、Forループの条件をn - 8とすれば良いです。
- みんなの回答 (3)
- 専門家の回答
質問者が選んだベストアンサー
はいはい了解。 今着目しているセルが (n,1)であるとする。 条件: 今いるところから上に14行サーチして、一度でも1か2の値が見つかったら 回答を0とする。14行すべてに1・2の値がひとつも含まれていなければ1とする。 Ans = 1 for i = 1 to 14 x = cells ( n - i , 1 ).value if x = 1 or x = 2 then Ans = 0 endif next i cells ( n , 1 ) = Ans デフォルトの回答値=1としておき、一回でも条件にヒットしたら回答値=0にする。 ヒットしたらfor~nextを強制的に閉じてもいいけど、面倒なのでそのまま14回検索する。
その他の回答 (2)
- gori8063
- ベストアンサー率36% (116/319)
補足されてもぜんぜんわかりません。 もう少しきちんと順序だてて状況を書いてもらわないと誰でも理解不能ですよ。 まず (1) ・基準となるセルの14行上のセル「1つ」の判定をしたい ・基準となるセルの1~14行上のセル「すべて」の判定をしたい のかがわかりません。 (2) すべてを判定するとした場合 ・14個のセルのうちひとつでも「1または2」の数値が検出されたら答えを1とし、それ以外だったら0とするだけでいいのか ・他の条件があるのか 補足お願いします。
補足
説明が上手くなく、申し訳ございません。 (1) 「基準となるセルの1~14行上のセル「すべて」の判定をしたい」です。 (2) 14個のセルのうちひとつでも「1または2」の数値が検出されたら答えを「0」と表示し、 14個のセルのうちひとつも「1または2」の数値が検出されなかったら答えを「1」と表示させたいです。 他の条件はありませんが、セルの中は「0、1、2、何もなし」の4種類の値になります。 何度も申し訳ございませんが、よろしくお願いいたします。
- gori8063
- ベストアンサー率36% (116/319)
「Cell( n , "A" )よりも10上のセルに1 or 2 が記入されていなければ、Cell( n , "A" )に1を記入する」 の意味が分かりません。 n行A列目のセルより上10行のA列のセル「すべて」のことを言っているのか、ただn-10行目の数値を判定したいのかがわかりません。
補足
補足いたします。 現在のセル( n , "A" )より14行上に数値がないことを確認します。それより上には数値があっても構いません。 よろしくお願いいたします。
お礼
検証してみました。 完璧です。 二日間も悩んでいたので、とても清々しい気持ちです。 大変感謝しております。 ありがとうございました。