選択クエリにおいて、あるフィールド「 X」 のレコード数値が
 
  0<[X]<=50   であれば A 
  50<[X]<=100  であれば B 
  100<[X]<=150  であれば C

 と表記させるフィールド「Y」を追加したいと考えています。
 この場合、Yのフィールド設定で指定する数式についてご教授願います。

 一応、
  IIf(0<[X]<=50,"A","") Or IIf(50<[X]<=100,"B","") Or IIf(100<[X]<=150,"C","")

  としましたが、実行すると、Yの列がすべて「-1」と表記されてしまいます。

 何卒よろしくお願いいたします。

このQ&Aに関連する最新のQ&A

A 回答 (2件)

a)IIF関数で対応する場合:


 IIF関数の第2引数または第3引数に、IIF関数を入れ子とする必要があります。

式: IIF([X]<=0, "", IIF([X]<=50, "A", IIF([X]<=100, "B", IIF([X]<=150, "C", ""))))


b)別の組込関数を使用する場合:
 IIF関数は二択ですので入れ子にする必要がありますが、Accessのクエリで
 使用できる、似た機能の関数に、Switch関数というものもあります。
 これであれば、入れ子にする必要がなくなります。
 (詳しくは、Accessのヘルプを参照下さい)

式: Switch([X]<=0, "", [X]<=50, "A", [X]<=100, "B", [X]<=150, "C", True, "")


なお、数学あるいは一般生活では確かに「0<[X]<=50」という表記をしますが、
Accessの関数などではこれだと正しい結果が得られません。
正しく認識させるためには、等号・不等号を挟んだ式は、「左辺」と「右辺」の
2つの要素からなる形にする必要があります。
(「0<[X]<=50」は「[X]>0 And [X]>=50」と分割してやる、と)

但し、今回のご質問のような『連続した範囲』であれば、前(左)で既出となる
式の要素で「[X]<=0」が「真(=-1)」とならなかった時点で、「[X]>0」が保証
されますので、上記のように、「[X]>0」を省略して「[X]<=50」だけを条件として
指定すればOk、ということになります。
(「0<[X]<=50」の次が「80<[X]<120」などのように、「50~80」が欠けた
 場合は、省略ができない、と)


【参考】
「0<[X]<=50」は、このままだと「0 < ([X]<=50)」という式と解釈されます。
この場合、「[X]<=50」は、「真(=-1)」か「偽(=0)」か「Null」のいずれかに
なります。
何にせよ、「0<[X]<=50」全体として「正(=-1)」となることがないため、
ご質問の式では、IIF関数は常に第3引数に指定された値「""」を返す
ことになります。

この結果、式全体としては「"" Or "" Or ""」という形となり、「0かNull」
以外なので、「真(=-1)」という値が返された、ということです。

なお、Nullについては、以前、他の方の質問につけた回答も、併せて参考までに:
http://oshiete.goo.ne.jp/qa/4850675.html
    • good
    • 1
この回答へのお礼

ご回答ありがとうございました。
0<[X]<=50
とはしないんですね。
またSwitch関数の活用方法についても勉強になりました。
大変ありがとうございました。

お礼日時:2012/04/17 12:34

はじめまして、こんにちは



IIf(0<[X]<=50,"A","") Or IIf(50<[X]<=100,"B","") Or IIf(100<[X]<=150,"C","")
この式で、何故「-1」になるかの説明をすると各判定を全て説明しなくてはならなくなるので
省略します。
Iifでやるとしたら
IIf((0<[X]) And ([X]<=50),"A",IIf((50<[X]) And ([X]<=100),"B",IIf((100<[X]) And ([X]<=150),"C","")))となります
しかし、クエリーのフィールドの部分に
長い式を入れるのは、見にくくなりますし編集もしにくいです。

そこで、モジュールを作成し、ユーザー定義関数を作成します。
ユーザー定義関数は自分で任意の結果を返す関数を作成することが出来ます。
たとえばモジュール名はUserFunctionModuleとし
その中にCOMPと言う関数を定義します
COMP関数の中身は以下のように定義します。

Function comp(X As Long) As String ’ユーザー定義関数宣言 X は数値型で宣言 COMPは文字型で宣言
comp = "" ’わかりやすく初期化
If (0 < X) And (X <= 50) Then
comp = "A" ’Aを返す
End If
If (50 < X) And (X <= 100) Then
comp = "B" ’Bを返す
End If
If (100 < X) And (X <= 150) Then
comp = "C" ’Cを返す
End If
  ’どの条件にも当てはまらない場合は、""を返します。
