• ベストアンサー

【VBA】複数の条件、項目で別のシートへ1行ずつ

VBAで質問です とあるデータの一覧があります (サンプルでは「名前」「住所」「埋蔵」「状況」としています) このデータを、それぞれの項目で複数の条件(3件以上)で抽出し、 「住所」名のシートに順番に貼り付けていくのを自動で行う マクロがつくりたいのですが、どうにもうまくいきません オートフィルタでは2件までしか抽出できないので条件が3件以上になると 抽出ができなくなってしまいます どうかご教授のほどよろしくお願いいたします

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

  • ベストアンサー
  • keithin
  • ベストアンサー率66% (5278/7940)
回答No.1

逐一調べながら、単純にIf thenなどのような構造で仕分けていくだけです。 作成例:シート2,3,4に転記する sub macro1()  dim r as long  dim Target as string  for r = 2 to 13  select case cells(r, "D").value  case "東京"   target = "Sheet2"  case "大阪"   target = "Sheet3"  case "名古屋"   target = "Sheet4"  case else   target = ""  end select  if target <>"" then  worksheets(target).range("A65536").end(xlup).offset(1).resize(1, 4).value = _   cells(r, "A").resize(1, 4).value  end if  next r end sub

kazu999999
質問者

お礼

ありがとうございます。 こちらで試してみます。

