• 締切済み

エクセルVBAで2つの条件を満たすとき別ファイルに情報を吸い出す処理

エクセルVBAでファイルが2つあるとします。 (1) 情報の入ったエクセルファイル (ファイルコードが違うエクセルファイルが複数存在するとします) (例)情報.xls ファイルコード 001 1名前      A 2住所      東京都台東区      3電話番号    001-123-1425      4FAX       001-123-1435 (2) (1)を集計するエクセルファイル (例) ファイル  1名前 2住所      3電話番号   4FAX   001     A   東京都台東区  001-123-1425  001-123-1435 002     B   神奈川県    001-123-1426  ・・・ 003     C   東京都品川区  001-123-1427  ・・・ 004     D   東京都港区   ・・・ 005     E   群馬県     ・・・ 006     F   鹿児島県    ・・・ (2)のファイルを開いて、(1)の情報.xlsのファイルコード「001」を読んで (2)の集計シートの「001」の行にデータを貼り付けたいのですが、どうしたらいいでしょうか。 できたら、、(1)の情報.xlsの項目「1名前」と(2)の集計シートの項目「1名前」が一致した場合情報を貼り付ける!という処理を行いたいのですが。 どう書けばいいのでしょうか?

みんなの回答

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

下記補足の事。 「ファイルコード」ってなに?単なる列のデータ項目名? シート名? Googleで照会しても、それらしい情報は無い。また別の意味ではある (だからややこしい) 紛らわしい書き方をせず、会員コードぐらいのいみではないの? ーー (例)情報.xls ファイルコード 001 1名前      A 2住所      東京都台東区      3電話番号    001-123-1425      4FAX       001-123-1435 数字1,2,3・・は行番号的な意味か。 >(1)を集計するエクセルファイル どの項目も集計して無いじゃない。 === 縦のデータを横1行に組み替えただけでは。 そのとき(1)の会員(想像して)のデータ並びは 1名前      A 2住所      東京都台東区      3電話番号    001-123-1425      4FAX       001-123-1435 の後に 5名前      B 6住所      東京都北区      7電話番号    001-123-1426      8FAX       001-123-1436 ・・ のように並んでいるのか ーー シートが別になっているのか? >集計シート 私は集計とは数値の羅列とその合計を思うが。 集約とか一覧表化という意味か。 ーー 001は(1)で2度出現しないのか(ユニーク) ーー この質問は課題丸投げ。規約違反。 ロジック、すなわち文章ででも、やるべきことを整理して書いてみること。それからコード化するとき、わからない点を聞くべき。 想像で1例を書いてみると (1)(1)を読む。001を認識して(データ・シート名?) (2)(2)を開いて(その後開いたままで)、第2行目に横方向に項目データ内容を書いていく (3)次の(1)を読む(「次の」が何か私にはあいまいだが) (2)の最終行を捉え、その次の行に(2)を行う。 最終行を捉えるコードはわかってる? (4)(1)の終わりまで繰り返す。 以上の例で勘違いなどしていたら、指摘や補足してください。

excelvbajy
質問者

補足

(例)情報.xlsのファイルコードとは会員コードと同じ意味です。 情報.xlsというファイルが、それぞれの会員から送られてくるイメージで、届いた情報.xlsをsheet1に記載がある会員コード「001」を元に集計するエクセルファイル「集計.xls」へ転記したいと考えております。 1・2・3と書かれているのは行番号の意味です。 集計するエクセルファイル「集計.xls」はもともと 下記のような会員コード氏かは一致ない状態で、 会員コード  1名前 2住所      3電話番号   4FAX   001      002      003      004      005      006      会員コード001の情報.xlsを選択し VBAで作ったボタンを押すと・・・ 会員コード  1名前 2住所      3電話番号   4FAX   001     A   東京都台東区  001-123-1425  001-123-1435 002      003      004      005      006      会員コード001の行にデータが貼り付けられる感じにしたいのです。 説明不足で申し訳ありません。 よろしくお願いします。

  • n-jun
  • ベストアンサー率33% (959/2873)
回答No.1

情報.xlsの中には、ファイルコード「001」しかないのですか? 他も(002,003~)あるのでしょうか?

excelvbajy
質問者

補足

(例)情報.xlsのファイルコードとは会員コードと同じ意味です。 情報.xlsというファイルが、それぞれの会員から送られてくるイメージで、届いた情報.xlsをsheet1に記載がある会員コード「001」を元に集計するエクセルファイル「集計.xls」へ転記したいと考えております。 002、003の会員コードの入ったエクセルが一つずつ存在する形です。

