• ベストアンサー

Access IIf関数について

売上規模: IIf([売上]>=5000000,[売上]=1,IIf([売上]>=1000000 And [売上]<5000000,[売上]=2,IIf([売上]>=500000 And [売上]<1000000,[売上]=3,IIf([売上]>=100000 And [売上]<500000,[売上]=4,IIf([売上]>=50000 And [売上]<100000,[売上]=5,IIf([売上]>50000,[売上]=6,[売上]=0)))))) ○○以上は1 ○○以上~○○未満は2 とするためにIIf関数を使用したのですが、結果が間違っています。 どのように記述すればよいでしょうか?

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

  • ベストアンサー
  • mshr1962
  • ベストアンサー率39% (7417/18945)
回答No.1

売上規模: IIf([売上]>=5000000,1,IIf([売上]>=1000000,2,IIf([売上]>=500000,3,IIf([売上]>=100000,4,IIf([売上]>=50000,5,IIf([売上]>50000,6,0)))))) ですね。結果の '[売上]=' と、先に判断済みの 'And [売上]<?????' が不要です。 それとIif使うより 売上規模:Switch([売上]>=5000000,1,[売上]>=1000000,2,[売上]>=500000,3,[売上]>=100000,4,[売上]>=50000,5,[売上]>50000,6,True,0) のほう早いと思います。

その他の回答 (1)

noname#140971
noname#140971
回答No.2

tab1: ID__売上 01__\5,000 02__\1,000 03__\500 04__\100 05__\50 06__\10 クエリ1: ID__売上____売上規模 01__\5,000_________1 02__\1,000_________2 03__\500___________3 04__\100___________4 05__\50____________5 06__\1_____________6 SELECT  ID,  売上,  ([売上]>=5000)+([売上]>=1000)+([売上]>=500)+([売上]>=100)+([売上]>=50)+6 AS 売上規模 FROM tab1; 単純に論理式を使った方がシンプルで判りやすいです。 ([売上]>=5000)・・・真=-1、偽=0 ですから、売上=\5,000なら真の数は5個ですので-5+6=1です。 売上=\50なら真の数は1個で-1+6=5です。 売上=\1なら真の数は0個で0+6=6です。 SELECT  ID,  売上,  IIf([売上]>=5000,1,  IIf([売上]>=1000 And [売上]<5000,2,  IIf([売上]>=500 And [売上]<1000,3,  IIf([売上]>=100 And [売上]<500,4,  IIf([売上]>=50 And [売上]<100,5,6))))) AS 売上規模 FROM tab1; もちろん、IIf関数の場合はこのように書きます。 ×[売上]=1 ○1 のミスです。

関連するQ&A