• ベストアンサー
※ ChatGPTを利用し、要約された質問です(原文:エクセル 複数のシートからデータの摘出)

エクセル複数のシートからデータの摘出

kikitaiOKの回答

  • kikitaiOK
  • ベストアンサー率55% (10/18)
回答No.3

A、B、C・・・が列名 1、2、3・・・行名 各シート名は「Sheet1~Sheet20」 集計用シート名は「集計用」 とすると For i = 1 To 20 シートを増やす場合、この20を増やしたシート名の数字に変更すればよい With Worksheets(i)  シート名が「Sheet1~x」で統一されているのであれば  With Sheets("Sheet" & i)に変えたほうがいいかも? .AutoFilterMode = False .Range("A1:E1").AutoFilter  各シートの"A1:E1"でオートフィルタをするから  たぶん"A1:D1"の間違いでは? For k = 2 To 3  次の集計シート検索条件のある「行番号」を指定してあると思いますので  検索条件が増えればそのぶんこの3を増やしてあげれいいと思います。 .Range("A1:E1").AutoFilter Field:=5, Criteria1:=Range("B" & k).Value  "A1:D1"の間違い?であってれば、部署があるのは左から3番目の列だからField:=3  検索条件の  Range("B" & k).valueの部分も  Sheets("集計用").Range("B" & k).value  にしたほうが後から見て分かりやすいと思います。   .Range(.Range("A2"), .Range("A1").SpecialCells(xlLastCell)).SpecialCells(xlCellTypeVisible).Copy Range("A65536").End(xlUp).Offset(1) .AutoFilterMode = False Next k End With Next i End Sub これでとりあえず検索条件のデータは集計用のシートに出てくるようになるはずです。 このあとどのように重複チェックされてるのかはわかりませんが・・・

mirai5455
質問者

お礼

ありがとうございます。 ご指摘の所間違っていました。 これでは質問する以前の話ですね・・・ とりあえず2010では摘出出来るので 作業を進めています。 もしよければもう一つ シートに摘出データが存在しないと 項目だけ摘出されてしまいます。 いい方法はなでしょうか? わがままですいません。