関連するQ&A

  • VBAでたくさんのファイルを一つにまとめる

    いつもお世話になっています。VBAでファイルを順番に起動、処理を行いたいと思っています。 集計001.xls~集計100.xlsというファイルがあります。1ファイルにそれぞれの支店と数値があって、それを総合.xlsファイルに支店シートを作って貼り付けます。 つまり、集計001.xlsには 東京 大阪 福岡 100 100  100 200 300  500 100 400  600 400 500  100 とあり他ファイルも同じように入っています。(数値は適当です) それを総合.xlsでは東京シートに 集計001 集計002 集計003 100   400   500  200   300   400 100   400   300 400   200   400 と各支店にシートを貼付します。他に大阪シートや福岡シートもできます。 今、「総合.xlsの各支店シート作成」と「集計001.xlsの支店数値→総合ファイル支店シート貼付」はできています。即興で作ったのでかなりいい加減ですが。 問題は「数あるファイルを順番に開いては閉じること」と「ファイル名を取得して各列の1行目にその名前を代入」です。 総合.xlsは常に起動していますが、集計ファイルは途中なかったりします。 そのために、いちいち手動で集計ファイルを起動して、コピペマクロを動かし、手動で集計ファイルを閉じています。 かなりわかりにくい説明だとは思いますが(やっている私もたまに勘違いしています)、ファイルを順番に動かすいい方法ってないでしょうか?できれば001 → 100の順番でいきたいんです。手動だとある時順番を間違えそうだし、ファイル名を1行目に入力するのも面倒なので。 すごくわかりにくいですよね。どうやったら文字列のファイル名をカウントする感じで動かしていくのかわからなくて・・・。どうかお知恵を貸してください。よろしくお願いします。

  • EXCEL VBAで別ファイル作成

    エクセル97です。 エクセルファイル AAA.xls のすべてのワークシートのうち、セルA1に TRUE がはいっているもの、(枚数はそのときにより不定です。)のみをコピーして、別のエクセルファイルを作成したいのです。 その際、新しいファイルに貼り付けるのは書式と値のみで、シート名は 元ファイルのシート名と同じにしたいのです。 どのようなVBAを書けばよいかご教示ください。 (AAA.xls にはワークシート以外にグラフシートやダイアローグシートが入っています。)

  • エクセルデータを別のエクセルファイルに自動で書き込む方法

    Excel 2003を利用している初心者です。 質問させていただきます。 エクセルのシートのデータを別のエクセルに自動で書き込んでくれるような仕組み(マクロ?)の作成方法を教えてください。 具体的には、 A.xls内の ---------------------------------------------------------------- 名前       住所     電話番号    登録日 山田太一    東京都豊島区  0309990999   2005/11/01 宮田太一    東京都港南区  0309990999   2005/11/01 ・          ・      ・      ・  ・          ・      ・      ・ ---------------------------------------------------------------- のようなのデータを、横列単位で ---------------------------------------------------------------- 名前:山田太一    登録日2005/11/01 住所:東京都豊島区  電話番号:0309990999   ---------------------------------------------------------------- のように、項目のみを記載してある、B.xlsファイルに、自動で書き込むしたいのですが、その場合、どのような方法があるのでしょうか? エクセルに関しては、ずぶの素人なので、どのような方法があるかもわからず、漠然と質問してしまいましたが、 何卒よろしくお願いいたします。

  • Excel VBA別ブックのシートをコピーするには

    Excel2010のVBAで別ブックのシートをコピーしてくる方法 Excelファイル(C:\test\BOOK2.xls)のシート名が TESTというシートを自分のExcelファイル(C:\doc\BOOK1.xls)に コピーするにはどのように記述すればよいのでしょうか。 ・コピー先:自分のExcelファイル(C:\doc\BOOK1.xls)  VBAのコードがあるファイルです ・コピー元:C:\test\BOOK2.xlsのTESTシート  なお、TESTシートを持つ同じ名前(BOOK2.xls)のファイルが  別フォルダにもあります   Workbooks( )の引数にファイル名(BOOK2.xls)は指定できるのですが、 フルパス名(C:\test\BOOK2.xls)で指定できないので困っています。

  • エクセル、別シートへ情報の移し方

    エクセルでこんなことは出来ますでしょうか。。。 Sheet1   名前 電話番号    住所 1 田中 03-1234-5678  東京都東京区東京11111  2 鈴木 03-1234-5678 東京都東京区東京11112 3 小林 03-1234-5678 東京都東京区東京11113 4 斎藤 03-1234-5678 東京都東京区東京11114 5 清水 03-1234-5678 東京都東京区東京11115 6 中村 03-1234-5678 東京都東京区東京11116 という表があったとしてSheet1は自分で入力をします。 上記の左の番号をいずれかに入力するとSheet2の別の表に個々の名前や電話番号等の情報を一気に反映させることは可能でしょうか。 「=Sheet1A1」等を入力すると別のシートに反映されるという情報はあったのですが、 それでは毎回「A1」の部分を変えなくてはいけないので違うなと思い方法があれば教えていただきたいです。 言葉足らずでわかりずらい部分がありましたら申し訳ございません。。。

  • 【2003】VBA 別ファイル特定シートへのコピペ

    下に書いてあるようなことをしたいのですが、勉強するのも初めてで 現段階の自分の知識ではどうにもなりません。 一応、自力でできたのはフォルダ内の.xlsファイルがなくなるまですべて開くというとこだけでしょうか・・・ お手数かけますが、ご教授お願いします。 参照するシートやファイルは既に存在しているものとします。 <固定値> C:\blue\red\ 'ここをカレントディレクトリと呼ぶ C:\yellow         '集計ファイルはこのディレクトリに置いてある' C:\yellow\集計_2011.xls <ファイル配置> カレントディレクトリ配下にはデータファイルがn個入っている。 1_data.xls 2_data.xls 3_data.xls ・ ・ <数字>_data.xls ◆マクロの動作内容 (1)C:\yellow\集計_2011.xlsが開かれていない場合はファイルを開き 既に開いている場合は(2)へ進む。 (2)カレントディレクトリ配下の*_data.xlsファイルを開く (3)開いたファイルのシート名「Second」を開き、セルC5を参照する (4)下記の通り分岐する((3)の結果) C5=one ならば yellow\集計_2011.xlsのシート名「English」を選択 C5=eins ならば yellow\集計_2011.xlsのシート名「German」を選択 C5=un ならば yellow\集計_2011.xlsのシート名「French」を選択 (5)dataファイルのA6を起点とし、下記の範囲をコピーする 行:A6~(上から数えて最後に空白でないセルA*) 列:A列からZ列まで →A6:Z*の範囲をコピー(これを#とする) (6) #をyellow\集計_2011.xlsに追記形式でコピペする →(4)で選択したシートに貼り付ける →貼り付けるセルは、B10を上から数えて最初に空白のセルを起点として、#を貼り付ける (7)開いていたdataファイルを閉じる (8) カレントディレクトリのdataファイルがすべてに(2)から(7)を繰り返す

  • Excelデータを別のExcelファイルに引っ張ってシート別に一括で変更したい

    教えてください。 Excelのファイルから別のExcelファイルにデータを引っ張りたいのですが ='[ファイル名.xls]1'!$A$1 と入力するとデータを引っ張ってこれるのですがこのデータ元のファイルの別ページの 同じセルからもデータを引っ張って来たいのですがシートが複数ページあり 1つ1つのリンク先を変更していくのが面倒です ↓↓↓↓↓ ='[ファイル名.xls]1'!$A$1 ='[ファイル名.xls]2'!$A$1 ='[ファイル名.xls]3'!$A$1 ='[ファイル名.xls]4'!$A$1 ='[ファイル名.xls]5'!$A$1 ↑こんな感じで一気に変更したいのですが 何か簡単なやり方はありますでしょうか?? ちなみにExcelは2003です。

  • Excel VBA ファイルをまとめる

    Excel2003にてフォルダにある複数ファイル(8個)の各1番左のシートを 指定したファイルにまとめるVBAを組みたいと思います。 まとめる際、ファイル名の一部を取得し、シート名にしたいのですが可能でしょうか? 例: ファイル名:20110927_△△△△株式会社.xls ⇒ シート名:△△△△株式会社 ※ファイルの個数は固定ですが、年月の部分は変わります。 簡単なVBAの経験しかなく、キーワード検索でもしっくりこないものばかりで どのようにコードを記述してよいのか非常に困っています。

  • エクセルVBAでCSVを読み込んで別ファイルにまとめたいです。

    エクセルVBA初心者の者です。 マクロの記録でできたコードをいじって、 なんとか動くものができるレベルです。 Aというフォルダに20~40行程度の内容のCSVファイルが 数百個あります。開けてみないと何行あるのかわかりません。 そのAフォルダのCSVの内容をエクセルで開いて、別のエクセルファイルの一枚のシートにまとめたいのです。 最初にCSVファイル名を一枚のシートのA列に書き出すところ まではやれたのですが、それを順番に読み込んでコピペの 流れができません。 CSVファイル名読み込み 読み込んだファイル1つめCSV開く CSVの20~40行をコピー 別のエクセルファイルのシートに貼り付け 1つめCSV閉じる ↓ 読み込んだファイル2つめCSV開く 繰り返し こういうやり方じゃない方がいいのかもわかりません。 もしかして考え方も違うのでしょうか? サンプルコード教えていただけるとありがたいです。 よろしくお願いします。

  • EXCELのVBAについて教えて下さい。

    VBA初心者です。 EXCEL操作は今まで何度もやっていて大体のことは分るのですが、この度、仕事の関係でマクロ、VBAを初めて使わなくてはいけなくなりました。早速はじめからつまずいています。どうか私にご教授くださればと思います。 やりたいことというのが、 (1)毎日の仕事として、まず、サーバーにあるデータを集計しcsvファイルとして保存します。 (2)そのcsvファイル(ファイル名:今日落としたファイルなら○○050620.csv)を××.xlsというファイルのワークシートにコピーします。 (3)その集計した表をピボットテーブルでさらに分りやすく分別。 (4)そのピボットテーブルからでてきた数字を××.xlsのSheet1の表のあてはまるところに数字をコピーし貼り付けていきます。 それによってグラフができます。 この操作の流れのうち(2)(3)(4)の部分をマクロニ組んでしまいたいのです。なかなかうまくいかないので良い方法を教えてください。ちなみにcsvファイルは毎日の作業なので年月部分のファイル名が毎日の日付が入ります。

専門家に質問してみよう