End Function

クエリーでは「Y:COMP(X)」で、呼び出して使用することが出来ます。

参考までに
    • good
    • 0
この回答へのお礼

ご回答ありがとうございました。
また、モジュールの件も参考になります。
確かに、長くなるのは不便なので活用させていただきます。

大変助かりました!

お礼日時:2012/04/17 12:36

このQ&Aに関連する人気のQ&A

お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!

このQ&Aを見た人はこんなQ&Aも見ています

このQ&Aと関連する良く見られている質問

Qexcel関数(カウントのかつ条件)

初歩的な質問ですがお願いします。
以下のようなexcelデータを計算条件でカウントする時の関数の書式を教えてください。

計算条件
コードが"1"かつ部門が"人事"のカウント
コードが"1"かつ部門が"経理"のカウント
    :
    :

コード  部門  名前  
1    人事  佐藤
1    人事  鈴木
1    経理  本田
2    人事  松田
2    経理  豊田
3    経理  住友

Aベストアンサー

過去に 似たような質問がありました。


=SUM(IF($A$2:$A$7=1,IF($B$2:$B$7="人事",1,0),0))
とやればいいでしょう。
なお、コードが A1から始まることを前提とします。

参考URL:http://oshiete1.goo.ne.jp/kotaeru.php3?q=401189

QACCESS 複数フィールド下・同一条件でその都度条件を変えて表示したい

初心者になりますので、基本的かもしれない質問をしますが、検索して見つからなかったので質問をさせて頂きたいと思います。よろしくお願い致します。

ACCESSでシステムを作成する途中で困っています。
複数のフィールドの同一人物のデータを、その都度条件を出して(リストボックス等で)フィールドに表示したいと思っています。
条件はあくまで「1つ」ですが、複数フィールドにまたがる条件の為、どのように表示をさせる方法があるのか迷っています。
データ元は、以下のようなクエリになっております。

【 データ元:クエリ1 】
コード   担当者(1) 担当者(2)
111   田中   佐藤 
112   山田   田中
113   佐藤   鈴木
114   鈴木   山田  ・・・
    
【 表示 】
 EX:「田中」を選択した場合
コード   担当者(1) 担当者(2)
111   田中   佐藤 
112   山田   田中
★田中が入力されているデータのみ表示する
★ただし複数のフィールド下で検索する

今まではクエリの抽出条件に直接「田中」などを入力していましたが、数が増えた為その都度条件を入れないといけません。そこで、フォームで担当者を選択することによって、担当者の該当するデータを一発表示できるようにしたいと考えております。
勉強不足で方向性が見えていない状況です。よろしくお願い致します。

初心者になりますので、基本的かもしれない質問をしますが、検索して見つからなかったので質問をさせて頂きたいと思います。よろしくお願い致します。

ACCESSでシステムを作成する途中で困っています。
複数のフィールドの同一人物のデータを、その都度条件を出して(リストボックス等で)フィールドに表示したいと思っています。
条件はあくまで「1つ」ですが、複数フィールドにまたがる条件の為、どのように表示をさせる方法があるのか迷っています。
データ元は、以下のようなクエリになっており...続きを読む

Aベストアンサー

お望みのことはパラメータを使えばできます
全ての担当者フィールドの抽出条件欄に

=[名前を入力してください]

と書いておけば、入力を促すダイアログが表示されますから
そこに入力してやれば抽出できます

ただしこのテーブルには重大な欠陥があります
同じ抽出条件を適用しないといけないような同種のものは
1レコード内に横に並べないで別レコードとして縦に展開するというのが
データベースの基本です

Qexcelの表を複数条件でカウントして表示したい

EXCELのシート入力した表を、複数条件でカウントして、
別のシートに表示したいと考えています。

データの表をつくってカウントするのですが、

項目1 項目2 項目3
B   1   あ
B   2   う
C   1   う
B   2   き

このような表の場合、
項目1=B
項目2=2
という二つの条件で、
レコードを数をカウントすることは可能でしょうか?
本来は、2がかえってくるはずなのですが・・・。

ご存じの方、アイデアをお教えください。

