専門家に聞いた!繰り返す痔の原因は!? >>

なぜエクセルではIF関数なのにアクセスではIIF関数?

IF関数はアクセスではIIF関数になりますが、
なぜ「I」が増えるのでしょうか?

またIF関数はイフ関数と読みますが
IIF関数は「イイフ」関数と読めばいいのでしょうか?

よろしくお願い致します。

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

A 回答 (3件)

>エクセルではIF関数なのにアクセスではIIF


アクセスでも、形だけについて言えば(関数とステートメントの違いはあるが形だけで言うと)
・クエリのグリッドで使う場合と
・VBAのモジュールで使う場合と
・アクセスのSQL文でどうか
あります。
アクセスでもVBAではIFは使えます。
クエリのグリッドではIFは使えないようだ(「式に未定義関数Ifがあります」、のエラー)。
SQLではIF,IIFは使えません。
http://bbs.wankuma.com/index.cgi?mode=al2&namber …
エクセル関数にも、IIF関数が増えたかと思ったが、まだ増えてないようだ。
エクセルでもVBAではIifが使えます。
伝統的にIIFがアクセスの方で設けられている。理由は聞いても誰にもわからないのではないか。
ーー
読み方は、ここに質問するより、Googleなどで照会するのが良い。
(こういう一般的な質問は、ここよりGoogleなどの照会のほうが良い。)
「iif 読み方」で照会。
「アイイフ」が多いようだ。
http://barbwire.blog49.fc2.com/blog-entry-43.html ほか
    • good
    • 2
この回答へのお礼

ありがとうございました。

お礼日時:2011/09/19 23:04

>なぜエクセルではIF関数なのにアクセスではIIF関数?


 ⇒エクセルでもIif関数があるし、アクセスでもIf関数はあります。

>IF関数はアクセスではIIF関数になりますが、なぜ「I」が増えるのでしょうか?
 ⇒そもそもIfとIifは機能が違いますので単に分けているだけです。

>IIF関数は「イイフ」関数と読めばいいのでしょうか?
 ⇒「アイエフ」とかが一般的(?)
    • good
    • 0
この回答へのお礼

>エクセルでもIif関数があるし、アクセスでもIf関数はあります。

知りませんでした。
勉強してみます。
ありがとうございました。

お礼日時:2011/09/19 23:04

>なぜエクセルではIF関数なのにアクセスではIIF関数?


それをいったら
EXCEL ACCESS
TODAY関数=DATE関数
DATE関数=DATESERIAL関数
TEXT関数=FORMAT関数
SUBSTITUTE関数=REPLACE関数
FIND関数=STRCMP関数
等、使用方法が同じ異なる名前の関数は数多くあります。

まあEXCELはLOTUS互換の為らしいですが...

>IIF関数は「イイフ」関数と読めばいいのでしょうか?
「アイイフ」関数というのが一般的みたいです。
    • good
    • 0
この回答へのお礼

そんなにたくさんあるのですね
知りませんでした。
ありがとうございました。

お礼日時:2011/09/19 23:03

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

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

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

このQ&Aを見た人が検索しているワード

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

QACCESS IIF関数 複数条件の設定について

 選択クエリにおいて、あるフィールド「 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」と表記されてしまいます。

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

Aベストアンサー

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

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"...続きを読む

QACCESSで空白のデーターをクエリで判定/識別する方法を教えてくださ

ACCESSで空白のデーターをクエリで判定/識別する方法を教えてください。
EXCELでは空白を""で判定/識別表していますがACCESSではどうなるのでしょうか。

下の例はフィールドに試験番号があればその番号を、空白なら”欠席”と表示しようとしています。
IIf(([試験番号]="空白の場合何を入れる?"),[試験番号],"欠席")

Aベストアンサー

もうひとつの書き方は
式1: IIf([試験番号] Is Not Null,[試験番号],"欠席")
第2、第3引数の、質問の順序にあわせるとこうなる。

QACCESSのクエリー抽出条件にIIFを使用して

コンボボックスの値を抽出条件にしたクエリーを作成しています。
コンボボックスにて"ALL"を選択したときに、全レコードを表示したく、
以下の式を入れたのですが全表示がされません。

IIf([Forms]![テーブル名]![コンボ値]="ALL",Like "*",[Forms]![テーブル名]![コンボ値])

Like "*" の部分がいけないのでしょうか?
(偽の場合は選択した値のレコードが抽出されます)

どなたか教えてください、よろしくお願いいたします。

Aベストアンサー

>IIf([Forms]![テーブル名]![コンボ値]="ALL",Like "*",[Forms]![テーブル名]![コンボ値])
この条件は、抽出したいフィールドの「抽出条件」の所に入力しているんですよね?

ちょっと内容を変えまして・・・
(1)「抽出条件」ではなく、「フィールド」の行に入力してください。
 (つまり、抽出用の新しいフィールドを作成するということです。)
