マクロで複数ファイルからデータ抽出と貼り付け

このQ&Aのポイント
  • マクロを使用して、「重点」ファイルと「田中」ファイルからデータを抽出し、貼り付ける方法を教えてください。
  • 「重点」ファイルには、シート「入力」と「集計」があります。月末に全担当者の項目数を集計するために処理しています。
  • 「田中」ファイルには、シート「4月~3月」が12シートあります。K列には合計数が入っています。この合計数を「重点」ファイルのE列に貼り付けたいです。マクロの作成方法を教えてください。
回答を見る
  • ベストアンサー

マクロ 違うファイルから抽出して貼り付け

使うファイルは「重点」ファイルと「田中」ファイル 【重点】ファイルには シート:入力 シート:集計 とある このファイルは月末に私だけが全担当者の項目数の集計を出す為に処理しています。 シート:入力には 既に作成しているリストボックスがあり→列A~Cに(各名前60名) Dに月(4月~3月) E~G項目(各項目10件) その隣にコマンドボタンで検索と保存を作成しています。 そのA~Cのリストボックスの中から【名前】【月】を選び検索を押すとB15~B25まで名前が出て、C15~C25月が出て、E15~E25項目が出る。 シート:集計にはシート:入力の各名前60名・4月~3月・各項目と(E15~E25)に入力した数がピボットテーブルに反映しシート:集計に表示されるようになっています。 ここからどうしてもわからないのですが、 【田中】ファイルには シート:4月~3月 12シートある。 12シート全部、列・行に入っている項目は同じです。 このファイルは田中さんが各項目に添って入力しています。 その中の、K列(K5~K10)に合計数が入っています。 このK列の合計数を「重点」ファイルのE列(E15~E25)に貼り付けたいのですが、どのようにマクロを作成したらよいのでしょうか? 【重点】ファイル シート:入力のE15~E25に、【田中】ファイル以外各担当者名のファイル60ファイルを開きK5~K10の合計数を入力しています。 これに手間がかかっています。 この【重点】ファイルのE15~E25に貼り付けた後は【田中】ファイル又各担当者のファイルは保存しません。開いて参照しているだけです。 どうかお力をお貸し下さい。 宜しくお願い致します。

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

  • ベストアンサー
  • mt2008
  • ベストアンサー率52% (885/1701)
回答No.3

当方の環境ではそのエラーは出ないので何とも言えないのですが、シートにズームの設定などがされているとメモリ不足エラーがでる事があるらしいです。該当しませんか? Application.ScreenUpdating = False / True はこのエラーに有効かどうかは解りませんが、処理速度は上がるはずです。

mmhh8989
質問者

補足

何度もすみません。 これで成功します。 どうか宜しくお願い致します。 "C:\社内フォルダ\5020地区グループ\重点項目\重点集計システム\H25年度\各個人表\1グループ\南基地\田中.xls" 田中さん以外の方約50名は、 \1グループ\東京基地\田中.xls"のここからフォルダーが変わります。 グループ(1・2・3)、基地(南・北・西)、このような場合いはどうしたらよいのでしょうか? 下記のようなL44に1グループのフォルダ中の個人名を入力するとファイルが開くと言うこのレベルしか考えられません。 Workbooks.Open Filename:= _ "C:\社内フォルダ\5020地区グループ\重点項目\重点集計システム\H25年度\各個人表\1グループ\南基地\" & Range("L44").Value & ".xls" これだと2グループからどうしたらよいのかわかりません。 理想は、個人名を入力すると個人名で保存されているエクセルファイルが開くと言うものにしたいのですが・・・。

その他の回答 (3)

  • mt2008
  • ベストアンサー率52% (885/1701)
回答No.4

