- ベストアンサー
マクロを使用してbook1からbook2に値を入れる方法について
- 情報保護のため、隠さなければいけないところが多々あり、とても分かりづらいと思います。
- book1のAシートに入力した複数の業者の数値を、Bシートの並びに合わせて抽出し、並び替えて保存したい場合、Sumif関数を使用します。
- その並びのまま、book2のAシートに値を入れるマクロを作成する方法について、マクロを勉強中のため教えていただきたいです。
- みんなの回答 (6)
- 専門家の回答
質問者が選んだベストアンサー
ANo.5です。 > 空白は必要なのですが、元のコピーするところに式が入っているので、Valueになるようなのです。 あぁ、もしかするとコピー元シートでは#Valueになった時に文字色を白にして見えないようにする条件付き書式が設定されているのかな。 で、あれば同じように条件付き書式を設定しておくか、張り付けた後に#Valueを空白に置換すればいいと思います。
その他の回答 (5)
- mt2015
- ベストアンサー率49% (258/524)
ANo.2です。 > 現在それで対応しているのですが、空白の欄もあり、それを値のみ貼り付けするとValueになってしまうので、それをデリートで消すのがめんどくさくて、マクロにて入力出来たらデリートの手間を省けるなぁ。と思いまして(汗) 値のみ貼り付けで#Valueになるとは考えにくいので、「空白欄が出来る事で、そのセルを参照して計算している式が#Valueになる」と、言う意味でしょうか? だとしたら空白をどうしたいのでしょう?上方向へシフト?
お礼
ご回答ありがとうございます。 空白は必要なのですが、元のコピーするところに式が入っているので、Valueになるようなのです。 なので、元のシートに空白となっているのであれば、その行は飛ばして次に進んでいく。という形が理想という感じです。
- SI299792
- ベストアンサー率47% (774/1619)
>空白の欄もあり、それを値のみ貼り付けするとValue になってしまう 見落としていました。 状況か判りません。普通空白があってもValue にならないと思います。コピー元にValue があれば、ペースト先にもValue は出ますが。 数式を入れてない限り、Value にならないと思います。どのような数式で、どこを空白にすればValue が出るのか書いていただけますか。 コピー後にValue 消すマクロを載せます。 ' Sub Macro1() ' Dim Cell As Range ' Workbooks("Book1").Sheets("Aシート").Cells.Copy Windows("Book2").Activate [A1].PasteSpecial xlPasteValues ' For Each Cell In ActiveSheet.UsedRange ' If Cell.Text = "#VALUE!" Then Cell.ClearContents End If Next Cell End Sub
お礼
ご回答ありがとうございます。 vlookupでA列のすべての商品のところに抽出していて、入力がなければ””という方法をとっています。 その状態で空白も含めてコピーして貼り付けるとValueがでるので、SI299792さんが危惧していただいた通りの状態になっていると思います。 現在のシートの形としては、1行目に日付が横並びに入っており、A列に商品名が並んでいる状態なのですが、これじゃわからないですよね(汗) せつめいがへたくそですいません。
補足
イメージ図 (へたくそですいません) 引用シート 貼り付けシート A B [C D] E F A B 1商品名 5 1商品名 ここに列で貼付たい 2商品名 5 2商品名 3商品名 3商品名 4商品名 7 4商品名
- SI299792
- ベストアンサー率47% (774/1619)
値のコピーと書いてありますが、 マクロの記録をして、Aシートを選択→全てのセルを選択→Bシートを選択→形式を選択して貼り付け→値→記録終了 の操作をすれば、マクロが出来上がると思います。 又は、 Workbooks("Book1").Sheets("Aシート").Cells.Copy Windows("Book2").Activate [A1].PasteSpecial xlPasteValues (マクロの記録でマクロを作ると長くくなるので、私は必ず後で修正します) 値だけでなく、全てコピーしたいなら Workbooks("Book1").Sheets("Aシート").Cells.Copy Workbooks("Book2").Sheets("Aシート").[A1]
お礼
ご回答ありがとうございます。 後出しの情報になり、大変申し訳ありません。 AとBが同じ形式ではなく、Aが日にち単位、BがそのAの毎日の記録を一日ずつ記録していく。というような形なのでシートごとというのと、同じ記録場所というのができないのです。 せっかくご回答いただいたのに申し訳ありません。
補足
申し訳ありません。 自分の質問がわかりにくすぎるのでもう一度質問をちゃんと考えて出直してきます。 せっかくいろいろと教えていただいたのに申し訳ありません。
- mt2015
- ベストアンサー率49% (258/524)
「Book1のAシートには抽出して並び替えた結果が入っている」んですよね? これをそのままBook2にコピーするだけの話なんじゃないんですか?
お礼
くだらない質問にコメしていただきありがとうございます。 ほんとすいません(汗)
補足
現在それで対応しているのですが、空白の欄もあり、それを値のみ貼り付けするとValueになってしまうので、それをデリートで消すのがめんどくさくて、マクロにて入力出来たらデリートの手間を省けるなぁ。と思いまして(汗)
- 9don
- ベストアンサー率21% (14/65)
単純にbook1のBシートを book2のAシートにコピーする ということではないのですか?
お礼
わかりにくい説明にコメントしていただき、ありがとうございます!
補足
ご回答ありがとうございます。 Aファイルは1日の数値、たとえば人数、商品、客層といったものを時間別に表示しているといったもので、 Bファイルはその数値を月単位で集計したものなのです。 なので、Aの数値を人数シート、商品シート、客層シートにそれぞれ入力する形になっております。 各シートのA列に時間帯が乗っており、それにB、C、D、と毎日1列づつずれて入力している状態になります。 説明がわかりにくく申し訳ありません。
お礼
申し訳ありません。 自分の質問がわかりにくすぎるのでもう一度質問をちゃんと考えて出直してきます。 せっかくいろいろと教えていただいたのに申し訳ありません。
補足
回答ありがとうございます。 勘違いさせてしまい、申し訳ありません。 コピー元シートにはすべてのセルがこの式ではありませんが、似たような式が入っており、引用先に名前がなければ空白という設定になっているのです。下記参照 【=IF(COUNTIF(金!$C$2:$N$108,$B5)=0,"",IF(SUMIF(金!$C$2:$N$108,B5,金!$E$2:$E$108)>0,SUMIF(金!$C$2:$N$108,B5,金!$E$2:$E$108),""))】 なので、その列をコピーして、別のブックのシートに移した場合、空白が入る?みたいな感じになってValueが出てしまうようなのです。