[[20031229233841]] 『複数のファイルを1つにまとめる方法』(おっちゃん) ページの最後に飛ぶ

[ 初めての方へ | 一覧(最新更新順) | 全文検索 | 過去ログ ]

 

『複数のファイルを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:難しくて挫折・・・・。すみません。
B:これだったらデータを縦にコピーしていったほうが・・・・。
C:やってみた結果が本来のピポットと結果が違った・・・。
 (データの選択値が行、列、値の3つしかなかった・・)

サンプルがアバウトだったので正確にします。

ファイル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.