• ベストアンサー

エクセルで複数の条件を抽出し自動的に別シートに反映する方法を教えてください。

こんばんは。教えてください。 元データ(sheet1)を更新するたび 2つの条件にあったデータを 別シートに自動的に抽出したいので 適した関数がありましたら教えてください。 ◇シート1◇ ※元データ  A      B     C     D     F 1 氏名 役職 部署 年齢 移動時期      2 山田 社員 開発 45  未調整 3 田中 社員 人事 42  4/1~ 4 鈴木 派遣 企画 30   5 高橋 役員 人事 50  未調整 6 坂野 社員 企画 33  未調整   7 井上 派遣 企画 29  未調整 ◇シート2◇ ※部署が人事で移動時期が未調整の人のみ抽出  A      B     C     D    F 1 氏名 役職 部署 年齢 移動時期  2 高橋 役員 人事 50  未調整 補足 ・元データ(シート1)はこれからもデータを追加するので  その度、シート2、シート3もそれぞれ自動で反映されるようにした いです。 ・マクロ、VBAは知識がないので  関数で作成したいです。 ・できるだけエラー(#N/Aなど)表示されないようにしたいです。 説明が不十分で伝わりにくいかと思いますが よろしくお願いします。

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

  • ベストアンサー
  • merlionXX
  • ベストアンサー率48% (1930/4007)
回答No.3

> 部署を"人事"と"企画"の両方で抽出する条件を追加する おはようございます、merlionXXです。 Operator:=xlOr, Criteria2:="=企画" と、OR条件で"企画"を加えれば可能です。 一応、各コードの動きに解説もつけておきました。(解説は’でコメントアウトしてますのでこのまま貼り付けてもOKです。) Private Sub Worksheet_Activate() 'このシートがアクティブになったら自動実行 With Sheets("Sheet1") 'Sheet1対して .AutoFilterMode = False 'オートフィルタ終了(あればエラーになるため) .Range("A1:E1").AutoFilter 'A1:E1にオートフィルタ設定 .Range("A1:E1").AutoFilter Field:=3, Criteria1:="=人事", Operator:=xlOr, Criteria2:="=企画" '左から3つ目のフィルタを"人事"と"企画"のOR条件で抽出 .Range("A1:E1").AutoFilter Field:=5, Criteria1:="未調整" '左から5つ目のフィルタを"未調整"で抽出 .Range(.Range("A1"), .Range("A1").SpecialCells(xlLastCell)).SpecialCells(xlCellTypeVisible).Copy Range("A1") 'A1から最終セル範囲の可視セルをこのシートのA1以降に貼り付け .AutoFilterMode = False 'オートフィルタ終了 End With 'Sheet1に対する記述おわり End Sub

usamingolf
質問者

お礼

朝からご回答いただき、助かりました。 ご丁寧にコメントまで入れていただき、 大体の内容を理解できたので、編集して資料作成間に合いました! どうもありがとうございました!

すると、全ての回答が全文表示されます。

その他の回答 (2)

noname#204879
noname#204879
回答No.2

》 マクロ、VBAは知識がないので関数で作成したいです。 関数の知識も必要ない[フィルタオプションの設定]は如何ですか? 「エラー(#N/Aなど)表示され」ません。

usamingolf
質問者

お礼

ご回答ありがとうございます。 フィルタオプションの設定をwebで調べてみましたが とても便利ですね。 応用を使いこなせれば今回の表に対応できそうです。 どうもありがとうございました。助かりました。

すると、全ての回答が全文表示されます。
  • merlionXX
  • ベストアンサー率48% (1930/4007)
回答No.1

それは関数では非常に難しいですね。 元データの名前はSheet1でいいんですね? 抽出先のSheet名はSheet2でいいんですね? VBAは知識がないなら勉強しましょう。 簡単ですので以下の手順を試してください。 1.Sheet2のタブを右クリックし、「コードの表示」を選択。 2.出てきたVisualBasicEditor(白い部分)に下記のコードをコピペ。 '*****ここから下をコピペ***** Private Sub Worksheet_Activate() With Sheets("Sheet1") .AutoFilterMode = False .Range("A1:E1").AutoFilter .Range("A1:E1").AutoFilter Field:=3, Criteria1:="人事" .Range("A1:E1").AutoFilter Field:=5, Criteria1:="未調整" .Range(.Range("A1"), .Range("A1").SpecialCells(xlLastCell)).SpecialCells(xlCellTypeVisible).Copy Range("A1") .AutoFilterMode = False End With End Sub '*****ここより上までをコピペ***** 3.AltキーとF11キーを同時に押してワークシートへもどります。 これでSheet1に入力(変更)したあとでSheet2を選択すると、そのようになります。

usamingolf
質問者

お礼

ご回答ありがとうございます。 求めていたものは、まさに、コレです!! セル番号など変更して利用させていただきたいのですが 部署を"人事"と"企画"の両方で抽出する条件を追加することが 可能であればどのような条件を入力すればよいでしょうか? 入力箇所はわかるので 追加のコード(?)を教えていただけると幸いです。 よろしくお願いいたします。

すると、全ての回答が全文表示されます。

関連するQ&A

専門家に質問してみよう