• ベストアンサー

アクセスとエクセルの複数列の抽出方法は?

フィルター等を用いれば単列に関しては抽出が簡単なのですが! たとえばフィールド名(エクセルなら先頭のタイトル行)が資格(1)、資格(2)という名前がついているとします。 資格(1)フィールドにボイラー、ボイラー、危険物と入力されていて、資格(2)フィールドに電気、機械、ボイラーと入力されているとします。 資格(1)、資格(2)各フィールドごとならフィルターを使えば、資格(1)でボイラーをフィルタ実行すると2件表示されて、資格(2)でボイラーをフィルタ実行すると1件が表示されます。 で、ここからが本題なのですが、資格(1)と(2)両方のフィールドにボイラーで抽出をかけてボイラーも持っている人が3件表示されるようには出来ないでしょうか? アドバイスの程、宜しくお願いします。

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

  • ベストアンサー
  • maruru01
  • ベストアンサー率51% (1179/2272)
回答No.4

こんにちは。maruru01です。 Excelでも、フィルタオプションで出来ます。 元の表が以下のようにあるとします。    A    B 1 資格(1) 資格(2) 2 ボイラー 電気 3 ボイラー 機械 4 危険物  ボイラー 5 危険物  電気 そうしたら、同じシートのどこか別の場所に、抽出条件を入力します。 仮に、D1:E3とします。    D    E 1 資格(1) 資格(2) 2 ボイラー 3      ボイラー そうしたら、A1:B5を選択して、メニューの[データ]→[フィルタ]→[フィルタオプションの設定]を選択します。 (何かダイアログが出たら、[OK]して下さい) フィルタオプションの設定ダイアログが表示されるので、 [抽出先]:[選択範囲内]にチェック [リスト範囲]:「$A$1:$B$5」 [検索条件範囲]:「$D$1:$E$3」 として、[OK]します。 これで、どちらか一方が「ボイラー」のデータ(3件)が抽出されます。

hikari_tai
質問者

お礼

フィルタオプションについては初めて知りました。 エクセルもおくが深いもので色々な機能があるのですね? アドバイス有難う御座いました。

その他の回答 (4)

  • imogasi
  • ベストアンサー率27% (4737/17068)
回答No.5

VBAですが、検索(Find)を使ってやって見ました。 Sheet3を検索してSheet4へ抜き出します。 Sub kensaku1() Worksheets("sheet3").Activate Range("a1").Select Dim x As Range i = 1 Set x = Worksheets("sheet3").Range("A2:B7").Find(what:=Range("A1"), _ LookIn:=xlValues, LookAt:= _ xlPart, SearchOrder:=xlByColumns, SearchDirection:=xlNext, MatchCase:=False) x.Activate fst = x.Address Worksheets("sheet4").Select Sheets("Sheet4").Cells(i, "A") = x.Value Sheets("sheet4").Cells(i, "B") = x.Address i = i + 1 Worksheets("sheet3").Select Do While Not (x Is Nothing) Set x = Range("a2:b7").FindNext(After:=ActiveCell) x.Activate If x.Address = fst Then Exit Do Sheets("sheet4").Cells(i, "A") = x.Value Sheets("sheet4").Cells(i, "B") = x.Address i = i + 1 Loop End Sub A1セルに検索する語句、検索範囲はA2:B7にしてますが、適当に変えてください。 Sheets("sheet4").Cells(i, "B") = x.Addressのところ(2箇所)はSheet3よりSheet4に持っていきたい項目を書き連ねます。

hikari_tai
質問者

お礼

今の私ではかなり難しいアドバイスになりますが、頑張って試したいと思います。

  • papayuka
  • ベストアンサー率45% (1388/3066)
回答No.3

Excelならオートフィルタでなくフィルタオプションで別の場所になら抽出する出来ます。 Excel97だと別のシートには出せません。(他のバージョンは解かりません) あとは、オートフィルタで抽出した時に、もう一列使ってフラグを立てておきその列で抽出するとか。。 複数範囲を選択してから先頭セルに何かを入力し、確定の時に Ctrl + Enter とすれば一気に入力出来るので。

hikari_tai
質問者

補足

フラグをたてておくというのはどういった事ですか?

  • HAL007
  • ベストアンサー率29% (1751/5869)
回答No.2

エクセルで出来ないからアクセスで出来る方法を知りたいのですか? クエリーの条件を2段にで書けばor検索になり3件抽出できます。    資格(1)  資格(2) ------------------------------- ・ ・ -------------------------------    =ボイラー -------------------------------          =ボイラー

