MochiuWiki : SUSE, EC, PCB
案内
メインページ
最近の更新
おまかせ表示
MediaWiki についてのヘルプ
ツール
リンク元
関連ページの更新状況
特別ページ
ページ情報
We ask for
Donations
検索
個人用ツール
ログイン
Toggle dark mode
名前空間
ページ
議論
表示
閲覧
ソースを閲覧
履歴を表示
Excel - 論理関数のソースを表示
提供: MochiuWiki : SUSE, EC, PCB
←
Excel - 論理関数
あなたには「このページの編集」を行う権限がありません。理由は以下の通りです:
この操作は、次のグループのいずれかに属する利用者のみが実行できます:
管理者
、new-group。
このページのソースの閲覧やコピーができます。
== 概要 == Excelの論理関数は、条件判定や分岐処理を行うための基本的かつ重要な機能である。<br> データの値や条件に応じて処理を変えることで、より柔軟で動的な計算や分析が可能になる。<br> <br> 主な機能として、条件分岐 (IF、IFS系)、論理演算 (AND、OR、NOT系)、エラー処理 (IFERROR、IFNA系)、多分岐処理 (SWITCH)、論理値操作 (TRUE、FALSE)がある。<br> <br> これらの関数は、データの検証、条件付き計算、エラー処理、複雑な業務ロジックの実装等、様々な場面で活用される。<br> <br><br> == 基本的な条件分岐 (IF関数) == ==== IF関数 ==== 条件に応じて異なる値を返す論理関数である。<br> <br> 構文:<br> =IF(論理式, [真の場合], [偽の場合]) <br> 引数の説明:<br> * 論理式 *: TRUEまたはFALSEを返す条件式 * 真の場合 *: 論理式がTRUEのときに返す値 * 偽の場合 *: 論理式がFALSEのときに返す値 (省略時は FALSE) <br> 使用例:<br> * =IF(A1>=60, "合格", "不合格") *: A1が60以上なら「合格」、そうでなければ「不合格」 * =IF(A1="", "未入力", A1) *: A1が空白なら「未入力」、そうでなければA1の値 * =IF(A1>0, A1, 0) *: A1が正の数ならその値、そうでなければ0 <br> <u>※注意</u><br> <u>真の場合や偽の場合には、数値、文字列、数式、関数を指定できる。</u><br> <u>省略した場合、真の場合はTRUE、偽の場合はFALSEが返される。</u><br> <br> ==== ネストしたIF関数 ==== IF関数の中にIF関数を入れ子にすることで、複数の条件分岐を実現できる。<br> <br> 使用例:<br> * =IF(A1>=80, "優", IF(A1>=60, "良", "不可")) *: 80以上は「優」、60以上は「良」、それ以外は「不可」 * =IF(A1="", "", IF(A1>=100, "達成", "未達成")) *: A1が空白なら空白、100以上なら「達成」、それ以外は「未達成」 <br> <u>※注意</u><br> <u>ネストは最大64階層まで可能だが、可読性のため3〜4階層程度に抑えることが推奨される。</u><br> <u>複雑な条件分岐の場合は、IFS関数やSWITCH関数の使用を検討する。</u><br> <br><br> == 複数条件分岐 (IFS関数) == ==== IFS関数 ==== 複数の条件を順番に評価し、最初に真となった条件に対応する値を返す関数である。<br> Excel 2016以降で使用可能である。<br> <br> 構文:<br> =IFS(論理式1, 真の場合1, [論理式2, 真の場合2], ...) <br> 使用例:<br> * =IFS(A1>=80, "優", A1>=60, "良", A1>=40, "可", TRUE, "不可") *: 複数の成績判定 * =IFS(B1="A", 100, B1="B", 80, B1="C", 60, TRUE, 0) *: ランクに応じた点数割り当て <br> <u>※注意</u><br> <u>条件は上から順に評価され、最初に真となった条件の値が返される。</u><br> <u>全ての条件が偽の場合はエラー (#N/A) になるため、最後に TRUE を指定することが推奨される。</u><br> <u>ネストしたIFよりも可読性が高い。</u><br> <br> ==== IFS関数とネストしたIF関数の比較 ==== 同じ処理を実現する場合の比較例。<br> <br> ネストしたIF関数:<br> =IF(A1>=80, "優", IF(A1>=60, "良", IF(A1>=40, "可", "不可"))) <br> IFS関数:<br> =IFS(A1>=80, "優", A1>=60, "良", A1>=40, "可", TRUE, "不可") <br> IFS関数の方が構造が明確で、条件の追加や変更が容易である。<br> <br><br> == 論理演算関数 == ==== AND関数 ==== 全ての条件が真 (TRUE) の場合にのみ真を返す関数である。<br> <br> 構文:<br> =AND(論理式1, [論理式2], ...) <br> 使用例:<br> * A1とB1が両方とも60以上ならTRUE *: =AND(A1>=60, B1>=60) * A1、B1、C1の全てが空白でないならTRUE *: =AND(A1<>"", B1<>"", C1<>"") * IF関数と組み合わせた使用例 *: =IF(AND(A1>=60, B1>=60), "合格", "不合格") <br> <u>※注意</u><br> <u>引数は最大255個まで指定可能。</u><br> <u>1つでも偽があれば、結果は偽になる。</u><br> <u>空白セルは FALSE として評価される。</u><br> <br> ==== OR関数 ==== いずれかの条件が真 (TRUE) の場合に真を返す関数である。<br> <br> 構文:<br> =OR(論理式1, [論理式2], ...) <br> 使用例:<br> * A1またはB1のいずれかが80以上ならTRUE *: =OR(A1>=80, B1>=80) * A1が「東京」「大阪」「名古屋」のいずれかならTRUE *: =OR(A1="東京", A1="大阪", A1="名古屋") * A1またはB1のいずれかが空白なら「入力不足」 *: =IF(OR(A1="", B1=""), "入力不足", "OK") <br> <u>※注意</u><br> <u>引数は最大255個まで指定可能。</u><br> <u>全てが偽の場合のみ、結果は偽になる。</u><br> <br> ==== NOT関数 ==== 論理値を反転させる関数である。<br> <br> 構文:<br> =NOT(論理式) <br> 使用例:<br> * A1が60未満ならTRUE (60以上でないならTRUE) *: =NOT(A1>=60) * A1が空白でないならTRUE *: =NOT(A1="") * A1とB1が両方とも60以上でないなら「不合格」 *: =IF(NOT(AND(A1>=60, B1>=60)), "不合格", "合格") <br> NOTの代替表現:<br> * <u>=NOT(A1>=60)</u> は <u>=A1<60</u> と同じ * <u>=NOT(A1="")</u> は <u>=A1<>""</u> と同じ <br> ==== XOR関数 ==== 排他的論理和を返す関数である。奇数個の引数が真の場合に真を返す。<br> <u>Excel 2013以降で使用可能である。</u><br> <br> 構文:<br> =XOR(論理式1, [論理式2], ...) <br> 使用例:<br> * A1とB1のいずれか一方のみが正の数ならTRUE *: =XOR(A1>0, B1>0) * 奇数個のセルが「はい」ならTRUE *: =XOR(A1="はい", B1="はい", C1="はい") <br> <u>※注意</u><br> <u>2つの引数の場合 : 一方のみが真の場合に真を返す。</u><br> <u>3つ以上の引数の場合 : 奇数個が真の場合に真を返す。</u><br> <br><br> == 論理値定数 == ==== TRUE関数 / FALSE関数 ==== 論理値 TRUE または FALSE を返す関数である。<br> <br> 構文:<br> =TRUE() =FALSE() <br> 使用例:<br> * =TRUE() *: TRUE を返す * =FALSE() *: FALSE を返す * =IF(A1>0, TRUE(), FALSE()) *: A1が正の数ならTRUE、そうでなければFALSE <br> <u>※注意</u><br> <u>通常は、関数を使わずに直接 TRUE や FALSE と入力することが多い。</u><br> <u>IFS関数の最後の条件として =IFS(..., TRUE, "その他") のように使用される。</u><br> <br><br> == エラー処理関数 == ==== IFERROR関数 ==== 数式の結果がエラーの場合に、指定した値を返す関数である。<br> <u>Excel 2007以降で使用可能。</u><br> <br> 構文:<br> =IFERROR(値, エラーの場合の値) <br> エラーの種類:<br> IFERROR関数は、以下に示す全てのエラーを捕捉する。<br> * #N/A *: 値が見つからない * #VALUE! *: 値のタイプが不正 * #REF! *: 参照が無効 * #DIV/0! *: ゼロ除算 * #NUM! *: 数値が不正 * #NAME? *: 名前が認識されない * #NULL! *: 範囲の指定が不正 <br> 使用例:<br> * =IFERROR(A1/B1, 0) *: 除算結果がエラーなら0を返す * =IFERROR(VLOOKUP(A1, C:D, 2, FALSE), "未登録") *: VLOOKUP結果がエラーなら「未登録」を返す * =IFERROR(A1*B1, "") *: 計算結果がエラーなら空白を返す <br> <u>※注意</u><br> <u>エラーでない場合は、元の値がそのまま返される。</u><br> <br> ==== IFNA関数 ==== 数式の結果が #N/A エラーの場合にのみ、指定した値を返す関数である。<br> <u>Excel 2013以降で使用可能。</u><br> <br> 構文:<br> =IFNA(値, #N/Aの場合の値) <br> 使用例:<br> * =IFNA(VLOOKUP(A1, C:D, 2, FALSE), "未登録") *: VLOOKUPが #N/A エラーなら「未登録」を返す * =IFNA(MATCH(A1, B:B, 0), "該当なし") *: MATCHが #N/A エラーなら「該当なし」を返す <br> <u>※注意</u><br> <u>#N/A 以外のエラーは捕捉されず、そのまま表示される。</u><br> <u>VLOOKUP関数 や MATCH関数等の検索関数と組み合わせて使用されることが多い。</u><br> <br> ==== IFERROR と IFNA の違い ==== IFERRORは全てのエラーを処理し、IFNAは #N/A エラーのみを処理する。<br> <br> 比較例:<br> * =IFERROR(A1/B1, "エラー") *: 全てのエラー (#DIV/0!、#VALUE! 等) でエラーを返す * =IFNA(A1/B1, "N/A") *: #N/A エラーのみで「N/A」を返す。 *: #DIV/0! 等はそのまま表示 <br> 検索関数では、データが見つからない場合の #N/A エラーのみを処理する場合が多いため、IFNA関数が適している。<br> <br><br> == 多分岐処理 (SWITCH関数) == ==== SWITCH関数 ==== 式の値と一致するものを検索し、対応する結果を返す関数である。<br> <u>Excel 2016以降で使用可能である。</u><br> <br> 構文:<br> =SWITCH(式, 値1, 結果1, [値2, 結果2], ..., [既定値]) <br> 使用例:<br> * 数値に対応する曜日を返す。 *: =SWITCH(A1, 1, "月曜", 2, "火曜", 3, "水曜", 4, "木曜", 5, "金曜", "休日") * ランクに対応する点数を返す。 *: =SWITCH(B1, "A", 100, "B", 80, "C", 60, 0) * 都市名に対応する地域を返す。 *: =SWITCH(C1, "東京", "関東", "大阪", "関西", "名古屋", "中部", "その他") <br> <u>※注意</u><br> <u>一致する値が見つからない場合は #N/A エラーになる。</u><br> <u>最後に既定値を指定することで、エラーを回避できる。</u><br> <u>ネストしたIFやIFS関数よりも簡潔に書ける場合がある。</u><br> <br> ==== SWITCH関数 / IFS関数の使い分け ==== <u>SWITCH関数は値の完全一致</u>で分岐、<u>IFS関数は条件式</u>で分岐する。<br> <br> SWITCH関数が適している場合:<br> * 曜日、ランク、区分など、特定の値に基づく分岐 * 値の種類が明確に決まっている場合 <br> IFS関数が適している場合:<br> * 数値の範囲判定 *: >=80、>=60 等 * 複雑な条件式 *: AND、OR を含む <br><br> == 実用的な使用例 == ==== 成績判定 ==== テストの点数に応じて評価を返す例。<br> <br> 基本的な判定:<br> =IF(A1>=60, "合格", "不合格") <br> 5段階評価:<br> =IFS(A1>=80, "優", A1>=70, "良", A1>=60, "可", A1>=50, "不可", TRUE, "不可") # または =IF(A1>=80, "優", IF(A1>=70, "良", IF(A1>=60, "可", IF(A1>=50, "不可", "不可")))) <br> ==== 複数条件の組み合わせ ==== AND関数やOR関数を使った複雑な条件判定の例。<br> <br> * 両方の科目で合格 *: =IF(AND(A1>=60, B1>=60), "合格", "不合格") * いずれかの科目で優秀 *: =IF(OR(A1>=90, B1>=90), "優秀", "普通") * 全ての項目が入力済み *: =IF(AND(A1<>"", B1<>"", C1<>""), "完了", "未完了") <br> ==== エラー処理 ==== 計算エラーを回避する例。<br> <br> ゼロ除算エラーの回避:<br> =IFERROR(A1/B1, 0) # または =IF(B1=0, 0, A1/B1) <br> VLOOKUP のエラー処理:<br> =IFERROR(VLOOKUP(A1, C:E, 2, FALSE), "該当なし") # または =IFNA(VLOOKUP(A1, C:E, 2, FALSE), "該当なし") <br> ==== 段階的な手数料計算 ==== 金額に応じた手数料率を適用する例。<br> <br> * 10万円以上は5%、5万円以上は7%、1万円以上は10%、それ以外は15%の手数料を計算する *: =IFS(A1>=100000, A1*0.05, A1>=50000, A1*0.07, A1>=10000, A1*0.1, TRUE, A1*0.15) <br> ==== 曜日による処理 ==== 曜日に応じた処理を行う例。<br> <br> * 曜日の取得 *: =TEXT(A1, "aaa") * 土日の判定 *: =IF(OR(TEXT(A1, "aaa")="土", TEXT(A1, "aaa")="日"), "休日", "平日") * 曜日ごとの担当者 *: =SWITCH(WEEKDAY(A1), 1, "田中", 2, "鈴木", 3, "佐藤", 4, "高橋", 5, "渡辺", 6, "伊藤", 7, "山本") <br> ==== 空白チェック ==== セルの入力状況をチェックする例。<br> <br> * 空白の場合にメッセージ *: =IF(A1="", "未入力", A1) * 必須項目のチェック *: =IF(OR(A1="", B1="", C1=""), "入力不足", "入力完了") <br> ==== ランク分け ==== 数値に応じたランクを割り当てる例。<br> <br> * 売上高によるランク *: =IFS(A1>=1000000, "S", A1>=500000, "A", A1>=100000, "B", TRUE, "C") * ランクに応じた報酬 *: =SWITCH(B1, "S", 100000, "A", 50000, "B", 20000, "C", 10000, 0) <br> ==== 条件付き計算 ==== 条件に応じて異なる計算を行う例。<br> <br> * 会員種別による割引 *: =IF(B1="プレミアム", A1*0.8, IF(B1="スタンダード", A1*0.9, A1)) * 購入数量による単価 *: =IFS(A1>=100, 90, A1>=50, 95, A1>=10, 98, TRUE, 100) <br> ==== 複合条件の判定 ==== 複数の条件を組み合わせた例。<br> <br> * 年齢と性別による判定 *: =IF(AND(A1="男性", B1>=20, B1<65), "対象", "対象外") * 複数項目のいずれかが基準を満たす *: =IF(OR(A1>=80, B1>=80, C1>=80), "合格", "不合格") * 全てが基準を満たさない *: =IF(NOT(OR(A1>=60, B1>=60)), "要注意", "問題なし") <br><br> __FORCETOC__ [[カテゴリ:その他]]
Excel - 論理関数
に戻る。
案内
メインページ
最近の更新
おまかせ表示
MediaWiki についてのヘルプ
ツール
リンク元
関連ページの更新状況
特別ページ
ページ情報
We ask for
Donations
Collapse