[[20031123224739]] 『ブックAのデータをブックBの各シートに移したい』(正ちゃん) ページの最後に飛ぶ

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

 

『ブックAのデータをブックBの各シートに移したい』(正ちゃん)

ブックAのデーターをブックBの各シートに移したい。

ブックAに例えばA1からA10まで品コード、B1からB10まで同じ日付、C1からH1までA1コードのデーター(5項目)。
その各品コードのデータをブックBの各シート(シート1が品コード1〜シート10が品コード10)の各シートの同じ日付の行にブックAのC1からH1までを移したい。
そして移し終えたらブックAのファイルは削除する。
現在はブックAのコード1のC1からH1までを範囲指定してコピーしてブックBのシート1の同じ日付の行に貼り付けています。それを1から10まで繰り返しています。
土日祭日以外の毎日を繰り返していますが面倒なので、どなたか良い方法を教えてもらえませんか。

マクロでもすればよいかなと思いますが何分初心者なのでよく解りません。
よろしくお願いします。

ブックA

    A    B   C   D   E   F   G   H
  1 品名1  11/25     5      8      7      6      9      10
  2 品名2    11/25     8      7      4      5      2       6
  3 品名3    11/25     6      9      5      4      7       8
  4
  5
  6
  7
  8
  9
 10 品名10    11/25     6       5      3      4       1       9

 ブックBのシート1(品名1)
    A    B   C   D   E   F   G   H
  1  11/25      5      8       7      6      9  
  2   11/26
  3   11/27

 ブックBのシート2(品名2)
    A    B   C   D   E   F   G   H
  1  11/25     8      7       4      5      2       6
  2   11/26
  3   11/27


 こちら事務局です。
 同じ内容の[書き込み]なので、こちらに統合しました。
 [初めての方へ]の[既存の書き込みに書き込む]↓を一度読んでください。
https://www.excel.studio-kazu.jp/wiki/excelboard/index.html#kizon
 (kazu)


『エクセルの表が上手く描けません』(正ちゃん)

「ブックAのデータをブックBの各シートに移したい」で質問のエクセルの表を描いたのですが
上手く描けませんでした。
どうすれば描けますか。初歩的な質問以前の質問ですみませんが宜しくお願いします。


『通りすがりのお方」さん早速のご回答有難うございました。』 (正ちゃん)
ご教示いただきましたオートフィルターの事は別件で利用していますが、確かにデーターベース
を作っておいて色々の集計をするのには都合が良いのですが、
今回の質問のブックAのデータは1日分のデータで品名ごとにブックBの各シートに移して品名ごとにデータベースとしています。
ブックAのデータはブックBの各シートに移した後は削除しています。

実は株式のデータを趣味でエクセルで自分流に分析するために毎日のデータから10銘柄ほどを各シートに入力してデータベースとして計算式を入れ数値計算をしています。
元データは専用ソフトで文字放送から受信したものをエクセルに変換しています。

それがブックAなのです。

 A列   B列         C列  D列   E列  F列   G列   
 Code	 日付	     始値	高値	安値	終値	出来高
 100	2003/11/21	9804.4	9888.9	9758.3	9852.8	1014.3
 200	2003/11/21	969	980.1	967	974.5	1014.3
 3861	2003/11/21	610	616	603	610	3306
 5351	2003/11/21	213	216	212	216	44
 5801	2003/11/21	348	355	345	351	2858
 5958	2003/11/21	264	264	259	262	73
 6135	2003/11/21	531	538	523	529	618
 6807	2003/11/21	1046	1048	1016	1030	301
 6875	2003/11/21	971	977	960	968	66.6
 7518	2003/11/21	725	730	714	727	756
 7709	2003/11/21	179	183	176	180	268
 8175	2003/11/21	378	383	378	383	171
 8411	2003/11/21	226	238	224	237	272863
 8628	2003/11/21	2085	2205	2065	2195	920.3
 9719	2003/11/21	3180	3240	3170	3220	79.9