(2)式は
式1: IIf([Forms]![テーブル名]![コンボボックス名]="ALL",True,[テーブル名]![コンボボックス名]=[Forms]![テーブル名]![コンボボックス名])
にしてください。
(3)IIfを入力したフィールドの「抽出条件」に True と入力します。
 (Trueの囲い文字はいりません。)

どうでしょう?ちゃんと出ますよね・・・?
ただし、フィールドを作ったわけですから、
クエリのデータシートビューには必要のない、-1などが表示されたフィールドが表示されますよね。
これは、デザインビューに戻って、表示のチェックボックスをオフにすれば解決します。

IIFというのは、ExcelのIF関数とはちょっとイメージが違います。
以下解説↓

今回の条件式の部分には、[コンボ]="ALL"という評価式(←ポイント!)が入力されています。
Excelでは条件式というイメージが強いですが、
IIFは評価式という意味です。
つまり、この評価式自体がTrueとFalseを持つということです。
IIf([Forms]![テーブル名]![コンボボックス名]="ALL",・・・・)という式で、
条件をALLとしたら・・・
評価結果=True となります。
そして真の場合の処理にTrueを指定することで、IIFの戻り値がTrueになります。
条件にALL以外を入力すると・・・
評価結果=False となります。
そして偽の場合の処理の戻り値が、ALL以外の条件になります。
抽出条件にもTrueを入力したのは、無条件に全件が表示されるのを防ぐためです。

これは、表示をオンにして動作確認すると分かりやすいかも知れませんね。
または、とりあえず現象を直して、理解は後々・・・でもよいかも知れません。
健闘を祈ります!

>IIf([Forms]![テーブル名]![コンボ値]="ALL",Like "*",[Forms]![テーブル名]![コンボ値])
この条件は、抽出したいフィールドの「抽出条件」の所に入力しているんですよね?

ちょっと内容を変えまして・・・
(1)「抽出条件」ではなく、「フィールド」の行に入力してください。
 (つまり、抽出用の新しいフィールドを作成するということです。)
(2)式は
式1: IIf([Forms]![テーブル名]![コンボボックス名]="ALL",True,[テーブル名]![コンボボックス名]=[Forms]![テーブル名]![コンボボックス名])
にして...続きを読む

QアクセスVBAのMe!と[ ]

基本的なことですみません。

アクセスのイベントプロシージャで、Me!ってありますけど、これはどういう意味なんでしょうか?

また、Me!の後に、Me!.~~と書く場合と、Me!.[~~]と書く場合がありますが、どこが違うのでしょうか?

Aベストアンサー

>プロシージャ内で[]を使う場合は、そのフォーム外のオブジェクトを使う場合と考えてよろしいでしょうか?
別のオブジェクトを使う場合だけではありません。
Hensu = Me![Text1]のようにHensuという変数に自身のTest1の値を代入する場合のように。
[]で括られているのがオブジェクト名やコントロール名だよという事。
クエリの抽出条件に存在しない[?]とすれば?というコントロール等が参照できないので?というダイアログが表示されるように?というオブジェクトやコントロールは何?と聞いてくるように。
>フォーム内のオブジェクトの場合はあくまでMe!で良いのでしょうか
Forms.[フォーム名]![コントロール名]やForms![フォーム名]![コントロール名]が構文。
アクティブなフォームが自分自身ならForms![フォーム名]の変わりにMeでもOKですという事。

と言う解釈の方が良いと思います。

Qアクセスで#エラーを表示させない方法は?

アクセス2000を使用しています。フォームにテキストボックスを貼り付けて、計算式を入れています。計算できない数値になると、#エラーと表示されます。目障りなので、#エラー という表示を消したいのですが、どうしたらよろしいでしょうか?宜しくお願い申し上げ候。

Aベストアンサー

はじめは「IIF関数とIsError関数を使用して」と考えたものの、IIF関数は引数がエラーになった時点で
エラーが返されてしまう(=元の木阿弥)ので、どうしたものかと思ったのですが・・・
とりあえず、「見た感じ、何も表示されていないように見える」ということで、『条件付書式』での対応と
いうのはいかがでしょうか。

1)当該フォームをデザインビューで開く
2)当該テキストボックスを選択
3)メニューで「書式(O)→条件付き書式(D)」を選択
4)『条件付き書式設定』ダイアログが開くので、『条件1(1)』枠の左端にあるコンボボックスで「式」を選択
5)上記コンボボックスの隣が1つのテキストボックスになるので、そこに以下のような式を入力
 IsError([テキスト0])
 ※上記の式は当該テキストボックスの名前が「テキスト0」の場合です。
6)上記テキストボックスの下、右から2番目に「A」と表示された、文字色を指定するボタンがあるので、
 その左の小さな「▼」をクリックし、当該テキストボックスの背景と同じ色(既定では白のはず)を選択
7)『OK』ボタンをクリックしてダイアログを閉じる

