Access2013のIIF関数等について

このQ&Aのポイント
  • Access2013のIIF関数を使用してExcelのIF関数と同様の動作を行う方法について質問します。
  • ExcelではIF関数を使用してデータ整理を行っていたが、データ量がExcelの制限を超えたため、AccessのIIF関数を使用して同様の動作が可能かどうか知りたい。
  • 具体的なデータ例を示し、数値の条件に基づいて解答を返す方法を教えていただければ幸いです。
回答を見る
  • ベストアンサー

Access2013のIIF関数等について

初めて質問させていただきます。 【経緯】 この度、Excelにてif関数を用いたデータ整理を行おうと考えていたのですが、データ量がExcelで快適に動作できる量を超えていたため、 タイトルにもあるように初めてAccessのIFF関数を用いて同様もしくは類似の動作が可能かどうかをお聞きしたく、質問致しました。 【データ(関数導入前)】 ID 数値1 数値2 数値3 検索値 解答 1  1000  2000  50   1500   2  3000  4500  10   1000   3  7500  9000  350    8000  このようなデータがあったと仮定し、数値1<検索値<数値2となるとき、 下記のような同行の数値3を解答の列に返すことはできるのでしょうか? 【データ(関数導入後)】 ID 数値1 数値2 数値3 検索値 解答 1  1000  2000  50   1500  50 2  3000  4500  10   1000   3  7500  9000  350    8000  350 Excelでしたら、IF関数を使用すればできることは知っているのですが Accessを使用して同じようなことができるのかが全く分からないので どなたかご教授いただければ幸いです。 何卒よろしくお願い申し上げます。

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

  • ベストアンサー
  • kkkkkm
  • ベストアンサー率65% (1622/2462)
回答No.5

> テーブルに対する規則は現在使用されているので、変更できません エラーの説明では このテーブルのレコードは、ほかのユーザーによって変更されているか、またはアプリケーションの別のセッションで変更しているため、現在ロックされています。テーブルのレコードがロックされている間は、そのテーブルの規則は変更できません。 別のセッションでレコードをロックしている場合は、レコードを保存してから変更を行ってください。ほかのユーザーがレコードをロックしている場合は、しばらく待ってから規則の変更を保存してください。 ↑という事みたいですので上記に合致しないか確認してみてください。 > クエリには出力フィールドが1つ以上必要です こちらは クエリを作成する場合に、デスティネーション フィールド名 (出力するフィールド名) を指定しませんでした。少なくとも 1 つまたは複数のデスティネーション フィールドを選択してください。 ↑という事みたいですので上記に合致しないか確認してみてください。 念のためにこちらで設定している画像を添付しておきます。

pa2pa1
質問者

お礼

色々と教えていただきありがとうございます。 添付していただいた画像を見て、ピンときまして、Accessで試したところ 無事に作りたかったデータを作ることができました。 拙い状況説明の中、ご教授いただきありがとうございました!

その他の回答 (6)

  • chayamati
  • ベストアンサー率41% (254/607)
回答No.7

kkkkkm様 横から失礼します。別種の回答になりますので悪しからず ------------------------------------ クエりでフィールドを追加するときは追加するフィールド名の右に:を入れ [金額]:[数量]*[単価]のように記述します。 今回は次のようになります。添付図をご覧ください 解答:IIf([数値1]<[検索値] And [検索値]<[数値2],[数値3],"")

  • chayamati
  • ベストアンサー率41% (254/607)
回答No.6

・可能です。 自分は次の2通りのどちらかでやっています  ・クエリにIIF関数を組み込む  ・VBAで If文で処理    VBAだとIf文の他に Select Case 文もあり複数評価も可能です  もしかしてマクロでも可能かも

pa2pa1
質問者

お礼

ご回答ありがとうございます。 私はVBAを使用できませんので、kkkkkm様の情報とともに「・クエリにIIF関数を組み込む」方法にてチャレンジさせていただきました。 その結果無事にデータをことができました。 また、今回の件で皆様にご回答いただきまして、Accessの可能性の広さを強く感じることができたと思います。 本当にありがとうございました!

  • kkkkkm
  • ベストアンサー率65% (1622/2462)
回答No.4

知らなかったのですが2010以降だとテーブルにデータ型「集計」がありました。 ただ式で""が使えないみたいでしたので 空欄のフィールド(たとえばtest)を作成して IIf([数値1]<[検索値],IIf([検索値]<[数値2],[数値3],[test]),[test]) テーブルのデータ型に【集計】が追加された!集計フィールドが作成できる https://hamachan.info/win7/Access/data.html

pa2pa1
質問者

補足

ご回答ありがとうございます。 ご教授いただきました方法を順に試してみました。 (1)更新クエリを用いる方法 レコードの更新の欄に「IIf([数値1]<[検索値],IIf([検索値]<[数値2],[数値3],""),"")」を入力してみましたが、「クエリには出力フィールドが1つ以上必要です。」のエラーが出現し、できませんでした。 (2)テーブルのデータ型の集計を使用する方法 フィールドになにもデータの無い testを作成し、教えていただいた「IIf([数値1]<[検索値],IIf([検索値]<[数値2],[数値3],[test]),[test])」を、式の要素を関数に選択してからボックスに入れたところ、「このテーブルに対する規則は現在使用されているので、変更できません」のエラーボックスが出現し、できませんでした。 いずれも試させていただきましたが、私の式の入れる場所が悪いのか、私の操作方法が悪いのか、上記のエラーが出現し、作成できませんでした。 もし、なにか解決策がありそうでしたら、ご教授いただければ幸いです。 何卒よろしくお願い申し上げます。

  • kkkkkm
  • ベストアンサー率65% (1622/2462)
