• 締切済み

EXCELファイルをマージするツール

複数のEXCELファイルがパソコンの同一フォルダーにあります。 すべてのファイルはそれぞれタブは1つで、しかも行数も列数も見出しも全く同じファイルです。ちがうのはそこに入っている文字列データだけです。 同じ行番号&列番号のセルにはいずれかの1ファイルにしかデータは入っていません。 これらをマージして、集計(正確には転記)を完了したファイルを作りたいのですが、 何かツールを使って省力化できないでしょうか。

みんなの回答

  • wek00
  • ベストアンサー率62% (90/145)
回答No.4

VBAを使うことで省力化できます。 元データファイルのセルの文字列を 集計先シートの同じアドレスのセルの文字列に結合していくように すれば条件判断しなくてもいいのでより簡単になると思います。 参考: ブック vba 参照 - Google Search ┗https://vbabeginner.net/vbaで別ブックのシートやセルを参照する/  VBAで別ブックのシートやセルを参照する vba セル 参照 - Google Search ┗https://www.tipsfound.com/vba/07001  VBA セルの値を取得する  ┗https://www.tipsfound.com/vba/07002   VBA セルに値を設定する http://note.phyllo.net/?eid=539332 Excel VBAメモ:UBound関数と多次元配列 | フィロの村note vba 全てのファイル - Google Search ┗http://officetanaka.net/excel/vba/file/file07.htm  Office TANAKA - Excel VBAファイルの操作[ファイルの一覧を取得する]

  • k-josui
  • ベストアンサー率24% (3220/13025)
回答No.3
  • panacon
  • ベストアンサー率31% (214/679)
回答No.2

Accessを持っていればこれでできます。 Accessを1つ作ってすべてのエクセルをリンクし、そのそれぞれのエクセルを1回ずつ集計用のテーブルに追加するマクロを組めば良いです。 マクロは何度でも使えるように、最初に集計テーブルのデータを削除する削除クエリを動かして、その後、全てのエクセルデータを順に追加し、最後に集計テーブルをエクセルでエクスポートすれば良いです。 また、クロス集計クエリも使えますので、集計結果まで自動化できます。

  • okwavey2
  • ベストアンサー率15% (251/1593)
回答No.1

>これらをマージして、集計(正確には転記)を完了したファイルを作りたいのですが、 何かツールを使って省力化できないでしょうか。 機能が限定され過ぎていて汎用性がないので、その機能がピンポイントにあるツールは存在しないと思います。 UWSCというツールを使って、スクリプトを自分で書くと割りと簡単に実現できるかと思います。