・・・以上です。
これで、『テキスト0』の計算式がエラーになった場合は、文字色が背景と同じ色になるので、「#エラー」と
いう表示はされていないように見える、という状態にすることができると思います。

はじめは「IIF関数とIsError関数を使用して」と考えたものの、IIF関数は引数がエラーになった時点で
エラーが返されてしまう(=元の木阿弥)ので、どうしたものかと思ったのですが・・・
とりあえず、「見た感じ、何も表示されていないように見える」ということで、『条件付書式』での対応と
いうのはいかがでしょうか。

1)当該フォームをデザインビューで開く
2)当該テキストボックスを選択
3)メニューで「書式(O)→条件付き書式(D)」を選択
4)『条件付き書式設定』ダイアログが開くので、『条件1(1)』枠の...続きを読む

QACCESS等の関数の読み方

とても初歩的な質問なのですが、
Accessなどで、関数の使い方は分かるけど、
人に教えるときに読み方が分かりません。

たとえば、「IIF」や「StrConv」など。

こういった関数は参考書を見ても読み方まではついてないので
どのようにして勉強したらよいのでしょうか?
よろしくお願いいたします。

Aベストアンサー

こんにちは

 エクセルのワークシート関数ですが、以下のページもご参考になるのでは?

ワークシート関数の読み方と語源
http://www2.odn.ne.jp/excel/function.html

参考URL:http://www2.odn.ne.jp/excel/function.html

QACCESSでIF関数使えますか

ACCESSでIF関数が使えません。クエリで、フィールド欄にIF(…と打っても「未定義関数」と出ます。掛け算はフィールド欄に書き込むと計算できました。おなじ要領でやっても出ません。IF関数の使い方をお教えいただけませんか?

Aベストアンサー

クエリでは IIF 関数です

フィールド名:iif(条件式、結果1,結果2)

です

QAccessのマクロでモジュールを実行させたい。

Access2002を勉強中の初心者です。

AccessでDB1という名前のデータベースを作成し、その中で、モジュール1というモジュールを作成しました。これを実行するマクロを作成したく、次のようにマクロを作成しました。
マクロのデザイン画面でアクションに「プロージャの実行」を選択、プロージャ名入力覧の右側の...のボタンを押して式ビルダ画面を表示、ここの「関数」フォルダを開いてDB1を選択、表示されたモジュール1を貼り付けてOK。
しかし、このマクロを実行すると、次のエラーとなります。「DB1 指定されたDB1が見つけることができない関数名が含まれています」

根本的に方法が間違っているのでしょうか?
アドバイスをよろしくお願いします。

Aベストアンサー

#1です。

ちょっと時間ができたので、Accessのヘルプで、
 "RunCode/プロシージャの実行" アクション
についてのトピックを見てみました。

結論から言うと、基本的な考え方が間違っているみたいです^^;。

「プロシージャの実行」アクションでは、「Function」プロシージャを指定するようです。
Subプロシージャではエラーになります。


つまりご質問の件では、
「Subプロシージャを呼び出すFnctionプロシージャ」をまず書かなけれえばならない。
そして、マクロのアクションでは、あらためてこのFunctionプロシージャを指定しなければいけません。

Qアクセスのエラー「クエリには出力フィールドが1つ以上必要です。」

アクセスのエラー「クエリには出力フィールドが1つ以上必要です。」

このようなエラーが出て、ファイルが開けません。
テーブルにデータを入力する前は開いていました。
何か不正なデータでも入ってしまったせいでしょうか?

アクセスは初心者で、よくわかりません。
対処方法を教えてください。

Aベストアンサー

おかしくなったクエリの種類は何でしょうか。
クロス集計クエリや更新クエリは関係していますか?。

エラーの内容はデータ出力しようとしても出力対象となるデータが無いような意です。

例えば、
クロス集計クエリはデータの内容によって横軸構成しますから、
クロス集計クエリがあってその結果を選択クエリ(やテーブル作成クエリなど)使うことありますが、
クロス集計クエリの結果が0件になるときに、正しく構成できません。
よって、選択クエリでは入力=0件ということに陥ることあります。
またはその逆、クロス集計クエリの入力となるデータが=0件で縦軸も横軸も構成できないようなとき。

更新クエリで更新対象が=0件のとき。


開かなくなったクエリ自身でなく、
そのクエリの前後に他のクエリが実行されていませんか?。

データ入力したことにより抽出結果が変わったことがあれば
そこで影響でている可能性あります。

必ず出力されるケースを試してみてください。

QAccessで使う関数のIIF関数って…

なんて読むんでしょうか?
「アイアイエフ関数?」
ExcelのIF関数と同じような関数なので
「イイフ関数?」

かなり初歩的な質問ですがよろしくお願いします。

Aベストアンサー

こんにちは。maruru01です。

私は「アイイフ」と言っています。
「イイフ」は言いにくいですね。
「アイアイエフ」でもいいですが、IF関数と同類なので、そうとわかるようにという意味もあります。


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

人気Q&Aランキング