Aベストアンサー

SUMPRODUCT 関数
 (A1:A6="B")かつ(B1:B6=2)の条件を満たす「行」数を求める。
仮に データーが、1~6行の範囲で入っているなら、
=SUMPRODUCT((A1:A6="B")*(B1:B6=2))

この場合の「*」は論理積演算。

過去にも、同様な質問が出ているので、 SUMPRODUCT  で検索願います。

QAccessの選択クエリの抽出条件の最大文字数

Access2000、WinXPProです。
Accessの選択クエリの抽出条件に入力可能な最大文字数(バイト数)はどれくらいなんでしょうか?
また、その制限を広げることは可能なんでしょうか?

Aベストアンサー

#2です。

もしももう一つクエリをかませてもいいのであれば・・

抽出条件の商品コードだけのテーブルを作成して
XXXXXXXX
AAAAAAAA
BBBBBBBB
というコードを入力しておいて、クエリで商品情報と連結させてから
顧客情報と、上記の商品を抽出したクエリを連結させては
いかがでしょうか。
100もあるコードをクエリの編集画面で入力されるよりは
後々のメンテナンスが楽だと思うのですが・・。

QExcel2007 複数条件の行数カウントできないでしょうが??

下のような条件の表の中で1の列が、1で始まり2の列がAから始まり、しかも3の列が10以上のような行数をカウントする事は、出来ないでしょうか?
出来れば、これを自動計算で各条件ごとに別シートにカウント表示したいのですが・・・

   1   2   3
A  30  AB   5
B  12  AA   5
C  12  BC   10
D  25  BB   15
E  25  AC   10
F   ・   ・   ・
G   ・   ・   ・
H   ・   ・   ・

Excel初心者なので詳しく説明いただければ助かります。m(__)m

Aベストアンサー

以下のURLを参考にしてみてください。

  http://www.eurus.dti.ne.jp/~yoneyama/Excel/kansu/count.htm

SUMPRODUCT関数を使えばいいかと思います。

なお、文字列がAから始まるということを条件式で表せば、"=A*" となります。この場合の「 * 」はワイルドカードと呼ばれ、何かしらの文字列を意味します。つまり、"=A*" ならば先頭がAで始まる文字列を意味します。

QMicrosoft Access:クエリのフィールドが消える

仕事でWindows XP Professional、Microsoft Access 2003を使用しています。
Accessの知識は低いです(本を見ながらVBAを組んだりする程度)。
データベースは、5年ほど前にAccess 2000で作ったもので、ネットワークドライブにあり、現在、改良等はAccess 2003で行っていますが、データベースを使用するクライアントは、Windows 2000(Access 2000)とWindows XP Pro(Access 2003)の複数環境です。

データベースは、1つのテーブルに、1つの抽出クエリ、レポートはそのクエリから呼び出して表示すると考えてください。
レポートを表示させるときに、クエリからデータを引っ張ってくるのですが、数ヶ月前から、突然必要のない「パラメータの入力」ウィンドウが複数回表示されるようになりました。

直接の原因は、クエリに存在しているはずのフィールドが、数個消滅していて、再度クエリにフィールドを追加すれば直ります。
直してしばらく使えるのですが、4~5日経つと、また壊れるという状況です。

また、データベースには、1年以上大きな変更を加えていません。
レポートのラベル(単なる文字)や位置を変更するのみのメンテナンスしか行っていません。

ちなみに、このデータベースファイルのテーブルへは、別のデータベースファイルからも「テーブルのリンク」としてリンクされていますが、クエリやレポートは単独です。

個人情報を扱うファイルのため、外部に持ち出せず、職場でOK Waveにアクセスしづらい状況で、知識も乏しいことから、あまり詳しく提示できないのですが、勝手にクエリ内のフィールドが消えてしまう原因は、どういうことが考えられますか?
参考程度でも結構ですので、アドバイスをお願いします。
(この程度のレベルの人が、重要なデータベースを管理していることに一番の問題があるのは分かっているのですが…)

仕事でWindows XP Professional、Microsoft Access 2003を使用しています。
Accessの知識は低いです(本を見ながらVBAを組んだりする程度)。
データベースは、5年ほど前にAccess 2000で作ったもので、ネットワークドライブにあり、現在、改良等はAccess 2003で行っていますが、データベースを使用するクライアントは、Windows 2000(Access 2000)とWindows XP Pro(Access 2003)の複数環境です。