関連するQ&A

  • 2個のファイルの行ごとのマージ

    以下のようなテキストファイルがあるとします。 a.txt(以下内容) 1111 1111 1111 1111 b.txt(以下内容) 2222 2222 2222 2222 この2個のファイルを行ごとにマージして以下のような ファイルにしたいのです。 (2個のファイルの行数は同じとします。) 1111 2222 1111 2222 1111 2222 1111 2222 フリーのテキストエディタやEXCEL(2個の列としてあつかう) 等を使用して上記のことができるでしょうか?

  • 複数のcsvファイルを1つのEXCELファイルにマージするVBAを教えてください

    csvファイル数は700~1000個程度でひとつのフォルダに格納されています。 このファイルをEXCEL形式で開くと、1行目にフィールド名(A~Z列で固定)、2行目以降にデータが入っています。行数はファイルにより1~100行程度で変動します。 このファイルを1つのエクセルファイルの同一シートに結合(マージ)するVBAがほしいです。 ここで、(できればですが)EXCELにマージするにあたり、1行目のみフィールドの値、2行目以降にそれぞれのcsvの2行目以降データの値を入れていくようにしたいです。つまり、フィールド名の行が何行も出てくるのを避けたいです。 申し訳ございませんが、ご指導いただけたら幸いです。よろしくお願いします。

  • 集計したファイルを分割したい

    あるエクセルファイルに集計を加え、集計した結果をファイル内のある列の値で別ファイルに分割したい場合どの様なvbeを書けばよろしいでしょうか? サンプルファイルでいいますと、集計はN列の伝票番号を基準にL列:原価計 M列:売価計をそれぞれ合計額を集計し、その集計結果を元にG列:店舗の値(1~15)でファイルを分割保存する事が目的です。 ちなみに行数は毎回変わります。(1500行前後になります。) 毎月月末にこの作業をしますが、非常に限られた時間でスピーディに完了しなくてはならず手作業ですとミスが起こり困っております。 どなたかご教示願います。

  • Exslのデータファイルの結合は?

    エクセルのデータファイル1に 別のデータファイル2、データファイル3のデータを あわせたいのですが どうしたらよいのでしょうか? セルのコピー・貼り付けでやるには 行数・列数が 一致しないとエラーになるし 何か 簡単な方法ってありますか? データファイルの列形式は すべて同じです。

  • VBA 複数のファイルの特定の列だけ取得してマージ

    お世話になっております。 VBAで、複数のCSVファイルの特定の列だけを抽出して別のCSVファイルにマージする方法を探しています。 例えば、マージフォルダに1000のCSVファイルがあります。 1000あるファイルのA列とC列だけを抽出して、 それを別の「マージ.CSV」というファイルにA列とB列にマージして一つにしたいのです。 1000のファイルにはA~Qまで値が入っていて、A~Q列の値全て取り込みマージするとデータが重くなってしまうのです。 Unionメソッドを仕様して列を選択するのかなと思うのですが。。。 現在、こちらのコードを参考にしています。 わかる方いましたらよろしくお願いいたします。 Sub csvmerge() wpath = Range("B3") wfile = Dir(wpath & "\") flag = 0 Do While wfile <> "" If InStr(wfile, ".csv") Then flag = flag + 1 If flag = 1 Then FileCopy wpath & "\" & wfile, ThisWorkbook.Path & "\output.csv" Open ThisWorkbook.Path & "\output.csv" For Output As #1 Close #1 End If Open ThisWorkbook.Path & "\output.csv" For Append As #1 Open wpath & "\" & wfile For Input As #2 Do Until EOF(2) Line Input #2, w_str Print #1, w_str Loop Close #2 Close #1 End If wfile = Dir() Loop MsgBox "マージ完了", vbInformation End Sub

  • エクセルの集計で

    エクセルの集計で以下のようなことを早くする方法がないかお聞きします。 A列に仕入先B列に仕入金額が入ったデータがあり (A列は仕入先によって行数が異なります)、 C列で仕入先ごとの集計をしたい場合、 現在は〇〇商店の1ヶ月の合計を出すためにオートザムで B列の〇〇商店のみのデータを集計しています。 仕入先の行数が同じならばコピーしていけばいいのですが、 違うので何か簡単に集計する方法がないかお尋ねします。

  • 複数ファイル・複数シートのデータマージ処理

    VBA初心者です。 あるフォルダに格納されている複数ファイルのあるシートを内容を、別のExcelファイルにコピペする(マージする)+コピー元のファイル名称・集計日を転記するマクロが知りたくて質問を投稿いたします。 <インプット> ・Excelファイル(xlsx形式) ※現状は16ファイルですが、今後増える予定です。MAX値は未定。 ・Excelファイルは保護されている ・ファイルの項目は2種類ある <処理イメージ> (1)インプットファイルが格納されているパスを指定 (2)取り込む対象のファイルを指定(名称すべてではなく、部分的な名称指定がありがたいです) (3)指定されたインプットファイルの指定されたシートの情報を新規ファイルに転記 (4)次の指定されたインプットファイルの指定されたシートの情報を上記(3)でペーストした情報の一番下の1行下に追加。 (5)上記(4)を指定したインプットがなくなるまで繰り返し (6)(5)が済んだら、アウトプットシートのA列に取り込んだファイル名・B列に取り込んだシートの名 (7)保存して終了 <アウトプット> ・Excelファイル(xlsx形式) ・保護なし

  • EXCEL VBA 複数ファイル値を集計

    yakkunnと申します。 お世話になっております。 下記処理を実現するためのEXCEL VBAコードをご教授いただけないでしょうか。 ■やりたい事 デスクトップに「実績集計.xlsx」というファイルがあります。 このファイルにボタンを配置し、このボタンをクリックしましたら、C3セルに記述されているファイルパス配下を見てその配下ファイルを全て開き、各ファイルの値を「実績集計.xlsx」に全て転記するVBAコードをご教授いただきたく思います。 ■転記内容 例えばA.xlsx~C.xlsxという3つのファイルがあるとします。この3つのファイルを開いて・・ 左が「A.xlsx」、右が[実績集計.xlsx」とします 処理付を転記・・B4セル⇒B7へ転記 コードを転記・・B7セル⇒C7へ転記 商品名を転記・・C7セル⇒D7へ転記 数量を転記・・ D7セル⇒E7へ転記 金額を転記・・ E7セル⇒F7へ転記 これをA.xls~C.xlsまで繰り返し、実績集計.xlsxに値をどんどん転記したいです。 金額のF列の最後に合計金額が出力されれば最高です。 よろしくお願いいたします。

  • Excel 2007で6万5536行以上のデータ

    Excel 2007では、最大列数が従来の256列から1万6384列に,最大行数が従来の6万5536行から104万8576行に増えたと聞きました。私のExcelは、2007ですが、最大行数は6万5536行のままです。 どうしたら、6万5536行以上のデータを扱えるようになるのでしょうか? 何らかの設定変更で可能になるのでしょうか?

  • カウンタを使用した配列の格納について

    EXCEL VBAについての質問です。 どなたか添削願えないでしょうか? A1からE40までSingle形式のデータが入っています。 ただし、A列はすべて見出し、行には5行おきに1,6,11...行目に見出しが入っています。 4x4のデータが8個ある計算です。 見出しを除くデータをすべて(8,4,4)の配列に格納しようと思い、下記のコードをSheet(1)に 書きましたが、「インデックスが有効範囲にありません」と出てうまく格納できません。 上の「Next j」を生かして、下の「Next j」を殺し、イミディエイトウインドウで確認したところ、 ネストの外ではうまくループしているようですが、入れ子にするとデータがうまく入りません。 jのループ完了後には  j=36  データ番号=8 が入っているはずですが、j がうまく格納されないようで、値がすべて0になります。 上の「Next j」と直下の2行をいかした場合、きちんと値が入り、うまく機能するようです。 色々考えましたが、手詰まりになってしまったので、何がおかしいのか教えてもらえません でしょうか?よろしくお願いします。 Option Base 1 Const データ数 As Integer = 8 Const 列数 As Integer = 4 Const 行数 As Integer = 4 Dim データ番号 As Integer Sub 換算値格納() ReDim 換算値(データ数, 行数, 列数) As Single For j = 1 To 36 Step 5 '(例)j=1→データ番号1、j=6→データ番号2、.... データ番号 = (j - 1) / 5 + 1 Debug.Print "データ番号=" & データ番号 & " j=" & j 'Next j 'データ番号 = 8'<任意に変えてみてください> 'j = (データ番号 - 1) * 5 + 1 For i = 4 To 19 '列定義 'カウンタを4で割って1を足したものが0になる (例)14÷4=3...2 → 2+1=3 列 = i Mod 4 + 1 '行定義 'カウンタがちょうど割り切れたら行をひとつ増やす (例)i=4,8,12...にて列=1,2,3 If i Mod 4 = 0 Then 行 = 行 + 1 換算値(データ番号, 行, 列) = Cells(行 + j, 列 + 1).Value Debug.Print "(" & データ番号 & "," & 行 & "," & 列 & ")は" & 換算値(データ番号, 行, 列) Next i Next j End Sub

専門家に質問してみよう