Access (一般機能)

Accessの一般機能に関するフォーラムです。
  • 解決済みのトピックにはコメントできません。
このトピックは解決済みです。
質問

 
(指定なし : 指定なし)
クエリでの複数条件について
投稿日時: 18/02/08 12:26:59
投稿者: えあろん

連日失礼します。
 
=IF(C9<>"",B9,(IF(AND(C9="",A9<>""),A9,(IF(AND(C9="",A9=""),B9)))))
上記の関数をアクセスのクエリに入力したのですが
実行できません。
 
=IIF([C9]<>"",[B9],(IIF(AND([C9]="",[A9]<>""),[A9],(IIF(AND([C9]="",[A9]=""),[B9])))))
アクセスでは〜かつ条件はANDとして使用できないのでしょうか?

回答
投稿日時: 18/02/08 14:17:10
投稿者: sk

引用:
=IF(C9<>"",B9,(IF(AND(C9="",A9<>""),A9,(IF(AND(C9="",A9=""),B9)))))

引用:
アクセスでは〜かつ条件はANDとして使用できないのでしょうか?

この場合の AND とは Excel におけるワークシート関数の 1 つです。
そして Excel の AND 関数に当たる関数は Access にはありません。
 
Access の場合は AND 関数ではなく And 演算子を使用して下さい。
 
---------------------------------------------------------------------
IIf([C9] Is Not Null,
    [B9],
    IIf(([C9] Is Null) And ([A9] Is Not Null),
        [A9],
        IIf(([C9] Is Null) And ([A9] Is Null),
            [B9],
            Null)))
---------------------------------------------------------------------
 
なお、
 
・[C9]の値が Null であり、かつ[A9]の値が Null ではなければ
 [A9]の値の値を返す。
 
上記の条件を満たさない場合は[B9]の値を返す。
 
という読み替えも出来ますので、
 
---------------------------------------------------------------------
IIf(([C9] Is Null) And ([A9] Is Not Null),
    [A9],
    [B9])
---------------------------------------------------------------------
 
と記述した方がすっきりするはずですが。

回答
投稿日時: 18/02/08 14:23:45
投稿者: hatena
投稿者のウェブサイトに移動

=IF(C9<>"",B9,(IF(AND(C9="",A9<>""),A9,(IF(AND(C9="",A9=""),B9)))))
 
=IIF([C9]<>"",[B9],IIF(AND([C9]="",[A9]<>""),[A9],(IIF(AND([C9]="",[A9]=""),[B9]))))
 
AccessにはAND関数はありません。 And演算子を使います。
 
例えば、AND([C9]="",[A9]<>"")は、
[C9]="" And [A9]<>"" にしてください。
 
クエリのフィールド欄に設定するなら、
 
式1: IIf([C9]<>"",[B9],IIf([C9]="" And [A9]<>"",[A9],IIf([C9]="" And [A9]="",[B9])))
 
 
IIfを入れ子にすると読みづらいので、Switch関数を使うといいですね。
あと、最初に [C9]<>"" という条件なら、次は、それ以外なので[C9]=""という条件は不要ですね。
これを考慮すると下記のようにシンプルな式になります。
 
式1: Switch([C9]<>"",[B9],[A9]<>"",[A9],True,[B9])
 
 

投稿日時: 18/02/08 18:40:58
投稿者: えあろん

Skさん
回答ありがとうございます
実行出来ました!
自分でもANDとIs Nullを使い記述していたんですが
()の使い方を誤っており条件全てが実行出来ていませんでした。。
大変勉強になりました。
 
 

引用:
なお、
  
・[C9]の値が Null であり、かつ[A9]の値が Null ではなければ
 [A9]の値の値を返す。
  
・上記の条件を満たさない場合は[B9]の値を返す。
  
という読み替えも出来ますので、
  

 
あ。。ですね。
頭ががちがちになり読み替え出来ませんでした。
タイトになりすっきりしました!
本当に助かりました!!
 
 
 
hatenaさん
 
witch関数、大変勉強になりました!
ありがとうございます!
 
[/quote]