IF文の条件書式内で数字を比較する場合に&&がどのように判定されるのか判りません

このQ&Aのポイント
  • 条件書式内での&&の判定方法について教えてください。
  • 数字を比較する場所に&&が使用されている場合、どのように判定されるのでしょうか?
  • 具体的な例を挙げて説明していただけると助かります。
回答を見る
  • ベストアンサー

条件書式内での&&

暑さで頭がラリホーマ・・(謎 えと‥ IF文の条件書式内で数字を比較する場合に&&がどのように判定されるのか判りません; //////////////////////// now=new Date(); iniDay=now.getDay(); For文の中・・  if (i>iniDay && Date.UTC(y, m, i-iniDay)<nextmonth) {  ・・・・ //////////////////////// これって‥数字を比較する場所に&&が使われているのですが‥ 解読しようと考えているとラリホーマが‥; 申し訳ございませんが、この意味をどなたかご教授下さいませんでしょうか;

  • Flash
  • 回答数2
  • ありがとう数5

質問者が選んだベストアンサー

  • ベストアンサー
  • suzuki-_-
  • ベストアンサー率77% (152/195)
回答No.1

&&演算子はif文等によく使われますが、< や == 等の比較演算子とはまた別物です 質問者さんの記述したif文でわかりやすく表現すると if (i>iniDay && Date.UTC(y, m, i-iniDay)<nextmonth) { --------- } は if(条件1 && 条件2) { 実効命令A } という形になって、実際どのように判定されるかというのは 「もし(if) 条件1 と(&&) 条件2 が合っている(true)のなら 実効命令A に行くよ」 という感じです 要するに上記の場合だと2つの条件が揃うことによって、実効命令Aにいけるということです 他にも||演算子というのもありますが if(条件1 || 条件2) { 実効命令A } このような場合は 「もし(if) 条件1 または(||) 条件2 が合っている(true)のなら 実効命令A に行くよ」 2つの条件の"どちらか"に合えば、実効命令Aにいけるということです

nanakkko
質問者

お礼

suzuki-_-様 回答回答有難うございます。 ほんと・・よく考えたら普通に&&なんですね^^;; 私はどーいうことか、数式で&&が使われていると思い込んでしまって‥ 迷宮入りしてしまいました^^; 今は参考書に記述してあるプログラムの解読をしてるんですが、なんか‥縺れた紐を一本一本丁寧に解いていくような感じで‥面白いですね。 いつか私も回答ができるようになりたいです^^ 有難うございました。

その他の回答 (1)

noname#35109
noname#35109
回答No.2

#1の方と言いたいのは同じ事です。 書いてしまって,#1の方が先に回答されていることに気づいたため,消去するのも何ですから,投稿します。 =================================== その if 文に入る前に,変数が色々定義されているはずですが, その定義は省略されているため,書かれているif 文自体は何を判定しているのかはこちらとしてはわかりません。 >> これって‥数字を比較する場所に&&が使われている >> のですが‥ 解読しようと考えているとラリホーマが‥; 数字を比較する場所ではありません。 if 文 というのは,true か false (ブール値)を判断する文で, if(A){ } という文でしたら, A が true(成立) の場合, { } 内が実行されるだけです。 ---例1--- X = 5; if( X<=6 ){ ☆ } この場合, X は 5 ですから,当然 6 以下です → true(成立) したがって,{ } 内の ☆ が実行されます。 ---例2--- X = 5; if( X>=6 ){ ☆ } この場合, X は 5 ですから,当然 6 以上ではありません → false(不成立) したがって,{ } 内の ☆ は実行されません。 ---例3--- X = true; if( X ){ ☆ } この場合, X は true ですから,( )内は true です。 したがって,{ } 内の ☆ は実行されます。 if文は数を比べる場合によく使われますが, 実際はそうではなく,( ) 内が true か false かを判断しているのです。 書かれている if 文 は, if(A && B){ } という形で, A が true であり,なおかつ B が true であれば,{ } 内が実行されます。 「A && B」 は, 中学のときか高校のときか忘れましたが, とにかく数学の「集合」で出てくる, 「A ∩ B (AかつB)」のことですよ。 && 論理積 (AND) 演算子 http://livedocs.macromedia.com/flash/8_jp/main/00001837.html ---例3--- X = 5; Y = 10; if( X<=6 && Y >=8){ ☆ } この場合, X は 5 ですから,当然 6 以下です → true(成立) Y は 10 ですから,当然 8 以上です → true(成立) したがって, X<=6 も Y >=8 も true(成立) であるため,{ } 内の ☆ が実行されます。 ---例4--- X = 5; Y = 10; if( X>=6 && Y <=8){ ☆ } この場合, X は 5 ですから,当然 6 以上ではありません → false(不成立) Y は 10 ですから,当然 以上ではありません → false(不成立) したがって, X>=6 も Y <=8 も false(不成立) であるため,{ } 内の ☆ が実行されません。 ---例5--- X = 5; Y = 10; if( X<=6 && Y <=8){ ☆ } この場合, X は 5 ですから,当然 6 以下です → true(成立) Y は 10 ですから,当然 以上ではありません → false(不成立) したがって, X<=6 は true(成立) ですが,Y <=8 は false(不成立) です。 つまり, 「Aが成立 かつ Bが成立」ということにはなりません。 片方しか成立していません。 ですから { } 内の ☆ は実行されません。 私は,数学は非常に苦手ですが, これくらいはわかりますし良く覚えています。 A ∩ B (AかつB), A ∪ B(AまたはB), A ∈ B (AはBに属する),… これの,A ∩ B (AかつB) が, A && B です。 「集合」 http://www.kwansei.ac.jp/hs/z90010/sugaku1/kakuritu/syugo/set.htm 良く似たものに & がありますが, それは,下記を参考にしてみてください。 「& ビット単位の論理積 (AND) 演算子」 http://livedocs.macromedia.com/flash/8_jp/main/00001801.html

nanakkko
質問者

お礼

sassakun 様 回答有難うございます。 同じく‥&&を数字を演算している条件式だと勘違いしてしまって‥あるわけ無いのに^^; さらにとっても判りやすく例題を出していただき感激してます。 本当に有難うございましたm(_ _)m

関連するQ&A

  • エクセル2002 「条件付き書式」で数式を使って

    添付ファイルのような、A列とB列の組み合わせで、 6パターンの判定をして、C列のフォント色を青色と赤色に選択したのですが、 可能でしょうか? 条件付き書式で、IF文、AND、ORを組み合わせれば可能でしょうか? 6つを判定する関数式が想像できないもので、、、、 ご教授頂ければ助かります。

  • 関数、条件付き書式について教示お願いします

    1:判定欄にA欄の数字とB欄の数字を比較して(黄で色づけしたセル) A>Bは「○」、A=Bは「○」、A<Bは「×」、B欄がブランクのときは「 」(空白)で表示したい。 ブランクのとき「 」(空白)の式がどうしてもわからず困っています。 2:判定欄に「×」がついた行を条件付き書式で(桃色で色づけした箇所)色づけしたいのですが、 条件付き書式→指定の値を含むセルだけを書式設定→特定の文字 次の値を含む ×にすると C3、C6のセルに色づけされます。これを3行目、6行目に色づけしたい場合はどのように設定すればよいか教えてください。 よろしくお願いします。(Excel2007使用)

  • 指定曜日のカラーを変更するには

    こんにちは。いつもお世話になります。 某Flash書籍に記載されているコードですが、現在バックの 色がランダムになっています。 これを、日曜日を、0xFFCCCC、木曜日を、0xE9E4A2、 普通の日を、0xFFFFFF、当日を、0x348DEDに限定するには、 どうしたら良いか、どうか教えて下さい。 //-----(該当部分のActionscript --------------------- // 日付の設定 now = new Date(); theYear = now.getFullYear(); theMonth = now.getMonth(); monthStr = ["1","2","3","4","5","6","7","8","9","10","11","12"]; t_month.txt.text = monthStr[theMonth]; theDate = now.getDate(); now = new Date(theYear,theMonth,1); theDay = now.getDay(); for(i=29; i<=32; i++){ now = new Date(theYear,theMonth,i); tmp = now.getDate(); if(tmp==1){ // 当月の最終日 lastDate = i-1; break; } } // カラーの初期設定 backColor = [0xFFCCCC,0xE9E4A2,0xFFFFFF,0x348DED]; len = backColor.length; n = 0; marimo = 4; numTmp = Array(); while(1){ tmp = Math.floor(Math.random()*len); if(tmp == len){ tmp--; } for(i=0; i<n; i++){ if(numTmp[i] == tmp){ break; } } if(i == n){ this["color"+n]=backColor[tmp]; numTmp[n] = tmp; n++; if(n == marimo){ break; } } } よろしくお願いします。

  • 条件付き書式設定でユーザー定義関数

    ユーザー定義関数を以下のように作成しました。 Function AAA(i As Integer) As Boolean If i = 1 Then AAA = True Else AAA = False End If End Function このユーザー定義関数を条件付き書式で使用するときに期待した動作になりません。 条件付き書式のルールに 【1】 =AAA(1) とするとTRUEになりましたが、 【2】 =AAA(ROW(B1)) と入力するとTrueと判定されませんでした。(ここでTrueと判定させたかった) なお【3】 =ISERROR(AAA(ROW(B1))) と入力するとTrueと判定されました。 (補足) 【2】はB1セルの行番号(=1)をAAA関数で判定させてます。 実際は、列番号も引数に加えて、表全体に条件付き書式を設定しようとしてます。 ちなみにセルに直接上記数式を入力した場合 【1】→True 【2】→True 【3】→False となります。 【2】のエラーの原因は何でしょうか? 【2】でTrueと判定させる方法はありますか? 以上、よろしくお願いします。 ※エクセル2010

  • 指定曜日5つ

    <SCRIPT LANGUAGE="JavaScript"> <!-- w = (new Date()).getDay(); if(w == 3) document.write("OK wave 最高!"); //--> </SCRIPT> 水曜日に表示するスクリプトですが、月~金まで表示したい場合はやはり5つ if をたてなければならないでしょうか? (たぶん数字のところをなんとかすればとは思いますが・・) よろしくお願いします。

  • 条件付書式と罫線について

    エクセルのバージョンは2002です。 年齢構成表の作成中に不可解な現象が起こったので質問いたします。 現在、以下の様な式が多数のセルに入力されています(名前を持ってくる)。   =IF(ISERROR(VLOOKUP($A15&B$2,'元データ (3)'!$C:$I,7,0))=TRUE,"",VLOOKUP($A15&B$2,'元データ (3)'!$C:$I,7,0)) また、以下の条件付書式が設定されています。   「=””」ではない場合に細い罫線で囲む このような場合で、VLOOKUPで拾ってくる元データをずらすと、名前の位置が変わるのですが、 なぜか「ずらす前に表示されていたが、改めて空白になったセル」が、太い罫線で囲まれてしまいます。 条件付書式で引いている罫線とは違う太さです。 どうすればこの謎の罫線を引かないように出来ますか?教えてください・・・(再インストール以外で)。 説明も解りにくくて申し訳ないです。 ちなみに、「リスト形式及び数式を拡張する」のチェックは外しています。

  • 条件付書式について

    画像のようなシフト表のシートがあります M16の日付には =DATE($A$1,$C$1,$D$1) という関数が入っていて日付を得ています。 M7の曜日は =M6 と日付コードで入っていて書式設定で aaa とし曜日だけ表示させています。 さて個人個人の指定休が週二日決まっていて G8:I8を結合したG8セル と J8:L8を結合したセルJ8に文字列で曜日を打ち込んであります。 M8~T10に個人ごとの指定休の日にだけ"休"と表示させるにはどうしたらいいのでしょうか? 単純に =IF($G8=M$7,"休","") にしたところ数式と文字列を比べているのでエラーが帰ってきてしまって困っています。

  • excel2010条件付き書式後にVBAにて処理

    VBAビギナーのmaruです Excel2010のワークシート上の範囲(Range(”E12:K120“))内の 各セルに条件付き書式(複数あり)にてフォント色を赤く(RGB 255,0,0) 変更したセル内のデータ(数字)のみ削除(””)するVBAを行いたいのですが 以下のコードでは、「セルの書式」で設定したフォント色で削除されてしまい 条件付き書式で変更された赤文字に反映されません ご教授お願い致します Private Sub CommandButton4_Click() 'データ入力セル内の赤文字の削除 Dim rd As Range For Each rd In Range("E12:K120") For i = 1 To rd.FormatConditions.Count If rd.FormatConditions(i).Font.Color = RGB(255, 0, 0) Then rd.Value = "" End If Next Next End Sub 以上、宜しくお願い致します

  • 条件ループ

    お世話になります。 JAVA初心者です。 以下のようにランダムに数字をINT型で作るまではできました。 double rnd=(Math.random()); Double db=new Double(rnd*10); int i=db.intValue(); そこで質問です。 出てきた値が「0」のときは何もせず再度上記のランダムを実行して「0」以外が出たときだけ次の作業に進むというプログラムはどのようにすればよいのでしょうか。 for文やif文も多少勉強中ですがすべて次の作業へ行ってしまうためランダムを繰り返す方法が分かりません。 よろしくお願いします。

    • ベストアンサー
    • Java
  • if文の判定条件に配列

    2次元配列(ここではa[M][N]とします)の値が全て0の時にだけある文章を実行したいのですが、 if(for(i=0; i<M; i++){ for(j=0; j<N; j++) map[i][j] == 0; }){ (実行したい文) } という文をコンパイルしたところエラーが出てしまいました。 if文の判定条件中にfor文は使えないのでしょうか? 使えないのであれば、別の書き方を教えて戴けると嬉しいです。よろしくお願いします。

専門家に質問してみよう