回答No.3

解答フィールドに結果を出力したい場合は 更新クエリを利用してください。式は同じです。 Accessで更新クエリを作成する方法 https://dekiru.net/article/15120/

  • kkkkkm
  • ベストアンサー率65% (1622/2462)
回答No.2

最後が抜けてました。 解答: IIf([数値1]<[検索値],IIf([検索値]<[数値2],[数値3],""),"")

  • kkkkkm
  • ベストアンサー率65% (1622/2462)
回答No.1

たとえば選択クエリで 解答: IIf([数値1]<[検索値],IIf([検索値]<[数値2],[数値3],"")) とかでいけると思います。

関連するQ&A

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

    なぜエクセルではIF関数なのにアクセスではIIF関数? IF関数はアクセスではIIF関数になりますが、 なぜ「I」が増えるのでしょうか? またIF関数はイフ関数と読みますが IIF関数は「イイフ」関数と読めばいいのでしょうか? よろしくお願い致します。

  • アクセスIIF関数

    はじめまして。ACCESSのif関数について教えてもらいたいことがあります。 dataAの数値に対して、目標数80をこえればその数値分に10を乗算し、未達であれば、0を返すという条件式を行いたいのですが、うまくいきません。以下、自分がやっていたデータを記載します。 テーブル例 dataA 70 80 60 90 クエリ条件式 式1:IIF([dataA]>80,"([dataA]-80)*10","0") 未達については0が返るのですが、超えた場合(真の時)([dataA]-80)*10の式が表示されています。うまく計算させるには、どうしたらよいのでしょうか。ご教授よろしくお願いします。

  • IF関数ではなくIIF関数を使うのでしょうか?

    なぜアクセスのクエリでIF関数を使う時は エクセルのようにIF関数ではなくIIF関数を使うのでしょうか? アクセスのクエリで条件分岐をしたいときはIIFを使っています。

  • アクセスの IIf

    エクセルの時は、IF関数を使用し簡単に設定できたのですが、アクセスは勉強中で全くわかりません。 図にあるように、勤務箇所に 例 事務所 と指定した場合に、右のフィールドの値(開始時間)に対し8:30等 ある時間に設定したいのです。 説明がうまくできませんが、お分かりになる方お教え願いませんか。 アクセス2003で使用しています。

  • Accessの関数について

    WindowsXP Access2000です。 AccessにはExcelにある、IF関数みたいなのは、ないのでしょうか? あるのでしたら、教えてください。 また、Excelで言うIF関数見たいなものがありましたら、教えてください。 よろしくお願いいたします。

  • Access 1000以下を切り捨てる関数

    Accessのクエリで関数を使用し、1000以下を切り捨てた値を出したいと思っています。 Excelの場合は、 =RoundDown(数値,-3) で、切り捨てられますよね。 Accessで、同様の結果が得られるような関数は、ありますでしょうか? ご存知でしたら、教えてください!!

  • アクセスで関数

    アクセスのド初心者なんですが、エクセルで使う「IF」関数はアクセスでは使えるのでしょうか?

  • アクセスの関数一覧サイトについて

    お世話になります。 以下のようなアクセスの関数のお勧めの関数サイトについて教えてください。よろしくお願いいたします。 ※ 私はエクセルから入ったアクセス初心者ですが、クエリで関数を使いっています。例えばエクセルでは「if」がアクセスでは「iif」等、少し戸惑います。 ※ アクセス関数一覧表と使用例、またできればエクセルの場合ではこの関数を使うがアクセスではこの関数というような対比(例)をしめしたようなお勧めサイトはないでしょうか? 教えてください。よろしくお願いします。

  • アクセスのIFF関数について教えてください。。。

    こんにちは。 ちょっと、お聞きしたいことがございます。 このたび、アクセス2007を使って、 簡単な備品管理システムを作っていたのですが、 備品のIDによって、返却予定日を分ける場合、 たとえば、下記のIFF関数では、エラーがでてしまいます。 IIF([備品ID]=A*,"7","14") 備品ID:A1、A2…、B1、B2… 返却予定日:A=7日、B=14日 こういった場合には、どのような式を書いたら よろしいのでしょうか? よろしくお願いいたします。

  • accessのDLookup関数について

    ほとんど理解できていないAccess2000使用者です 数値型のDLookup関数では以下のようにしたら上手くいきいました Me![氏名] = DLookup("[氏名]", "[テーブル]", "[ID]= " & [ID]) 出来上がってから、[ID]をテキスト型にしなければいけなくなりました 後ろの"[ID]= " & [ID]の部分をどのように変えればいいか分からず・・ よろしくお願いします

専門家に質問してみよう