関連するQ&A

  • エクセルで抽出したデータを別シートにコピーしたいです

    エクセル2003を使用しています。 例えば、以下のような表があります。  ABC 1あ10 2い15 3あ20 4 A列が条件となり、たとえば「あ」のデータだけ抽出して、そのデータを別シートにコピーします。 同じく「い」だけを抽出して、また別のシートにコピーします。 いままでは、オートフィルタで抽出して自分でコピーをして貼り付けしていましたが、日々データが次の行に追加になるので、毎回オートフィルタしてコピーするのは大変です。 関数か、マクロかVBAを使ってする方法はありますでしょうか。 できれば日々追加になるデータのみをすでにある別シートの前日までのデータの下に追加できるようになればいいと思うのですが。 知識が乏しくできません・・・ よろしくお願いいたします。

  • エクセルVBAでの複数条件でオートフィルタをする方法

    VBA初心者です。 例えば、シートに A  B 1 桃  100 2 柿  150 3 葡萄 400 というデータが書いてあって、ある時は「桃or柿」、またある時は「柿」だけ、「柿or葡萄」というようにVBAでオートフィルタをかけてデータを抽出したいと思っています。 その条件は、別にリストボックスが用意されていて、ユーザが選択した項目に該当するデータだけを取得したいのですが・・・ 不特定数の複数項目をオートフィルタの「or」条件で結ぶ事が出来ずに困っています。それともオートフィルタでは無理なのでしょうか? (知識が乏しくてすみません) どなたか良い解決策、または別策がありましたらご教授下さい。

  • 複数条件を別シートへ転記

    現在Excelにてカレンダーを作成中です。 シート1のカレンダーの内容は             2022 年  6 月            1  2  3  4  5           5件 3件 2件    5件   と日付にあった合計数を表示しています。 この合計数の元はシート2に一覧が有ります カレンダーの日付をダブルクリックした際に シート3へ抽出したいのですがいい方法が思い浮かびません。 A1セル”2022”、A3セル”6”、B1セル”1”が一致させたい為 シート2には抽出出来るようYEAR/MONTH/DAYでセルは分かれています。 ワークシートのVBAにしたいのですが教えて頂けます様お願いいたします。

  • エクセルのシート上でオートフィルターを使った際に関する、VBA上でのコードの記述について

    大変稚拙な質問の仕方をお許しください。 エクセルのシート上で、オートフィルターを使ってデータを抽出した前提で、VBAを使ってある作業をするためのマクロを組もうと思ったのですが、抽出されて表示された一番最初データの行を確定させるコードの記述が思い浮かびません。なにかいい方法はないでしょうか?よろしくお願いします。

  • Excel 複数シートから複数条件を別シートに

    Excel2007を使っています。 添付画像のように、A社、B社へ送った見積のうち、発注があったものだけを 別シートに月別一覧として表示させたいです。 A社、B社は別々のシートです。 初めのうちはシート毎にフィルタを使って抽出していたのですが、 データが大量にあるため、別シートで分かりやすく見れるようにしたいです。 また、当てはまる行のうち全ての項目を抽出するのではなく、添付画像のように指定した項目のみを表示させたいです。どなたか教えて下さい

  • 条件にマッチする行を抽出するVBAを教えてください

    アイデア、またはVBAプログラムの例を教えていただきたく、質問させていただきます excelで、添付画像のようなリスト管理表を作っています。 リストは600行近くになります。 やりたいことは、D3またはE3に商品名または保管庫を入力すると、リスト内から、合致する行だけが抽出される、というもの。 D3とE3は、どちらか片方にのみ条件が入る。D3とE3の内容を変更するとリアルタイムで抽出結果も変更されるようにしたい。 触る人が初心者なので、難しい作業を一切せずに、D3またはE3を打ちかえるだけで必要な項目だけのリストとなり、印刷するだけでいいようにしたいわけです。 本来ならオートフィルタですればいい話ですが、どうしてもD3という離れたセルの入力内容で抽出したいのです。 VBAでなく、D3のセル内容を使ってD8~のオートフィルタが行えるなら、それが一番理想です。 が、自分でやってみた限りはできませんでした。 フィルタオプションならどうかとやってみたところ、一回目は抽出できました。しかし、D3またはE3の条件を変更しても、リアルタイムで抽出結果が切り変わらない。 フィルタオプションの抽出結果を別のセルに出せばいいのですが、そうすると無駄な情報が残り、ただ印刷しただけでOK・・というわけにいきません。(印刷範囲を区切るとかでなく、シートの見栄えが必要な情報だけにならないと…扱う初心者が混乱します) 自分なりには、VBAにより、 D3・E3のセル内容が書き換わったらフィルタオプションの抽出結果をいったん同シートの別セルに出し、抽出結果部分だけを別のシートにカット&ペースト成形。そのシートを印刷させればよい。 という考えになりましたが、やってみたら、なぜか別のブックに同じものが形成され、抽出した結果だけ単独のデータにできません。 そもそももっと良いアイデアがあればそれをおしえていただきたい。 あるいは、VBAで目的達成できるように問題点をご指摘ください。 一応、プログラムを書いておきます ■添付画像のデータが入っているシート(『一覧』という名前のシート)内コード Private Sub Worksheet_Change(ByVal Target As Range) ' If Target.Column = 4 Then If Target.Row >= 3 And Target.Row <= 3 Then Call Filter Call copy End If End If End Sub ■サブルーチンFilter() 標準モジュールに記載 Sub Filter() ' Filter Macro 'フィルタオプションを使って同シート内「D1100」以降に抽出結果を出します ActiveWorkbook.Worksheets("一覧").Select '一覧表はD7~F1000。検索条件はD2~F3までの範囲に名前を付けたもの Range("一覧表").AdvancedFilter Action:=xlFilterCopy, CriteriaRange:=Range( _ "検索条件"), CopyToRange:=Range("D1100"), Unique:=False Range("A1").Select End Sub ■サブルーチンcopy() 標準モジュールに記載 Sub copy() ' ' copy Macro ' '抽出された内容(45行目~100行目まで)を別のシートにコピーします ActiveWorkbook.Worksheets("一覧").Select Rows("45:100").Select Selection.Cut ActiveWorkbook.Worksheets("抽出結果").Select Rows("4:4").Select Selection.Insert Shift:=xlDown Range("A1").Select End Sub

  • 【VBA】複数シートから抜き出したデータを集約

    【Excel2010】の  ●同一ブック内で、  ●sheet1~9の同一列から、  ●sheet10の任意列へ、  ●データを抜き出して、続けて表示させたい と思っています。 手動オートフィルタや、関数で試しましたが、 作業のたびにかなりの手間になります。 願わくばVBAマクロで対応できればと思っているのですが、 知識不足のため、うまくできませんでした。 具体的な画面も添付させていただきます。 ご教示いただきたく、よろしくお願いいたします。 <補足> sheet1~9のデータ行範囲は作業ごと・シートごとに変わります。 (データ列は固定です)

  • あるシートから条件に合うデータだけを別シートに抽出させる

    会社で上司に質問されたのですが、不明だったので教えてください。 元リストが入力してあるシート 番号 氏名 フリガナ 会社名   部署名 役職 参加費 1  太郎 タロウ  ○×株式会社 経理  課長 \1000 2  花子 ハナコ  株式会社△   総務      \1500 3  次郎 ジロウ  □□株式会社 人事  課長 \1000 このようなデータが100件以上あります。 この中から、参加日が1000円の人だけを下記のレイアウトで抽出をしたいのです。 抽出先リスト 番号 氏名 フリガナ 1  太郎  タロウ 3  次郎  ジロウ ※元リストは今後増える予定。 ※リストが増えた際の、再抽出はできるだけ自動でやりたい。 ※VBA(マクロ)は極力使いたくない(余計なメッセージが出ると余計混乱するので) フィルタオプションの設定を提案したのですが、「操作ごとに範囲を指定するのが面倒」とのことで却下されてしまいました。 オートフィルタで抽出して、コピペの方法も毎回コピペするのが面倒とのこと。 このわがままな上司を納得させる方法、ご存じないですか? もし分かる方がいましたら、ご教授下さい。 よろしくお願いします。 使用環境:Excel2000/WinXP

  • Excelで複数項目の抽出をするには?

    オートフィルターを使っての抽出は2種類(2個の条件)までは出来ますがそれ以上(3個・4個・5個・・・)は出来ましぇん。数ある生産品目の中から5種類の品目だけを抽出し、それに付随する情報を定期的に集計したいのです。現在は5種類を1個もしくは2個までオートフィルターを使い抽出しコピー→別シートにペースト→もう一度オートフィルターで抽出→コピー→別シートの続きにペーストするを繰り返して必要な情報を整理しています。一回の動作で5個(複数)の抽出が出来る方法を知っている方がいれば是非ご教授頂きたくお願い致します。PS自分なりにネットで調べてみたのですが見つかりませんでした、分かり易いホームページなどでも結構ですので宜しくお願い致します。

  • エクセル2003 条件抽出したデータを切り取り別シートへ貼り付け

    シート1にあるデータから3個のキーワードで抽出したデータを切り取り、シート2に貼り付ける方法を教えてください。  今までは抽出する条件のキーワードが2個以下だったので、オートフィルタのオプションで抽出したデータをコピーしてシート2に貼り付け、シート1で可視セルを選択して削除という方法をとっていました。  今回、条件にするキーワードが3個になったので、フィルタオプションの設定で、シート2のA1からA4にキーワードを入れて、検索条件範囲を指定してデータを抽出したので、今までの方法が使えなくなってしまいました。 参考までに、↓こんな感じです。 Sheets("Sheet2").Select Range("A1") = "条件" Range("A2") = "キーワード1" Range("A3") = "キーワード2" Range("A4") = "キーワード3" Sheets("Sheet1").Cells.AdvancedFilter Action:=xlFilterCopy, CriteriaRange:= _ Range("A1:A4"), CopyToRange:=Range("A6"), Unique:=False

専門家に質問してみよう