大分本題から離れちゃいましたね(^^; シート上に個人別シートを登録しておくリストと、今回の対象個人ファイルを選択するエリアを作っては? 添付の図ではA5:B9に対象となる個人名のファイルと、そのフォルダを入力してあります。 A2の選択個人名は、「データの入力規則」の入力値の種類を「リスト」にしてA5:A9の中から個人名ファイルを選択できるようにします。 で、B2セルには↓の式を入れます。 =IF(A2="","",VLOOKUP(A2,A5:B9,2,FALSE)&A2) これで、個人名ファイルを選択すると、B2セルにはフルパスでファイルの情報が表示されます。 個人名ファイルを選択後、ボタンか何かでマクロを起動させ、マクロではA2セル、B2セルの値を参照するようにしては如何でしょう。

mmhh8989
質問者

お礼

何度もありがとうございました。 本当に助かりました。

  • mt2008
  • ベストアンサー率52% (885/1701)
回答No.2

> ご質問なのですが、i とは何を指しているのでしょうか? iは変数です。 直前の For i = 5 To 10 で5~10になるように宣言してありますので、 i=5 の時 .Range("E" & i + 10) = Evaluate("Sum('[田中.xlsx]4月:3月'!K" & i & ")") は、↓と同じことになります。 .Range("E15") = Evaluate("Sum('[田中.xlsx]4月:3月'!K5)") この時、田中ブックの4月:3月シートのK2の合計値を、自シートのE15セルに代入しています。

mmhh8989
質問者

補足

すごいです。 本当にわかりやすいご回答、本当にありがとうございました。 ですが、実行すると次は「メモリ不足です。完全に表示できません」と出ます。シート数は少ないはずなのですが・・・。何か対策等ありますでしょうか? 私なりに勉強したところ、 マクロの先頭にApplication.ScreenUpdating = False マクロの最後Application.ScreenUpdating = True をいれると少しは改善されるとあるのですが?これは有効でしょうか? また、何か違った対策等ありますでしょうか? 宜しくお願い致します。

  • mt2008
  • ベストアンサー率52% (885/1701)
回答No.1

質問文の前半は良くイメージできなかったので考慮していません。悪しからず。 「田中」ブックの4月~3月シートのK5:K10合計値(各シートの串刺し集計値)を、自ブック(「重点」)のSheet1のE15:E20(質問文ではE15:E25でしたが、数が合わないのでE20までとしました)に貼り付けるマクロのサンプルです Sub Sample()   Workbooks.Open Filename:="C:\Temp\田中.xlsx", ReadOnly:=True   With ThisWorkbook.Sheets("Sheet1")     For i = 5 To 10       .Range("E" & i + 10) = Evaluate("Sum('[田中.xlsx]4月:3月'!K" & i & ")")     Next i   End With   Windows("田中.xlsx").Close End Sub

mmhh8989
質問者

補足

ご対応ありがとうございました。 .Range("E" & i + 10) = Evaluate("Sum('[田中.xlsx]4月:3月'!K" & i & ")")     Next i 勉強不足な私にお教え下さい。 ご質問なのですが、i とは何を指しているのでしょうか? 宜しくお願い致します。

関連するQ&A

  • 【Excel】マクロを使って、自動集計ができるようにしたいと思っています。

    こんにちは。 宜しくお願い致します。 アクセスがあったデータをピポッドテーブルでまとめ、さらに集計結果を出したいと思っています。 ピポッドテーブルを作成するまではマクロの自動記録でどうにかなったのですが、その後の集計結果のところでとまどっています。 <データの現状> ※ピポッドテーブルで出したデータは、1・2行目が空白、3~5行目に項目名が入っており、6行目からデータが入っています。何行までデータが入っているかはその月によって異なり、行の一番最後はA列に「総計」と入力されています。 ※A~C列は項目名(日付や商品名など)が入っています。 D列以降は合計などが入っており、ここで基準として使いたい項目はすべて4行目に入っています。 列の数は項目によって増減します。 項目の一番最後は「総計」です。 マクロで集計したいのは次の作業です。 (1)「Sheet1」を全コピー→「Sheet2」に形式を選択して貼り付け→値貼り付け (2)貼り付けたシートで、D列以降、4行目の項目が「集計1」「集計2」「詳細集計」「総計」以外のものも列を表示しないにする ※D列から始まって、「集計1」の前の列までを表示しないにするのと、「集計1」の次の列から「集計2」の前の列までを表示しないにしたい。 例えば、H列に「集計1」・L列に「集計2」が入力されている場合は「D~G列」「I~K列」を表示しないにしたい。 (3)詳細集計の列を1列選択し、列を1行挿入。挿入した列4行目のセルに「合計」と入力。 (4)挿入した列のところに、6行目以降、A列に「総計」と入っている行まで数字のデータが入っているところ(A列で「総計」と表示されている行まで)は、「集計1」と「集計2」のセルの合計をそれぞれ表示し、枠線を入れる。 (5)一番先頭に1列挿入し、6行目から元A列の「総計」と表示されている前までの通し番号を入れる。 (6)「総計」の次の列の4行目に、「ゼロ数」と入力し、5行目に(3)で挿入した列、A列に「総計」と入っている1行前までの範囲で「0」表示があるセル数を表示。 (7)ゼロ数と入力したの次の列の4行目に「ゼロ率」と入力し、先に出した「ゼロ数」を(5)で入力した通し番号の一番最後の数で割った数を表示。 (8)入力終えた後はA1のセルを選択。 以上になります。 長いですが、どなたか教えてください。 宜しくお願い致します。

  • エクセルデーター集計について

    現在1月から12月まで各月毎のシートと集計表があります。 そのシート内の集計表は  A  ・   B     ・ C ・ D ・ E ・・・・・・・・BB 1担当・顧客ナンバー・日付・苗字・名前・・・・・・・・ 2田中 3佐藤 4小川 5田中 6田中 7佐藤 8井上 ・ 150位まで(行については月により変動あり) と各列と行にデータが入力されてます。 担当者は12名で元になるデータ表には活動順に担当者名が入力されてます。 やりたい事は (1)各担当別の月別集計と年間集計シート作成 月毎にシートを作成でなく、あくまで担当者毎の月毎集計と12か月の年間合計転記を同一シートにする事は可能でしょうか。(個人成績表の為) またその時担当別にシート作成が出来るとうれしいです。 (2)全担当者の月集計一覧シート 一つのシートに全担当者の月別集計(1月から12月)を一覧にしたいのですが、各担当者の月別合計欄を転記の認識なのですが、他にいい方法もありますか? (3)全担当者の年間集計一覧シート (2)の合計を転記の認識です。他にありますか? 以上3点を作成したいと思ってます。 (1)が出来れば何とかなるような気はしますが、どなたかご教授お願い致します。 項目はA~BBまで横一列にあり 担当者の入力も横一列なのでvlookupでも考えましたが、マクロで何とか出来るなら挑戦してみようかと思ってます。 集計表自体他のブックからのリンクやなんやらで20M位ファイルサイズがあり、今回の(1)(2)(3)は新規ブックに作成したいと思います。

  • 行抽出マクロについて教えてください。

    エクセルで sheet1このように入力されております。 A列には製造番号 B列には日付 C列単価 D列記号がすでに入力済みです。 _____________________________________ 行/列  A    B    C    D 1   123456   4/5   1020   K 2  789456  5/2   500   D 3  789789   6/2   9000   F 4  456789   6/2   5000   S ------------------------------------- sheet2には製造番号が500行ランダムに入力済みです。 _____________________________________ 行/列  d    E    F    G 1   456789 2  789456  3  789789 4  456789 5    : 6   : ------------------------------------- ボタンをおしたら一致した製造番号のEFG列にsheet1の日付・単価・記号を自動的に入力したい。どなたかご教授お願いいたします。

  • 行抽出マクロについて教えてください。

    エクセルで sheet1このように入力されております。 A列には製造番号 B列には日付 C列単価 D列記号がすでに入力済みです。 _____________________________________ 行/列  A    B    C    D 1   123456   4/5   1020   K 2  789456  5/2   500   D 3  789789   6/2   9000   F 4  456789   6/2   5000   S ------------------------------------- sheet2には製造番号が500行ランダムに入力済みです。 _____________________________________ 行/列  d    E    F    G 2   456789 3  789456  4  789789 5  456789 6    : 7   : ------------------------------------- ボタンをおしたら一致した製造番号のEFG列にsheet1の日付・単価・記号を自動的に入力したい。どなたかご教授お願いいたします。

  • エクセルの集計について教えてください

    エクセルの集計について教えてください 添付のように、A列からは入力用 A列 日付(複数月にまたがる) B列 金額 C列 項目 E列からは集計用として E列 項目 F列からは月ごとに集計できるような表を作りました 集計用は、また別途ほかのシートで参照して使用する予定です A列には、今後も次々データを足していく予定です 月単位でデータを抽出したのち、項目ごとに合計を算出したいのですが、どの関数を組み合わせればいいのかわかりません。 エクセルはほぼ初心者です ピボットテーブルを使用してもよいのですが、ほかのシートで参照できる方法を教えてください よろしくお願いします

  • INDIRECT関数が上手く使えません。

    集計シートF334セルに、「=SUMIF(貼付!E$2:E$300,A334,貼付!K$2:K$300)」と 入力して、貼付シートのE2:E300の範囲から、集計シートA334の値を探して、 貼付シートのK2:K300の値を合計して、集計シートF334セルに表示させています。 集計シートF338セルに「K」と入れて、集計シートI338セルに「=F338&2&":"&F338&300」と 入力して、集計シートI338に「K2:K300」と表示させています。 貼付シートで必要な列が、K列からJ列・H列など月ごとに変わるため、 INDIRECT関数を使用して、集計シートF338セルに入力した値から集計シートF334セルの 値を更新しようと思っています。 そこで、集計シートF334セルの値を次のように変更しましたが、求めている結果が得られません。 0と表示されます。どこが誤っているのか、教えていただけないでしょうか。 「=SUMIF(貼付!E$2:E$300,集計!A334,INDIRECT("集計!"&I$338))」

  • マクロの組み方について

    マクロの組み方についてなのですが、エクセル管理を任され困っています。 sheet1のC1に商品名、C2に型式、B5~B54に1~50(店ナンバー)が入っておりC5~C54にその店へ送る商品数が入っています。 同じくE5~E54に51~100の店ナンバー、F5~F54に送り数が入っています。 C4には店ナンバー1~50へ送る合計数が、F4には店ナンバー51~100へ送る合計数が入っており、その合計(店ナンバー1~100分)がC3に入っています。 コレをsheet2以降にある商品梱包箱のマップへ入力出来るようにしたいのです。 梱包箱は3段で1箱、1段に10×10の100入ります。 sheet2にはこのマップが3箱分の10×10が6つ分、 1段目がB2~K2→B3~K3と続きB11~K11まで、2段目が同様にN2~W11まで、3段目がZ2~AI11となります。 2箱目が列が同じでB15から始まりAI24まで、3箱目も列は同じでB28~AI37までとなっています。 それが送り数分sheet3、4と続きます。 店ナンバー数は50~100の間で変動します。 sheet2以降のマップには店ナンバーへ送る数と共に店ナンバーを入力したいのです。 例えば、店ナンバー1に63送るとするとまず開始のマスであるB2に店ナンバーの「1」を 63マス目であるD8にも店ナンバーの「1」を。で、その終了した行10×10のマス外、この段の場合B~Kの列を使っているのでLの列のその行に63と。 これを店ナンバー100まで入力されるようにしたいのですが可能でしょうか? 恥ずかしながら今まで印刷したものに電卓使って計算して手書きと手作業で行っておりました、こういう場合はマクロを組まなくても方法があるのでしょうか? ご教授頂ければと思います。

  • エクセル 複数ファイルから特定のデータを抽出

    いつもこちらでお世話になっております。 先日も同じような質問をさせて頂いたのですが、 ファイルの構成が変わってきてしまい、再度質問させて頂きます。 (元データ) A  B     C      D        E No 月1    月2     月2      氏名    1 2010/11  2010/8   2010/7    佐藤 2 2010/10  2010/8   2010/7    山田 3 2011/12  2010/8   2010/7    田中 4 2010/10  2010/8   2010/7    田中 ・ ・ 上記のデータが1年度あたり ファイル1(4シート+一覧シート) ファイル2(4シート+一覧シート) ファイル3(4シート+一覧シート) ファイル4(4シート+一覧シート) ファイル5(4シート+一覧シート) ※上記A列のNoは1シート内での連番。 のように構成され、それが6年度分(計30ファイル)あるという状態です。 別ファイルにて2010/10とセルに入力してやると、各ファイルのB~D列に2010/10 とあるデータだけ抽出して一覧にしてくれるようにしたいと考えております。 関数またはVBAにて処理する方法はありますでしょうか? お知恵を拝借願えれば幸いです。

  • マクロでのデータの抽出&貼り付けについて

    代理店ごとに伝票書類を作成するのに、マクロを組んでいます。 シート1のデータをオートフィルタで抽出して、シート2へ貼り付けますがうまくいかないので教えていただきたいです。 代理店は10社ほどあります。 代理店ごとの伝票(シート2以降)へはシート1の必要なデータのみ貼り付けたいです。 【シート1】 A B C D E 代理店名 合計 小計 消費税 注文No 代理店A ○○○ ・・・ ・・・ aaa 代理店B ××× ・・・ ・・・ bbb 代理店A  ●●● ・・・ ・・・ ccc 代理店C △△△ ・・・ ・・・ ddd 【シート2】「代理店A」 注文No 合計 aaa ○○○ ccc ●●● 下記のマクロが間違っているのは重々承知なのですが、一応記載します。 初心者なので必要な情報があれば、追記しますので教えていただければと思います。 ★エクセルは2003です ★貼り付けるときに1行目の「注文No」や「合計」の記載は必要なし ★オートフィルタで抽出後、必要な項目のデータのみ、シート2の各指定の列に貼り付けたい Sub 代理店A() With Worksheets("シート1").Range("A1") .AutoFilter Field:=1, Criteria1:="代理店A" .CurrentRegion.SpecialCells(xlVisible).Copy Worksheets("代理店A").Range("A1") .AutoFilter End With Worksheets("代理店A").Activate End Sub

  • Excel マクロ 条件抽出貼り付け等

    いろいろ拝見させていただいているのですが うまく設定できず、困っています。 使用者が数名いる(そしてその数名がそれぞれで集計を取りたい)ので シートのタブ名、シート数、基準となる年月が固定されないことが前提です。 集計のシートがあります(このシートもたとえば2月・3月・4月…と数ヶ月分で複数シートになる可能性があります) ・A1セルには、起点となる年月が入力 ・A3~A6セルには、目標・予定・実績・備考が入ります。 各支店のシートがあります(支店数は、使用者によって様々です。最大で25くらいになるかと思いますが、書式は同じです) ・A1セルには、支店名(タブを変更したら、A1セルが連動するように数式を組んでいます) ・A2セル、A8セル、以降6行毎に、年月日(1シートで12ヶ月分予定) ・A3~A6セルには、目標・予定・実績・備考が入ります。 ・表の一塊は、A2:AB6です。 各支店のシートから集計シートに転記をしたい。 A支店~たとえばG支店までの7支店があり、 (1)集計シートA1セルにある年月を基準に、各支店シートの該当月の表の検索をかけ (2)集計シートのA2以降6行毎(各支店シートでは年月を入れているセル)のセルに支店名を張り付け (3)各支店シートA3:AB6の内容を、集計シートのA3:AB6に値と数値の書式貼り付けをしたい  (表一塊毎) (4)集計シートのA支店・B支店の貼り付けの間には、1行挿入をしておきたい 同じような質問が…というお返事があることを承知でお伺いしています。 いただいた回答を基に、勉強をしていきたいと思っていますので なにとぞよろしくお願い申し上げます。

専門家に質問してみよう