[ 初めての方へ | 一覧(最新更新順) | 全文検索 | 過去ログ ]
『ブック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の各シートに移したい」で質問のエクセルの表を描いたのですが
上手く描けませんでした。
どうすれば描けますか。初歩的な質問以前の質問ですみませんが宜しくお願いします。
実は株式のデータを趣味でエクセルで自分流に分析するために毎日のデータから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.