hikari_tai
質問者

お礼

多くの解答により解決に向かっています。 これからも何かあったらよろしくお願いします。

hikari_tai
質問者

補足

質問的にはアクセスでの方法を重視した感じですが、できれば両方知りたいと思い質問させて頂いております。

  • sgh
  • ベストアンサー率61% (75/121)
回答No.1

ACCESSだと簡単です。 クエリーのWhere条件に「[資格(1)]='ボイラー' or [資格(2)]='ボイラー'」 とすれば3件表示されます。 EXCELのオートフィルター機能では難しい様な気がします。 他の方のレスに期待しましょう。

hikari_tai
質問者

お礼

はじめて読んだときはいまいちわかりづらいアドバイスでしたが、他の方の書いている事と同じ事だということが理解できました。 なんだか大変失礼な感じですが、お礼ですので変な書き方誤解しないで下さい。 有難う御座いました。

関連するQ&A

  • Accessマクロの抽出でどうしたらいいでしょうか?

    図のようにフォームには商品テーブルのフィールドを配置しています。 上のテキストボックスには、[商品グループ]の値と等しいレコードを抽出するよう入力します。 [抽出]ボタン:フィルタを実行 [解除]ボタン:フィルタを解除して、すべてのレコードを表示 それぞれクリック時のイベントに割り当てたマクロは以下です。 《マクロ名》《アクション/引数》  《値》  抽出    フィルタの実行         Where条件式     [商品グループ]=[Forms]![抽出]![txtキー]  解除    全レコードの表示        値の代入         アイテム      [txtキー]         式         NULL このようにしましたが、フィルタはフォームの起動時初回は出来ますが、[解除]ボタンを押して[抽出]ボタンを押すと再度の抽出はできません。 初回の1回だけは抽出できるんですけど・・・続けて抽出できるようにするにはどうしたらいいでしょうか?

  • エクセルでこんな抽出は可能ですか?

    関数を使用して抽出したいと思います。 まずシート1とシート2を使います。 シート2には住所録などの内容が5000件くらいあるものとします。 その住所録には「〒」「住所」「電話番号」「氏名」などのフィールドを作っておきます。 そして、シート1には 例えば「氏名」という欄をA1に書き、B1の空白のセルに「山田」と入力をすると、「山田」が含まれるものをすべて表示したいと思います。 このすべて表示とういうのは「山田」を含む「氏名」だけ表示されるのではなく、「〒」「住所」「電話番号」「氏名」を表示したいのです。 オートフィルタやフィルタオプションは極力使用したくないので、関数で出来ないものかと考え中です。 また、抽出結果を表示する欄はシート1のA3あたりからお願いします。 こんな文書で意味が分かった方、よろしくお願いします

  • フォーム上にある1つのテキストボックスで複数フィールドの値を抽出する

    フォーム上に配置している非連結のテキストボックスに任意の値を入力して,同じフォーム上に抽出結果を表示させる方法について,1つのフィールドのみを抽出対象にする場合, Private Sub 抽出_Click() 'フィルタを設定 Me.Filter = "担当 ='" & Me!所員抽出 & "'" 'フィルタを実行 Me.FilterOn = True End Sub で可能ですが,抽出したいフィールドが担当フィールドだけでなく,担当2…担当8まである場合,どのように条件をつなげていったら良いでしょうか。 担当…担当8の各フィールドにはデータが入っていたり,いなかったりします。

  • 【Access2000】レコードの抽出方法

     Access2000を使用してデータベースを作成していますが、抽出条件でつまずいています。  具体的には、  【1】選択クエリーAを基に作成したフォームA(単票形式でレコードを1件ずつ表示)があります。  【2】フォームAの中に単票形式でレポートを出力するマクロボタンが有。  【3】現在はマクロボタンを押すとパラメータで「データNo.?」と入力してもらう形になってレコードを1件抽出する形になっています。    ※画面上に表示されている「データNo.」フィールドの数値を入力してもらう形です。  質問についてですが、今のところはパラメータを入力してもらいレコードを抽出→レポートを出力していますが、パラメータを使わず、現在、フォーム上に表示されているレコード(表示されている1件)を抽出する方法はないかと壁にぶち当たっています。  言い換えれば、レポートを出力する際の元になるクエリの抽出条件で「現在、表示されているレコード」をどのように記述すればいいか、もし御存知の方がいらっしゃいましたら御教示お願いいたします。

  • エクセルで,同じ列にある複数の重複する名前を抽出する方法はありますか?

    エクセルで,同じ列にある複数の重複する名前を抽出する方法はありますか? たとえばA1~A100に氏名が入力されている中に鈴木一郎,佐々木次郎,高橋三郎など重複して氏名が入力されているとします。どの氏名が重複入力されているか不明なので,オートフィルターで抽出するのはチョット不便です。 この場合,鈴木一郎,鈴木一郎,佐々木次郎,佐々木次郎,高橋三郎,高橋三郎と言うように上から順番に重複している氏名を抽出して表示する関数はありますか?

  • テーブル フィルタ < 抽出されない

    アクセス2010です。 テーブルには、 **************** フィールド1 # () <> **************** と入っています。 画像の様に フィルターで **************** < **************** から始まる文字を抽出しようとすると 検索結果が **************** フィールド1 # () **************** になります。 フィルターで **************** < **************** を含む値を抽出条件にすると、何も抽出されません。 **************** > **************** で終わるにすると 「正しい値を入力してください。」 となります。 **************** フィールド1 # () <> **************** この状態で <> を抽出するにはどうすればいいでしょうか? 全て半角です。

  • アクセス2007 VBAで抽出の一部解除

    超初心者ですが、よろしくお願いします。 アクセスのVBA で2つのフィールド(文字列)にフィルタをかけて抽出するようにしています。その際、1つのフィールドのフィルタのみを外したいのですがうまくいきません。ワイルドカード%を代入するとフィルタすべてが効かなくなってしまいます。また、" "を代入すると何も表示されません。どのようにしたらうまくいくのでしょうか。ご教示よろしくお願いします。

  • アクセス2007の抽出

    アクセス2007の抽出 クエリをもとに検索画面を作り部署の抽出をします、 検索画面は 部署名:部署名を入力するところ    コマンドボタンで実行です     クエリの部署のフィールドのところに[部署]としていますが 部署を複数抽出する場合どうしたらいいかわかりません。 [部署]のパラメータのところに部署名ひとつ「総務」と入れると総務を抽出してくれます これを部署を複数抽出したい場合はどうしたらできますか?たとえば総務と経理を抽出 したい場合 部署は30くらいあります。 説明がよく出来なくてすみません どうぞよろしくお願いいたします。

  • Accessクエリでの複数の抽出条件設定

    Accessを利用して住所録のデータベースを作成しています。パラメータークエリを利用して複数の項目の検索結果をフォーム上に表示させたいのですが上手くいきません。 フリガナと勤務先の二つのフィールドを利用して検索結果を表示したいのですが, ・フリガナだけに条件を入力した場合 ・勤務先だけに条件を入力した場合 ・フリガナと勤務先の両方に条件を入力した場合 の3つのパターンを想定しています。 例えば,フリガナと勤務先の両方の検索結果を表示させる場合,フリガナフィールドの抽出条件に Like [フリガナを入力] & "%" 勤務先フィールドの抽出条件に Like [勤務先を入力] & "%" Or Is Null と入力すると,フリガナと勤務先の両方に検索条件を入力した場合, ・フリガナが該当し,かつ勤務先が該当するデータ のほかに ・フリガナが該当し,勤務先が空白のデータ が抽出されます。フリガナと勤務先の両方に検索条件をいれたときには,勤務先が空白のデータを抽出しないようにしたいのですが,どうしたら良いでしょうか。フリガナだけで検索するときには,勤務先が空白かどうかは考慮しない結果を表示させたいと思います。 ちなみに, フリガナフィールドの抽出条件に Like [フリガナを入力] & "%" 勤務先フィールドの抽出条件に Like [勤務先を入力] & "%" とすると,勤務先だけで検索したい場合に,勤務先の記載がない人のデータが出てこなくなってしまいます。 初心者ですが,よろしくお願いいたします。

  • フォーム上での複数条件での抽出ができません

    工事の発注した年度と月をコンボボックスでそれぞれ入力した値で 抽出したいと思いましたが、なかなかうまくいきません。 Private Sub 抽出ボタン_Click() Me.FilterOn = False '抽出ボタンをクリックしたらcbo年度コードの値でフィルターをかける Me.Filter = "年度 = " & Me![cbo年度] And "発注予定 = " & Me![cbo月] 'フィルターを実行します。 Me.FilterOn = True End Sub 別のプロシージャで年と月を別々に抽出することはできたのですが、 「○年のさらに○月の工事」と絞り込むことができずに困っています。 このプロシージャを実行すると、以下のエラー分が表示されます。 ========================= 実行時エラー '13': 型が一致しません。

専門家に質問してみよう