上記を毎日、コード毎に1行づつAからGまで範囲指定してBブックのシート1から順に各シートに貼り付けて下記の様に日付順のデータベースを作成しています。
H列以降に計算式を入れています。

ブックBのシート1

 A列    B列       C列   D列   E列   F列   G列 
 Code   日付	     始値	高値	安値	終値	出来高  
 100    2003/11/17	998	998	968	971	1171
 100   2003/11/18	968	976	956	973	1249
 100   2003/11/19	965	965	953	953	1036
 100   2003/11/20	963	974	956	971	1068
 100   2003/11/21	969	980.1	967	974.5	1014.3

コピー&貼り付け が面倒ですのでマクロではどのようにすればよいかご教示願えませんか。


 はい、こんばんわ。
 コレがカナン師匠ご紹介の「関西弁マクロ」ですわ。いつご指名いただいたんやら、知
 らん間に正ちゃんの趣味とおつきあいでんな。

 ブックBにCode番号に相当するシートを作って下さい。(半角で。コレ重要)
 それぞれのシートに見出しを書き込んで下さい。
 書式設定も済ませておいて下さい。
 多分初めに書いてはりまんのやろけど、Code、日付も一緒にコピーしますさかいそれは
 書かんでよろしいわ。
 ブックAにそれぞれデータを記入して下さい。

 Alt+F11でVBEを開けます。
 「挿入」→「標準モジュール」に下のコードをコピペして下さい。
 Alt+Qでエクセルに戻ります。

 これで準備OKですわ。
 Alt+F8でtestを実行して下さい。ちゃんとコピーでけまっせ。
 もし動かんかったら手順が悪いか、ブック名、シート名が狂うとると思うてやり直して
 みておくんなはれ。
 わたしゃ夜しかお相手でけしまへんさかい、ご迷惑かけたらアカン思うてレス付けるん
 遠慮してまんねんけど、師匠の呼び出しを無視するわけにも参りまへんので一応顔たて
 ときますわ、えぇ。
 もしお解りになりまへんでしたら、カキコしとっておくんなはれや。
   ほな...(弥太郎)
 Option Explicit
 Dim i As Integer
 '----------------
 Sub test()
    Dim n As Integer, max_row As Integer
    Dim wkb_a As Object, wkb_b As Object
    Dim hinmei As String
    Application.ScreenUpdating = False
    Workbooks("A.xls").Activate
    max_row = Cells(, 1).End(xlDown).Row
    For i = 2 To max_row
        Workbooks("A.xls").Activate
        Set wkb_a = Worksheets("sheet1")
        hinmei = wkb_a.Cells(i, 1)
        wkb_a.Range(Cells(i, 1), Cells(i, 7)).Copy
        For n = 2 To max_row
                 Workbooks("B.xls").Activate
                Set wkb_b = Sheets(hinmei)
                wkb_b.Activate
                Cells(idx(wkb_a), 1).Select
                Selection.PasteSpecial Paste:=xlValues
                Exit For
        Next n
    Next i
    Application.ScreenUpdating = True
    Application.CutCopyMode = xlCut
    MsgBox "コピー終了です"
 End Sub
 '---------------------
 Function idx(ByVal wkb_b As Object) As Integer
    Dim t As Integer
    Do
        t = t + 1
    Loop While Cells(t, 1) <> ""
    idx = t
 End Function


関数を使い計算式を入れてのエクセルは少しやっていますが、今回はどうもマクロでないと
出来ないように思いご教示をお願いしました。
本当に有り難うございました。

私もマクロを勉強したく思いますので今後ともよろしくご指導の程お願いいたします。
もしエクセルの学校でマクロの初級講座のようなものがあれば教えてください。
                              
                              (正ちゃん) 拝

弥太郎様をご紹介していただき有り難うございました。
お陰さまで希望通りのものが出来上がりました。
今後ともよろしくご指導の程お願いいたします。

                              (正ちゃん) 拝
  
                               


コメント返信:

[ 一覧(最新更新順) ]


YukiWiki 1.6.7 Copyright (C) 2000,2001 by Hiroshi Yuki. Modified by kazu.