• 締切済み

iif関数で3つ以上条件を抽出したい場合

iif関数を記載して、抽出条件を3つ以上入力するとエラーが出てしまいます。 小分類コードをまだ増やしたいのですが、これ以上記入するとエラーが出てしまうので 他の方法を探しています。choose関数は違いますか?? 例)3つの病気までですと、疾患: IIf([病気].[ICD10小分類コード]='J42',1,IIf([病気].[ICD10小分類コード]='J43',1,IIf([病気].[ICD10小分類コード]='J44',1,0)))となります。 もしこの後に病気を5つに増やしたいとするとどう書けばよいでしょうか?? 同じように,IIf([病気].[ICD10小分類コード]='J45',1,IIf([病気].[ICD10小分類コード]='J46',1と書いて、最後,0)))))→病気が5つあるので、かっこは5つ。と記載でしょうか? 下記であっていますか??  疾患: IIf([病気].[ICD10小分類コード]='J42',1,IIf([病気].[ICD10小分類コード]='J43',1,IIf([病気].[ICD10小分類コード]='J44',1,IIf([病気].[ICD10小分類コード]='J45',1,IIf([病気].[ICD10小分類コード]='J46',1,0))))) わかりにくくて申し訳ありませんが何卒よろしくお願いいたします。

みんなの回答

  • don_go
  • ベストアンサー率31% (336/1059)
回答No.6

[病気].[ICD10小分類コード]の値が、'J42','J43','J44' ,'J45','J46'の時に 1、その他の場合に 0をセット IIf(([病気].[ICD10小分類コード]='J42') Or ([病気].[ICD10小分類コード]='J43') Or ([病気].[ICD10小分類コード]='J44') Or ([病気].[ICD10小分類コード]='J45') Or ([病気].[ICD10小分類コード]='J46'), 1, 0)

  • piroin654
  • ベストアンサー率75% (692/917)
回答No.5

No4です。投稿された日付をみたら、1週間くらい経っていたので もしかしたら解決されたかもしれませんね。

  • piroin654
  • ベストアンサー率75% (692/917)
回答No.4

