• 締切済み

ExcelVBAで同一フォルダにある複数ファイルの特定セルの値を纏めたい

VBA初心者です。同じような質問があがっていましたが、初心者のため応用が効かずよく分からないので教えてください。(Excel2003使用) Cドライブの直下に仮に「注文」という名前のフォルダがあり、 その中に同じ形式のExcelファイルが複数入っています。 (ファイルの名前は全て異なります) 各ファイルのsheet1にB2セルは発注した人の名前、H4、H7に注文した商品の単価、H14に合計額(SUM関数)が入ってます。 このB2セルとH4、H7、H14の値のみを別ファイルに一つにまとめたいのですがどうすればよいでしょうか。       A列             |B列    |C列    |D列  -------------------------------- 1行目  |○○(B2の名前)   |15(H4)|10(H7)|25(H14) -------------------------------- 2行目  |△△(別ファイルB2) |0      |15    |15 -------------------------------- 3行目  |××(別ファイルB2  |20     |0     |20 といった感じにしたいです・・ よろしくお願いします。

みんなの回答

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

ブックを読んで、各ブック(名)を捕まえるのは http://okwave.jp/qa5411462.html と同じ内容の質問では無いか。 でも初心者には難しいと思う。 ーー 各ブックを捉えて、その中の決ったシートのセルの値を開いているシートに一覧化するコードは目算がついているのか。 搗いて無いレベルだと、そっくりコードを書いてくれ(丸投げ質問)にならざるをえないが。

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

別ファイルが >Cドライブの直下に仮に「注文」という名前のフォルダがあり、 ここに入っていないとします。 Sub try()  Dim wb As Workbook  Dim r As Range  Dim P_name As String  Dim F_name As String  Application.ScreenUpdating = False  Set r = ActiveSheet.Range("A1")  P_name = "C:\注文\"  F_name = Dir(P_name & "*.xls", vbNormal)  Do Until F_name = ""     Set wb = Workbooks.Open(P_name & F_name)     With wb.Worksheets("Sheet1")          r.Value = .Range("B2").Value          r.Offset(, 1).Value = .Range("H2").Value          r.Offset(, 2).Value = .Range("H4").Value          r.Offset(, 3).Value = .Range("H14").Value     End With     Set r = r.Offset(1)     wb.Close False     F_name = Dir()  Loop  Set r = Nothing  Set wb = Nothing  Application.ScreenUpdating = True End Sub 一例です。 ご参考になれば。

関連するQ&A

  • 複数のセルに合致するデータを全て表示する

    表1で1ヶ月分、日にちごとに誰が何を発注しているのかをまとめてあります。 (個人単位で1ヶ月のデータがでるようになっています。) 表2に1日単位で発注品毎に誰が頼んでいるか名前が出るように したいのですが関数で出来ますか? 表1    A列       B列  C列    D列            注文名 1行  氏 名 11 12 13 2行       日 日 日 3行  ああ  A B 4行  かか B A        5行  ささ  B C C 6行  たた  A A B 7行  なな  C B 8行  はは  A A 表2(11日の注文)     注文名  A     B     C           ああ  ささ    なな           たた     注文者  はは

  • ExcelVBAで複数セルを別シートに貼り付けたい

    Excel VBAでデータをコピーして、別シートに貼り付けるどうしたらいいのでしょうか。 Sheet1のセルA1からA4のデータをコピーして、Sheet2のC2からc5に貼り、次はSheet1のセルB1からB4のデータをコピーしてSheet2のC7からc10に貼りを500行ほど繰り返し(コピーするデータは、4行づつ横へ移動し、貼り付けるほうは4行づつ縦へ移動します。) それが終わったら、今度はB列、c列と100列ほど同じ操作を繰り返します。 いろいろな方法を試しましたが、なかなかうまくいきません。 どなたか教えていただけませんでしょうか。よろしくお願いいたします。

  • 【VBA】フォルダ内の複数Excelのセルをコピー

    お世話になります。 初級者ですが、Excel 2002のVBAについてご質問をさせて頂きます。 【概要】  あるフォルダ内にある複数のExcelファイルの、特定のセルを  1つのExcelファイルに集約します。 【詳細】  1.あるフォルダ内に複数のExcelファイルがあります。Excelファイルの数は、その日によって   ことなります。  2.選択画面から、この複数のExcelファイルを選択し、選択したExcelファイルの   それぞれの「A1セル」「B1セル」「C1セル」を、「1つのExcelファイル」に張り付けます。  3.「貼り付け」→「次の列へ移動」→「貼り付け」→「次の列へ移動」というサイクルを、   選択したExcelファイルの数だけ繰り返します。  4.集約したExcelファイルのイメージは以下のとおりです。        A列 B列 C列 D列 E列 F列 G列 H列  。。。。   1行目 A1 A1 A1 A1 A1 A1 A1 A1 。。。。   2行目 B1 B1 B1 B1 B1 B1 B1 B1 。。。。   3行目 C1 C1 C1 C1 C1 C1 C1 C1 。。。。 教えて!gooの回答で、「複数のシートを、1つのExcelファイルに集約する」ものがあったので、 それを参考にしようとしましたが、僕の実力ではできませんでした。 ご助言を頂けると非常に助かります。よろしくお願いします。

  • 複数の条件に当てはまるセルを表示したい!

    表1^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^          A列       B列       C列          名称      サイズ     単価 1行      バルブ(1)      15A      =☆ 2行      バルブ(1)      20A      =☆2 3行      バルブ(2)      15A      =☆3 ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ 表2^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^          H列         I列        J列          名称      サイズ      単価 1行      バルブ(1)      15A      \500☆ 2行      バルブ(1)      20A      \600☆2 3行      バルブ(2)      15A      \800☆3...... ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ A列+B列とH列+I列(名称とサイズ)の値が同じものの表2の単価を表1のC列に表示させたいのですが、どうしたらよいのでしょうか? VLOOKUPだけだと、名称かサイズのどちらかしか指定することができないので、うまくいきません。 いろいろ試してみたのですが煮詰まってしまいました。。 大変わかりづらいと思いますが、どなたかお分かりになる方ご教授下さいm(_ _)mよろしくお願いします。

  • エクセル(マクロ) 特定セルのファイル間コピペ

    マクロで下記内容の処理を行いたいと思っております。 どのようなコードにすればよいかご教授よろしくお願い致します。 1.A.xlsを開く 2.B.xlsを開く 3.B.xlsの特定セルの値をコピーする。(特定セルを仮にB4、C7、D9とする) 4.A.xlsのC列にあるファイル名リストから「B.xls」というファイル名の入ったセルを検索する。 5.仮に5行目に「B.xls」というファイル名があれば、同じ行にある特定列 (行は固定で、例えばE5、F5、G5とする)に3.でコピーしたB4、C7、D9の値を張り付ける。 ※B4はE列、C7はF列、D9はG列に対応するものとする 6.B.xlsを閉じる 7.C.xlsを開く 8.C.xlsの特定セルの値をコピーする。(特定セルはB.xlsと同じB4、C7、D9) 9.A.xlsのC列にあるファイル名リストから「C.xls」というファイル名の入ったセルを検索する。 10.仮に7行目に「C.xls」というファイル名があれば、同じ行にある特定列 (行は固定で、例えばE7、F7、G7とする)に8.でコピーしたB4、C7、D9の値を張り付ける。 ※B4はE列、C7はF列、D9はG列に対応するものとする 11.C.xlsを閉じる 12.D.xlsを開く 以下、同じ処理を繰り返す。

  • エクセル:複数セルからの参照

    お世話になります。 A,B,C列にデータが入っています。 D,E,F列に参照のためのデータがあります。 A,B,C列はそれぞれD,E,F列に対応しています。 A,B,C列と同じ並びのデータが入っている行をD,E,F列から探し、その隣のG列の値をH列に返す。 D,E,F列の並びが重複する行はありません。 A,D列は場所の名前、B,C,E,F列には数字が入っている。 例) A1に事務室 B1に20 C1に3 が入っているとする。 D/E/F列が 事務室/20/3 の並びになっているのが10行目の場合、H1にG10のセルの値を返す。 この場合、H列にはどんな計算式を入れておけばよいのでしょうか? A,B,C列と同じ並びのデータがD,E,F列で見つからない場合は空白をH列に返す。 ちなみにD/E/F列が 事務室/20/3 の並びになっている行は10行目しかないです。 よろしくお願いします。

  • セルの値に「カンマ \」等をつけたい

    セルの値に「カンマ \」等をつけたい いつもおせわになります。 WINDOWS XP EXCELL 2003 E1:H1の結合セルの値に「カンマ 単位の\」をつけたいのですがご教示を御願いできませんか。 「現在の残高は\250,000です。」 にしたいです。 E1:H1 のセルにはユーザー定義は「標準」 =CONCATENATE("現在の残高は",SUM(D:D),"です。") D1 セルには =IF($C2="","",SUMIF($B$2:B2,"売上",C$2:$C2)*2-SUM($C$2:C2))

  • セルの値によって、入力可能なセルを動的に変更したい

    こんにちは。 Excelで、以下のような動作をしたいと考えています。 B列に入った値が'1'のときは、同じ行のC列・E列・H列にしか入力できないようにする。 B列に入った値が'2'のときは、同じ行のD列・F列・G列・H列にしか入力できないようにする。 (遷移できない列は、選択不可能とする) ある列に入力した値によって、動的にセルのロックを変更する・・・?というイメージなのですが、 具体的な実現方法がわかりません。 実現方法を教えていただけないでしょうか。 よろしくお願いします!!

  • 複数ファイルのデータを1つのファイルへ纏めるマクロ

    マクロの実行で、Excel形式の約400個のファイル中のデータを1つの出力ファイルへ纏める為のマクロを作成したいのですが、VBAの初心者で、スクリプトの書き方が分からず大変困っております。 入力ファイルの中身は頻繁に追加、削除を繰り返しており、そのたびに入力ファイルを目視確認後、出力ファイルを手動で修正している状況でございます。 大変お手数ですが、マクロがお分かりの方がいらっしゃいましたら、ご教示を宜しくお願い致します。 ・入力ファイルは、以下ような名前になっております。 課題参加者_23RF3001.xlsx 課題参加者_23RF3005.xlsx 課題参加者_23RF3072★.xlsx 課題参加者_23RF3073.xlsx 課題参加者_23RF3199.xlsx 課題参加者_23RF3543.xlsx ・入力ファイルのデータは、添付しました画面イメージの通りで、  フォーマットは全て同じです。 ・出力ファイルに吐き出す入力データはB列~K列とN列になります。 ・出力ファイルのタイトルは、1番目に呼び出したファイルのB列~K列とN列を使う。 ・出力ファイルのA列のデータは、入力ファイル名の『23RF3001』、『23RF3543』などを入力データ分入れる。 ・出力ファイルのタイトルに使う、入力ファイルのタイトルは以下のようになっています。   B列~E列のタイトルは、6行目、7行目が結合されたセルに入っています。  F列のタイトルは、5行目、6行目、7行目が結合したセルに入っています。  G列~H列のタイトルは、6行目、7行目が結合されたセルに入っています。  I列~K列のタイトルは、7行目のセルに入っています。  N列のタイトルは、6行目、7行目が結合されたセルに入っています。 ・出力ファイルへ吐き出したい、入力ファイルデータの範囲は、  B列~K列の8行目以降とN列の8行目以降のデータになりますが、  『職員番号』、『名前』、『部門』に記載が有る行のみを出力ファイルへ吐き出します。  N列はリストの最後の行まで文字が入力されていますが、  N列についても、上記の『職員番号』、『名前』、『部門』に記載が有る行のみを出力ファイルへ吐き出します。 ・出力データへ吐き出す時の書式フォーマットは以下の通りになります。  A列=文字形式  B列=数値形式  C列~F列=文字形式  G列、H列=日付形式  I列~K列=チェックボックス(フォームコントロール形式(入力データと同じ形式))  N列=文字形式 ・入力データは今の所50行まで入力可能としています。

  • Excelにて複数条件を満たす行の特定のセルの値を返す関数

    Excelにて複数条件を満たす行の特定のセルの値を返す関数を作りたいのですが、上手く行きません。 <Sheet1>   A列  B列  C列 1 2008/6/1 ★  320 2 2008/6/1 ☆  300 : : : Sheet2のA1に、「A列が2008/6/1で、B列が☆の場合、C列の値を返す」という関数を入れたいのですが、どうも上手く行きません。 良い式がありましたら教えて下さいm(_ _)m

専門家に質問してみよう