関連するQ&A

  • VBA で抽出したデータが一定数まできたら、異なるセルに折り返して抽出するように設定したい。

    VBA で抽出したデータが一定数まできたら、異なるセルに折り返して抽出するように設定したいです。 ◇シート1◇ ※元データ  A      B     C     D     1| 氏名 役職 部署 年齢      ―――――――――――――――― 2| 山田 社員 開発 45  3| 田中 社員 人事 42   4| 鈴木 派遣 企画 30   5| 高橋 役員 人事 50 6| 坂野 社員 企画 33   7| 井上 派遣 企画 29 ◇シート2◇  条件1.役職は"役員"で、部署が"人事"の人の   氏名、役職、部署をA3から順に抽出する 条件2.A列のデータが9行目まできたら     D3に抽出されるようにする  A      B     C     D     E    F 1 氏名 役職 部署  氏名 役職 部署 2 高橋 役員 人事   3 4 5 6 7 8 9 ―――――――――――――――――――― ちなみにこのサイトで以下のコードを作成してもらいましたが これだとデータ元の全ての行が抽出されてしまいます。 Private Sub Worksheet_Activate() With Sheets("Sheet1") .AutoFilterMode = False .Range("A1:E1").AutoFilter .Range("A1:E1").AutoFilter Field:=2, Criteria1:="役員" .Range("A1:E1").AutoFilter Field:=3, Criteria1:="人事" .Range(.Range("A1"), .Range("A1").SpecialCells(xlLastCell)).SpecialCells(xlCellTypeVisible).Copy Range("A3") .AutoFilterMode = False End With End Sub 条件2のデータを折り返す条件が難しいようであれば 条件1の3列のみ抽出する方法で結構ですので教えてください。 よろしくお願いします。

  • Excelマクロで他シートへの抽出:エラー

    こちらの質問 http://okwave.jp/qa/q4760155.html を参考に、エクセルマクロを作りました。 Sheet1の10列目(J)に@が入っている行をすべて、 Sheet2に抽出表示します。コードは次になります。 Private Sub Worksheet_Activate() With Sheets("Sheet1") .AutoFilterMode = False .Range("A1:N1").AutoFilter .Range("A1:N1").AutoFilter Field:=10, Criteria1:="@" .Range(.Range("A1"), .Range("A1").SpecialCells(xlLastCell)).SpecialCells(xlCellTypeVisible).Copy Range("A1") .AutoFilterMode = False End With End Sub このマクロを実行すると、確かにSheet2では抽出が行われるのですが、 同時にSheet1の内容も抽出された内容に変わってしまいます。 どこに問題があるのでしょうか。 よろしくお願いします。

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

    こんばんは。教えてください。 元データ(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など)表示されないようにしたいです。 説明が不十分で伝わりにくいかと思いますが よろしくお願いします。

  • エクセルのVBAの変更点がわからないので教えてください

    下のようなプロシージャをエクセルに組み込んでいますが、次のようなことができるように変更したいので教えてください。 なお、プロシージャは正常に作動しています。 Private Sub Worksheet_Activate() With Sheets("シート名") .AutoFilterMode = False .Range("A1:d1").AutoFilter .Range("A1:d1").AutoFilter field:=1, Criteria1:="<>" .Range(.Range("d1"), .Range("A1").SpecialCells(xlLastCell)).SpecialCells(xlCellTypeVisible).Copy Range("A1") .AutoFilterMode = False .Range("A1:d1").AutoFilter End With End Sub 修正してできるようにしたいこと 1、with sheets("シート名")のシート名にシートがアクティブになったとき、そのシート名が自動で入るようにしたい。 ※シートの数は6シーとあります。 2、セルd1のデータからその行のデータ全体がコピーされるので、必要なセルのデータのみがコピーできるようにしたい。

  • エクセル ○○以外を抽出

    (シート1) A     B      1 リンゴ   沖縄    2 みかん  北海道 3 かき    滋賀 4 さんま   山口 5 かき    滋賀 6 いわし   東京 7 リンゴ   沖縄 で、リンゴ・みかん・かきの行以外を別シートに自動反映する方法ありませんか? リンゴだけを抽出といった方法は分かったのですが、、、      ↓(ちなみにそれは) Private Sub CommandButton3_Click() With Sheets("Sheet1") .AutoFilterMode = False .Range("A1:M1").AutoFilter .Range("A1:M1").AutoFilter Field:=1, Criteria1:="リンゴ" .Range(.Range("A1"), .Range("A1").SpecialCells(xlLastCell)).SpecialCells(xlCellTypeVisible).Copy Range("A1") .AutoFilterMode = False End With End Sub のようにやりました。 すんません、教えてください!!!

  • 別のブックから今のシートに自動更新

    元データ(ブックAシート1)を更新するたび 条件にあったデータを 別ブックのシートに自動的に抽出したいのですが ブックBを開いたらブックAが開きシート1の抽出をブックBシート1にコピーしたいのですがVBAコードを教えてください。 ◇ブックAシート1◇ ※元データ  A      B     C     D     F 1 氏名 役職 部署 年齢 移動時期      2 山田 社員 開発 45  未調整 3 田中 社員 人事 42  4/1~ 4 鈴木 派遣 企画 30   5 高橋 役員 人事 50  未調整 6 坂野 社員 企画 33  未調整   7 井上 派遣 企画 29  未調整 ◇ブックBシート1◇ ※部署が人事で移動時期が未調整の人のみ抽出  A      B     C     D    F 1 氏名 役職 部署 年齢 移動時期  2 高橋 役員 人事 50  未調整 説明が不十分で伝わりにくいかと思いますが よろしくお願いします。

  • エクセルマクロ 抽出したデータを別のシートへコピーしたい

    マクロ初心者のため、やり方が全くわかりません。 どなたか教えてください。 やりたいことは、 【1】シート名「データ」をA列でオートフィルタ抽出して、別シートにコピーする。 【2】別シートにコピーしたデータに外枠罫線をつける。 【3】シート名「データ」には塗りつぶしがあるので、別シートにコピーされた塗りつぶしは「なし」する。 【4】シート名「Sheet1」の1~2行目をコピーし、別シートの1~2行目に挿入し、シート名「データ」に戻る。 コピーするシートはあらかじめ作成しています。 簡素化の方法がわからないので、 とりあえず自分で作ってみたものが下にあるものです。 繰り返す方法がわからないので、今はコピーして「あ行」の部分を書き換えています。(かなり面倒です) 最終的には、抽出されたそれぞれのシートを別々のブックにしたいとも思っています。 長々とすみませんが、どなたか教えてください。 よろしくお願いします。 以下、作成したマクロです。 Sheets("データ").Select Range("A1").Select Range(Selection, ActiveCell.SpecialCells(xlLastCell)).Select Selection.AutoFilter Selection.AutoFilter Field:=1, Criteria1:="あ行", Operator:=xlAnd Range("A1").Select Range(Selection, ActiveCell.SpecialCells(xlLastCell)).Select Selection.Copy Sheets("あ行").Select Range("A1").Select ActiveSheet.Paste Range("A1").Select Range(Selection, ActiveCell.SpecialCells(xlLastCell)).Select Selection.Borders(xlDiagonalDown).LineStyle = xlNone Selection.Borders(xlDiagonalUp).LineStyle = xlNone With Selection.Borders(xlEdgeBottom) .LineStyle = xlContinuous .Weight = xlMedium .ColorIndex = xlAutomatic End With Cells.Select Selection.Interior.ColorIndex = xlNone Sheets("Sheet1").Select Rows("1:2").Select Selection.Copy Sheets("あ行").Activate Rows("1:1").Select Selection.Insert Shift:=xlDown Range("A1").Select Sheets("データ").Select Range("A1").Select

  • エクセル VBA シートのコピーが上手く出来ない

    原因が分かりません。宜しくお願いします。 エクセルVBAで、フィルターを掛けたシートを別シートへコピーしています。 問題なく出来ていたルーチンでしたが、他の作業の影響か、 気がついたらコピー出来なくなっていました。 他のシートでも同じ方法でコピーを行っていますが、問題ありません。 問題のコーディングは以下のとおりです。 Worksheets("work2").Unprotect Worksheets("work2").Range("A:Z").ClearContents Worksheets("コピー元").Range("A5").AutoFilter Field:=6, Criteria1:=フィルタ請求年1, Operator:=xlOr, Criteria2:=フィルタ請求年2, VISIBLEDROPDOWN:=True Worksheets("コピー元").Range("A1").CurrentRegion.SpecialCells(xlVisible).Copy Worksheets("work2").Range("A1") Worksheets("work2").Protect Worksheets("コピー元").Range("A1").CurrentRegion.SpecialCells(xlVisible).Copy Worksheets("work2").Range("A1") の箇所では、エラーメッセージもでませんが、コピーもされていないことを確認しています。 どのような原因が考えられるでしょうか? または、どのような方法で原因追求が出来るでしょうか? ご回答お待ちしています。

  • Excel VBA 変数 ワークシートへ反映

    支店毎に売上集計を行うVBAを現在作成中です。 sheet3に支店名をリストにしており、ユーザーフォームのテキストボックスとコマンドボックスを配置し、テキストボックスに支店名を入力してコマンドボックスを押す事でsheet1の決まったセルに商品毎の金額の合算が出る様にしたいと考えています。 金額の集計表は別にあり、列の一番目に支店名、2番目に商品名、3番目に取引内容が反映されております。 今回ご相談させて頂きたいのは、ユーザーフォームのコマンドでどの様に入力したら良いかという事です。下記にユーザーフォームで現在までに入力した内容を記載します。 Sub 売上集計() If ActiveSheet.AutoFilterMode Then ActiveSheet.AutoFilterMode = False End If Dim Result As Long For i = 1 To 100 GroupName = Sheets(3).Cells(i, 1).Value Range("A1").AutoFilter field:=1, Criteria1:=Array("" & GroupName & ""), Operator:=xlFilterValues Range("A1").AutoFilter field:=2, Criteria1:=Array("商品名A"), Operator:=xlFilterValues    Range("A1").AutoFilter field:=3, Criteria1:=Array("売上", "返品"), Operator:=xlFilterValues result1 = WorksheetFunction.Subtotal(9, Range("BF:BF")) If ActiveSheet.AutoFilterMode Then ActiveSheet.AutoFilterMode = False End If End Sub 上記希望内容についてユーザーフォームのコマンドに入力すべき内容をご存知の方、何卒ご教示願います。

  • excelで複数条件で抽出する

    excel VBAで質問です。(初心者レベルです) A列からZ列までデータがあり、オートフィルタでE列で条件に当てはまるものと、E列では条件外だが、Y列では条件に当てはまるものを別シートに抽出したいと思っています。 Sub Macro1()   With Worksheets("Sheet1")     .Range("A1").AutoFilter _       Field:=5, Criteria1:="*条件*"     .Range("A1").CurrentRegion.SpecialCells(xlCellTypeVisible).Copy _       Worksheets("Sheet2").Range("A1")   End With End Sub Fieldを変えて、E列、Y列それぞれはできるのですが、データが重複してしまいます。 重複分を削除するため、セル入力で連番を降って、重複するものを削除しようとしましたがうまくいかず。 なにかいい方法はないでしょうか。