合っていますが、貼り付けられたものをテキストで確認すると、 >IIf([病気]. [ICD10小分類コード]='J44',1 のところで、 >[病気]. [ICD10小分類コード] のように離れて表示されます。この部分を [病気].[ICD10小分類コード] のようにくっつければエラーは出ないと思いますが。 一度、テキストに貼り付け確認してみてはいかがでしょう。 IIfの使い方も以下のような方法もあります。 疾患: IIf([病気].[ICD10小分類コード] In ("J42","J43","J44","J45","J46"),1,0)

回答No.3

AccessとExcelとの差は2つです。 1、Find関数->Instr関数。 2、1、0への置換。1を乗じるのではなく絶対値を取る。 True---Access -1、Excel 1 False---0 Instr関数の例は以下のPRTSCを。 PS、質問内容に疑義が・・・。 通常、IIF関数を使う場合、条件によって取得する値が異なると思いますが・・・。

回答No.2

■訂正 "|" & [病気].[ICD10小分類コード] & "|"   ↓ [病気].[ICD10小分類コード] 多分、前後に"|"を付加する必要はないかも・・・。 ■補足 =(FIND("A", "ABC")>0)*1 =IIF(FIND("A", "ABC")>0,1,0) 上も下も同じです。 上は論理演算式、下はIIF関数を使っているだけです。 ※EXCELは使ったことも学んだこともないので・・・。こんなところが精一杯です。

minminde55
質問者

お礼

すいません!実はこれAccessでやろうとしているのですが、また構文は変わるのでしょうか? ちなみに、大小関係ではなくて、この抽出した条件を当てはまる患者には1または当てはまらない場合は0で表示されるようにしたいみたいです。。。 せっかく教えていただいたのに申し訳ありません。 でも即ご回答いただきましてありがとうございました。 また何かあればよろしくお願いいたします。

回答No.1

=(FIND("|" & [病気].[ICD10小分類コード] & "|","|J41|J42|J43|J44|J45|")>0)*1 Find関数の戻り値が0より大きいかという倫理式の値に1を乗じれば、 1=見つかった 0=見つからなかった でOKなのでは・・・。

minminde55
質問者

お礼

即ご返信いただきまして、本当にありがとうございました。 どうやら質問が大小関係はなかったみたいです。 せっかく教えていただいたのに申し訳ありません。 もう一度やってみます。 また何かあればよろしくお願いいたします。

関連するQ&A

  • AccessのIIF関数

    Access2000のクエリで、 抽出:IIf(Left([品番],1)=2,Left([品番],4),Left([品番],7))という関数をフィールドに設定しました。 品番 2006aa123は、2006 h2006aa123は、h2006aa と各レコードに入るはずですが、2006aa123はちゃんと2006と入りますが、h2006aa123は、#ERRORになってしまいます。 なぜでしょうか? よろしくお願いします。

  • ACCESS 選択クエリでの抽出条件について

    在庫マスターと得意先マスターのテーブルを使用して 在庫マスターのデータを抽出条件により出力したいと思っています。 在庫マスターは区分コード1の倉庫コードと区分コード3の店舗コードと分かれており、 抽出条件は区分コード1の時は倉庫コード199と155は除きます。 区分コード2の時は得意先マスターの形態コードから"1"と"2"のものを抽出します。 デザインビューでクエリ作成するで選択クエリから抽出条件を入力してデータを出力できないのでしょうか。 色々と試していますがエラーが表示され出力できません。 例) If([ST_WHTYPE]="1",([dbo_STOCK].[ST_WHNO]) Not In ("199","155"), IIf([ST_WHTYPE]="3",[CU_SHOPTYPE]="1" Or [CU_SHOPTYPE]="2")) この場合は集計関数・・・・・含んでないクエリーを実行しましたと表示されます。 他には複雑すぎるため評価できませんとかエラーが表示されます。 選択クエリでの抽出条件ではできないのでしょうか。

  • 2つのテーブルの比較

    フリーで公開されているCSVファイルをインポートしてテーブルを作成したのですが、そのCSVのファイルが追加されたり変更された時に一括で追加変更を実施しようと思い(データが2万件以上有る為一つ一つ確認するのは無理)作成し追加された場合の処理は不一致クエリを利用して問題なく出来たのですが変更された場所が有った場合の更新を不一致クエリにて行ったところ全ての件数を更新してしまうのでネットにて調べたところサンプルが有ったのでそれを元に下記の通りに記載したのですが、JOIN操作の構文エラーというエラーが出て前に進みません。 どこに問題があるのかサンプルと見比べたのですが一向に判りません。 誠に申し訳ございませんがご教授願います。 尚、サンプルとして見たのは下記のサイトです。 http://www.accessclub.jp/bbs3/0043/superbeg17558.html SELECT T傷病名マスタ取込用.傷病名コード, T傷病名マスタ取込用.傷病名 As 傷病名, T傷病名マスタ.傷病名 As 傷病名, T傷病名マスタ取込用.ショウビョウメイカナ as ショウビョウメイカナ, T傷病名マスタ.ショウビョウメイカナ as ショウビョウメイカナ, T傷病名マスタ取込用.ICD10コード as ICD10コード, T傷病名マスタ.ICD10コード as ICD10コード, T傷病名マスタ取込用.大分類 as 大分類, T傷病名マスタ.大分類 as 大分類, iif([T傷病名マスタ]![傷病名]=[T傷病名マスタ取込用]![傷病名],null,"傷病名") & iif([T傷病名マスタ]![ショウビョウメイカナ]=[T傷病名マスタ取込用]![ショウビョウメイカナ],null,"ショウビョウメイカナ、") & iif([T傷病名マスタ]![ICD10コード]=[T傷病名マスタ取込用]![ICD10コード],null,"ICD10コード、") & iif([T傷病名マスタ]![大分類]=[T傷病名マスタ取込用]![大分類],null,"大分類、") From T傷病マスタ RIGHT JOIN [T傷病名マスタ取込用] ON [T傷病名マスタ].[傷病名コード] = 傷病名コード where ((((iif(Nz([T傷病名マスタ]![傷病名])=Nz([T傷病名マスタ取込用]![傷病名]),null,","傷病名、") & iif(Nz([T傷病名マスタ]![ショウビョウメイカナ]=Nz([T傷病名マスタ取込用]![ショウビョウメイカナ]),null,"ショウビョウメイカナ、") & iif(Nz([T傷病名マスタ]![ICD10コード]=Nz([T傷病名マスタ取込用]![ICD10コード]),null,"ICD10コード、") & iif(Nz([T傷病名マスタ]![大分類]=Nz([T傷病名マスタ取込用]![大分類]),null,"大分類、"))is not null)); union select T傷病名マスタ.傷病名コード, T傷病名マスタ.傷病名 as 傷病名, T傷病名マスタ取込用.傷病名 as 傷病名, T傷病名マスタ.ショウビョウメイカナ as ショウビョウメイカナ, T傷病名マスタ取込用.ショウビョウメイカナ as ショウビョウメイカナ, T傷病名マスタ.ICD10コード as ICD10コード, T傷病名マスタ取込用.ICD10コード as ICD10コード, T傷病名マスタ.大分類 as 大分類, T傷病名マスタ取込用.大分類 as 大分類. iif([T傷病名マスタ]![傷病名]=[T傷病名マスタ取込用]![傷病名],null,"傷病名、") & iif([T傷病名マスタ]![ショウビョウメイカナ]=[T傷病名マスタ取込用]![ショウビョウメイカナ],null,"ショウビョウメイカナ、") & iif([T傷病名マスタ]![ICD10コード]=[傷病名マスタ取込用]![ICD10コード],null,"ICD10コード、") & iif([T傷病名マスタ]![大分類]=[傷病名マスタ取込用]![大分類],null,"大分類、") ON T傷病名マスタ LEFT JOIN T傷病名マスタ取込用 on T傷病名マスタ.傷病名コード=T傷病名マスタ取込用.傷病名コード where ((((iif(Nz([T傷病名マスタ]![傷病名])=Nz([T傷病名マスタ取込用]![傷病名]),null,","傷病名、") & iif(Nz([T傷病名マスタ]![ショウビョウメイカナ]=Nz([T傷病名マスタ取込用]![ショウビョウメイカナ]),null,"ショウビョウメイカナ、") & iif(Nz([T傷病名マスタ]![ICD10コード]=Nz([T傷病名マスタ取込用]![ICD10コード]),null,"ICD10コード、") & iif(Nz([T傷病名マスタ]![大分類]=Nz([T傷病名マスタ取込用]![大分類]),null,"大分類、"))is not null));

  • データ抽出

    VBA初心者です。 エクセルで2枚のシートを練習用で作成しました。 画像上段がシート1で元データです。 下段が転記先の表で、シート2です。 シート2は、今はデータが参考に貼りつけてありますが 普段はマクロで作業後は消去して、空白にしています。 今したい処理が 元データをINPUTBOX関数を使って抽出し、 NO,購入日付、分類、感想、備考のデータを下段画像シート2のように 転記したいのです。 抽出条件のキーになるのは、主に「購入日付」と「分類」です。 どこかのセルに、日付を範囲指定で入力すれば、条件に当てはまる データをシート2に表示させたいです。 四半期ごとのデータを検索したいためです。 INPUTBOX関数でなくても、どこかの特定のセルに範囲指定する日付を入力 して、抽出してもかまわないです。 あと、分類は割と「飲料水」を抽出して、印刷する頻度が多いのですが 今後の参考に、全部の分類を抽出できるスタイルが望ましいです。 現在は、一行一行日付と分類を目視で確認しながら シート2にコピペ作業しているので 時間がかかります。 エクセルの機能でフィルタ等をしてみたのですが、 関数やVBAで素早くしたいのですが、なかなかコードが思いつきません。 お願いします。

  • 検索条件について。

    あるフォームで選択・入力された値から抽出を行うようなクエリを作成しました。 空欄でもきちんと抽出されるようにと、下記のようなものを記入しました。 IIf(IsNull([Forms]![検索結果]![rank]),True,[ランク] Like [Forms]![検索結果]![rank]) ですが、実行を行う(空欄で実行)と、「式が複雑すぎです」とエラーがでてしまいます。 実際の値を入力すると、何も抽出されません。 どこが違うのでしょうか? よろしくお願いします。

  • Excelで特定も文字を含む行全てを、別のシートに抽出する方法を教えて

    Excelで特定も文字を含む行全てを、別のシートに抽出する方法を教えてください。 Excel2007で名簿を作成しています。 それぞれに、ある条件で「A」「B」「C」と3つに分類しています。 それぞれの分類ごとに、別シートに一括して抽出する方法をご教示ください。 例 Sheet1には (所属名)(コード)(氏名)(コード)(資格)(コード)(年数)(ランク)など14項目あります ※コードの一部には入力規則を使用したブルダウンで選択したり、lookup関数で、数字を入力すると所属名が表示されるようになっています 抽出条件となるランクは、年数のセルが●●以上であれば「A」、●●以下であれば「B」という関数を使用しています。 名簿に入力するごとに、「A」「B」「C」と別のシートに抽出させたいのです。 こちらのサイトでいろいろ検索し参考に試してみましたが、抽出できませんでした。 関数でもマクロでもいいので、抽出する方法を教えてくださると大変嬉しいです。 宜しくお願い致します。

  • 関数により満60歳以上の員数の抽出について

    Excel 2013 で、下記の様な資料を作成し、男・女・全員毎の満60歳以上の員数を抽出することで作業を実施しましたが出来ませんでした。 Excelで作成した表を添付しようとしましたが、添付することも出来ませんでしたのでワードで記載しました。 D8に男満60歳以上の員数・D9に女満60歳以上の員数・D10に全員の満60歳以上の員数を求めたいのです。 抽出方法の関数をご存知の方、ご指導お願い致します。 なお、Excelで作成したものを添付する方法もご指導いただければ幸甚です。       A       B       C       D 番号  氏名   年齢    性別     員数 1     A      59       男 2     B       60     女 3     C       58     男 4      D       48     女 5     E      62    女 6     F       61    男 7     G      57    女 8                 男 9                 女 10                全員 よろしくお願い致します。

  • Access 抽出条件 フォームの作成について

    クエリで以下のような関数で日数から期首を求めたのですが 抽出条件の指定が出来ません。テキスト型、○○年○○月、期首7月 今期: IIf(Month(CDate([決算日] & "01日"))<=7,Format(DateAdd("m",-6,CDate([決算日] & "01日")),"ggge" & "年"),Format(CDate([決算日] & "01日"),"gggee" & "年")) 色々試してみましたがデータ型が違うといわれるのですが、どの様な方法をとれば良いでしょうか? それとエラーになっている(日付けデータが無い)部分はほって置いて良いのでしょうか?

  • エクセル 複数条件に該当する数値をピックする

    分類が「あ・い・う」等、複数あるのですが、それぞれ「期初・期中・期末」のタイミングで予測した4月~3月迄の数値が記入されたデータがあります。 この中から、抽出タイミングを「期末」として、且つ、それぞれの分類「あ・い・う」の4月~3月迄を抽出した表に組み替えたいと思います。 関数を使ってその様に作成することは可能でしょうか。 御手数ですがどなたか御教示ください。

  • エクセル 複数条件(3つ)に該当する数値をピック

    こんにちは。 分類が「あ・い・う」等、複数あるのですが、それぞれ「期初・期中・期末」のタイミングで予測した4月~3月迄の数値が記入されたデータがあります。 この中から、抽出タイミングを「期末」として、且つ、それぞれの分類「あ・い・う」の4月~3月迄を抽出した表に組み替えたいと思います。 関数を使ってその様に作成することは可能でしょうか。 御手数ですがどなたか御教示ください。