[ 初めての方へ | 一覧(最新更新順) | 全文検索 | 過去ログ ]
『複数のファイルを1つにまとめる方法』(おっちゃん)
複数のファイルを一つのシートにまとめたいのですがどうすれば良いでしょうか?
それぞれのファイルには複数のシートが在るのですが、結合したいのは一番左にあるシートで、
それぞれを1つの新たしいファイルに行方向につなげたく思っています。
(最終的にピポットで集計したいので・・・)
例えば、
ファイルA
A B C D E F・・・・・・・ 1 赤 青 黄 緑 2 大 中 小 3 上 下 左 右
ファイルB
A B C D E F・・・・・・・ 1 焼 肉 定 食 2 野 菜 炒 め 3 風 林 火 山
まとめると
A B C D E F・・・・・・・ 1 赤 青 黄 緑 2 大 中 小 3 上 下 左 右 4 焼 肉 定 食 5 野 菜 炒 め 6 風 林 火 山
このような感じにしたいのですが。
(例ではファイルが2つですが、実際はもっとあります。)
何卒宜しくお願い致します。
A.ピボットの外部のデータベースを利用する(これを確認しようとしたのですが私のパソコンではメモリー不足で確認できませんでした)できるかもと思うだけです。
B.ファイルの左のシートだけを別ファイルにコピー後にピボットの複数のワークシートを利用する
下記の方法が私のできた方法で記載します。(これはファイルを参照しますので元のファイルがなくなるとおかしくなるかも)しかもめんどくさい方法ですいません。 C. 1.ピボットしたいデータを全て開いておく 2.新規のファイルを開く(ファイル名をつけておいてもOK) 3.ピボットの複数のワークシートで2b/3でピボットしたい範囲を全て追加で追加していく(タスクバーでファイルを変更しながら) 4.3/3で既存のワークシートの方にチェックを入れ2で作成したファイルを設定する
B.を使った場合もC.の3,4の操作で出来ます B.のファイルから1シート取り出すのはVBAでできるかもしれませんが私は全くわかりません。VBAの先生方が回答くださると思いますのでお待ちを・・・・(m_m) (おっちゃん)さん回答になっていないかもしれませんがすいません。 やり方がわからない時はレスして下さい。
と、書いたのですが、質問をよく読むと違いますね。一応上記は参考までにこういう方法もあるという程度で受け止めて下さい。 勘違いをいつも多発している(みーこ)でした。
申し訳ありません。その件わかりまん。 (INA)さんの回答の黄色の所の移動で無理ですか?何個か作ってやってみては・・・すいません。 (みーこ)
( みーこ )さん横スレごめんなさい。 VBAでも出来ますけど、どないしまひょ? コピーする範囲に規則性が有れば一気に出来ますけど、(その範囲が空白セルで囲われ てるとか...)でなければシート1枚1枚範囲を指定して貰わなあきまへんわ。 もし良かったら使うてみておくんなはれ。(カキコして下さい) (弥太郎)
サンプルがアバウトだったので正確にします。
ファイルA
出荷依頼 場所 Type 型名
出荷済 越谷大里 A1 600001
出荷済 越谷 A2 600301
出荷済 越谷蒲生 A1 800001
ファイルB
出荷依頼 場所 Type 型名
12月11日 茨城赤塚 C 100004
12月11日 茨城赤塚 A1 100003
12月11日 那珂 A1 000001
まとめると(このようにつなげたい・・・)
出荷依頼 場所 Type 型名
出荷済 越谷大里 A1 600001
出荷済 越谷 A2 600301
出荷済 越谷蒲生 A1 800001
12月11日 茨城赤塚 C 100004
12月11日 茨城赤塚 A1 100003
12月11日 那珂 A1 000001
ピッポットで、(最終的には・・・・)
出荷依頼 場所 形名 A1 A2 C
出荷済 越谷大里 600001 1
越谷 600301 1
越谷蒲生 800001 1
12月11日 茨城赤塚 100004 1
100003 1
那珂 000001 1
必要なデータは、出荷依頼、場所、型名でそれぞれTypeが何台必要かを
集計したいのです。(フィルタではなく・・・)
結局A、Bのファイルを縦につなげる事が出来ればピポットは楽なんですが・・・。
ただ、それぞれのファイルは列的には同じなのですが、行数が異なっています。
マクロ?VBA?を使わないと出来ないですかね??
プレビューで調整したのですが何だが難しいです・・・。
すみませんガタガタで・・・・
やはり勘違でしたね。申し訳ありません。 弥太郎さんやはりVBAで出来るのですね。あまりにもVBAに対しては無知過ぎですいません。 ですのでVBAで簡単に出来る場合はどうぞ書いて下さいね。お願い致します。 (みーこ)
おはようございます。 え〜と、それぞれのファイルのIndex1(ファイルのSheet1に相当するIndex)をコピー すると解釈しましたで。 データがどの列に有るのか不明ですので、一応データの各シートA1に見出し、A2から データが並んでいると仮定してます(勿論実情に合わせる事は可能です)。 データ(コピー元)の最終行は空白セルで区切っておいて下さい。 テストですさかい、こうしたテスト用のファイルを2,3個作っておくんなはれ。 このマクロはコピー元のデータがこわれる事はおまへんので、実際のファイルを使って もらっても別状おまへん。
更に新しいブックにsyukeiと名前を付けて下さい。(このファイルにデータが転送され ます。 そしてA1から見出しを書き込んで下さい。 ここまでが第1段階です。
さて、今度はそのsyukeiを開いた状態で(ゆっくり確認しながらお願いします) @ 「Alt」+「F11」でVBEを開きます A 「挿入」→「標準モジュール」を選択 B 真新しい画面に'-----------から'-------------をコピペして下さい C 「Alt」+「Q」でエクセルに戻ります
これで準備はOKですわ。 あとは「Alt」+「F8」で実行しておくんなはれ。 このマクロは開いているブックのIndex1 A2からD列最終行までをsyukeiに転送して コピー元のブックは全て閉じるようになってますさかい、まあいっぺん試してみておく んなはれ。お解りになりまへんでしたら、またカキコして下さい。 ほな...(弥太郎) '-------------------------------- Sub syukei() Dim data As Range Dim row_no As Long, row_max As Long Application.ScreenUpdating = False Application.DisplayAlerts = False Workbooks("syukei.xls").Activate
Do While Workbooks.Count <> 1 Workbooks(Workbooks.Count).Activate Filename = ActiveWorkbook.Name row_max = Range("a1").End(xlDown).Row Range("a2:d" & row_max).Copy Workbooks("syukei.xls").Activate Sheets(1).Select row_no = Range("a65536").End(xlUp).Row Range("a" & row_no + 1).Select ActiveSheet.Paste Application.CutCopyMode = False Workbooks(Filename).Close Loop Application.ScreenUpdating = True Application.DisplayAlerts = True
End Sub '------------------------- VBAっちゅうても、ほんなに難しい事おまへんでぇ。
実行時エラー“9”
インデックスが有効範囲にありません
と表示されました・・・・・。
1行目はタイトルでAからJまであります。
実際はAからCBまで在るのですがJまでのデータで集計します。
2行目からデータですが、A列にはデータがあったり無かったりです。
F,G,J列には必ずデータが入ってますが、その他は無い時もあります。
そこら辺が引っかかるんでしょうか??
遅うなってゴメンなはれや。 おせち料理の手伝いに駆り出されてましたんや。 ほんなら前のん削除して下さい。A列がそんなに歯抜けやったら使えまへんわ。 代わりに下のコードを差し込んで実行してみてください。
こちらではちゃんと動いてますけど、「インデックスが有効範囲でない」というエラー が気ぃになりますなぁ。 あきまへんでしたらまたカキコして下さい。 ほな...(弥太郎) '-------------------------
ごめん、矢印の所("a65536")を("f65536")と変えて下さい。 (弥太郎)
インデックスのエラー判明しました。 下のコードと差し替えておくんなはれ。 このsykeiのブックを開ける順番によってエラーが出ます。これで万全ですわ、多分。 紛らわしいんで上のコード消しときます。 何遍もゴメン...(弥太郎)
Sub syukei() Dim data As Range Dim row_no As Long, row_max As Long Application.ScreenUpdating = False'VBEを開いてScreenUpdatingの中間点にカー Application.DisplayAlerts = False 'ソルをあわせ、F1を叩くと解説が載って 'ます
Do While Workbooks.Count <> 1 'カウント1になるまでLoopしなさい。 Workbooks(Workbooks.Count).Activate 'Indexのブックをアクティブに、 If ActiveWorkbook.Name = "syukei.xls" Then 'もし(If)syukeiのブック 'だったら Workbooks(Workbooks.Count - 1).Activate '1つ前の(Index番号で) ブックを開く End If Filename = ActiveWorkbook.Name 'アクティブファイルのネームを取得 row_max = Range("f65536").End(xlUp).Row 'F列(最もデータの多い)行の '最下行を求める
Range("a2:j" & row_max).Copy 'A2からJ列の最下行をコピー Workbooks("syukei.xls").Activate 'ブックsyukeiをアクティブに Sheets(1).Select 'Sheet1を選択 row_no = Range("f65536").End(xlUp).Row 'F列の最下行を検索 Range("a" & row_no + 1).Select 'その下の行を選択 ActiveSheet.Paste 'そこへさっきコピーしたデータを貼り付け Application.CutCopyMode = False 'コピーモード(点線で囲まれた範囲)を ’解除 Workbooks(Filename).Close 'アクティブ(コピー元)のブックを閉じる Loop Application.ScreenUpdating = True '上の行で使ったのを初期状態に戻す Application.DisplayAlerts = True '上に同じ
End Sub
お世話になったついでといえば申し訳ないのですが、
上記VBA少し説明していただけないでしょうか?
時間の在るときでかまいません。
内容が理解できれば次何かに応用できるかも?って思ってます。
本当にありがとうございました!!!!
上のコードに解説を加えました。 ええお年を... ほな...(弥太郎)
[ 一覧(最新更新順) ]
YukiWiki 1.6.7 Copyright (C) 2000,2001 by Hiroshi Yuki.
Modified by kazu.