データベースは、1つのテーブルに、1つの抽出クエリ、レポートはそのクエリから呼び出して表示すると考えてく...続きを読む

Aベストアンサー

初めまして。
誰でも始めはあるものです。皆んな手探りでやって、失敗しながらやってますよ。プロでもね。。。
状況的にはMDB内でオブジェクトの不整合が発生している事が考えられますので、データテーブルは別との事ですので
一度、アプリ用MDBを新規に作成して、そこに元のMDBから各オブジェクトをインポートして作り直してみてください。
それとアプリ用MDBは、定期的に最適化を行うようになっていますか?壊れる可能性もあるとの前提で、
運用システムは考えた方が良いですよ。
本番用MDBと保守用MDBを分けて、メンテナンスは必ず保守用MDBで行い、
テストが完了したら本番用MDBに移行するとかの手順を確立した方が良いですね。頑張ってください。。。

QExcel関数で複数条件のカウント

Excelの関数を使用して、
ふたつの条件を満たしている行をカウントしたいです。
<例>
(1)A列に○がついている
(2)B列に×がない

よろしくお願いします。

Aベストアンサー

配列数式
{=SUM((A1:A100="○")*(B1:B100<>"×"))}

Q条件付き書式の複数条件の選択方法について

はじめまして。
エクセルのシートで会社データを作っています。
シートのC欄(C3からC80まで入力済)に会社名が20社程度入力されているのですが、その中で6社程度の会社では、売上の回収方法が違うので、色を変えたいのですが、条件付き書式では3つしか選択できなく、6社程度の場合どうすれば良いのでしょうか?
例えばC3の条件付き書式を、以下のようにしてもダメですよね。
セルの値が、次の値に等しいってして、C3=OR("A社","B社","C社","D社","E社")ってしても

Aベストアンサー

A1 セルから選択を始めて、データの終わりまで選択し、条件付き書式

「数式が」=OR($A1="A社",$A1="B社",$A1="C社",$A1="D社",$A1="E社")

です。「セルの値が」ではありませんよ。

Q【EXCEL】複数の条件でのカウント

EXCELで、複数(2つ)の条件でカウントしたいです。
下記のようなリストから、
「"関東・男"が○名」「"関東・女"が○名」・・・というように
カウントしたいのですが、どのような関数でできますか?
同じような質問がいくつもあるのは承知なのですが、
参考にしても答えが出せなかったので、質問させていただきました。
よろしくお願いいたします。


所在地 性別
関東  男
関東  男
関東  女
関西  男
関西  女
関西  女
関東  女
関東  男
関東  女
関西  男

Aベストアンサー

1.データのピボットテーブルで所在地と性別を列にして
性別をデータの個数として集計させる。

2.Excel2007であればCOUNTIFS関数を使用
=COUNTIFS(A:A,"関東",B:B,"男")

3.SUMPRODUCT関数を使用
=SUMORODUCT(($A$1:$A$100="関東")*($B$1:$B$100="男"))

4.配列数式を使用
=SUM(IF(($A$1:$A$100="関東")*($B$1:$B$100="男"),1))
としてCtrl+Shift+Enterで配列数式に変換

5.C列を作業列にして
C2=A2&B2
で下方にコピー
=COUNTIF(C:C,"関東男")

QACCESS選択クエリでの問題

特定のフィールドで、特定の情報を含まないレコードのみもってきたいので、その特定フィールドの条件設定のところに、下記の様に書き込みました。

[フィールド名]<>"特定の情報"

うまく行っていません。
勿論、特定の情報は、コピー&ペーストでもってきて
スペースが入っていないことも確認しています。

別のフィールドで確かめると、うまく行きます。
多分、そのフィールドに何かあるのだと思いますが、
見つけていません。どなたか、同じような経験、あるいはサジェスチョンがあれば,よろしくお願い致します。

ちなみに、特定の情報とは、実の処、"NO"です。

Aベストアンサー

検索条件を"特定の情報"として、文字扱いしているのに対し、>ちなみに、特定の情報とは、実の、"NO"です<とは数字(ナンバー)のことでしょうか?
だとすると、方の不一致があるからかも


このQ&Aを見た人がよく見るQ&A

人気Q&Aランキング