こんにちはゲストさん。会員登録(無料)して質問・回答してみよう!

解決済みの質問

book1からbook2にそのまま値を入れるマクロ

情報保護のため、隠さなければいけないところが多々あり、とても分かりづらいと思います。申し訳ありません。

book1にA,Bのシートがあり、Aシートに入力した複数の業者の数値をBシートの並びで保存したいのでSumifによって、抽出して並び替えています。

その並びのまま、book2にのAシートにそのままの順番で値を入れるマクロをつくりたちと思っているのですが、わかりません。

今、マクロを勉強中でほとんどわからない状態なので、教えていただければ幸いです。

書いてることがわからないと思いますので、質問がありましたらお気軽に聞いてください。

お手数をおかけして申し訳ありませんがよろしくお願い致します。

投稿日時 - 2018-05-16 14:11:30

QNo.9499013

困ってます

質問者が選んだベストアンサー

ANo.5です。

> 空白は必要なのですが、元のコピーするところに式が入っているので、Valueになるようなのです。

あぁ、もしかするとコピー元シートでは#Valueになった時に文字色を白にして見えないようにする条件付き書式が設定されているのかな。
で、あれば同じように条件付き書式を設定しておくか、張り付けた後に#Valueを空白に置換すればいいと思います。

投稿日時 - 2018-05-18 19:48:10

補足

回答ありがとうございます。
勘違いさせてしまい、申し訳ありません。
コピー元シートにはすべてのセルがこの式ではありませんが、似たような式が入っており、引用先に名前がなければ空白という設定になっているのです。下記参照
【=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が出てしまうようなのです。

投稿日時 - 2018-05-21 09:34:29

お礼

申し訳ありません。
自分の質問がわかりにくすぎるのでもう一度質問をちゃんと考えて出直してきます。
せっかくいろいろと教えていただいたのに申し訳ありません。

投稿日時 - 2018-05-21 09:54:00

ANo.6

このQ&Aは役に立ちましたか?

0人が「このQ&Aが役に立った」と投票しています

回答(6)

ANo.5

ANo.2です。

> 現在それで対応しているのですが、空白の欄もあり、それを値のみ貼り付けするとValueになってしまうので、それをデリートで消すのがめんどくさくて、マクロにて入力出来たらデリートの手間を省けるなぁ。と思いまして(汗)

値のみ貼り付けで#Valueになるとは考えにくいので、「空白欄が出来る事で、そのセルを参照して計算している式が#Valueになる」と、言う意味でしょうか?

だとしたら空白をどうしたいのでしょう?上方向へシフト?

投稿日時 - 2018-05-18 08:31:41

お礼

ご回答ありがとうございます。
空白は必要なのですが、元のコピーするところに式が入っているので、Valueになるようなのです。
なので、元のシートに空白となっているのであれば、その行は飛ばして次に進んでいく。という形が理想という感じです。

投稿日時 - 2018-05-18 16:37:22

ANo.4

>空白の欄もあり、それを値のみ貼り付けすると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

投稿日時 - 2018-05-18 04:46:19

補足

イメージ図  (へたくそですいません)

引用シート          貼り付けシート

A    B  [C D] E F            A    B
1商品名    5             1商品名 ここに列で貼付たい
2商品名    5 2商品名
3商品名    3商品名
4商品名    7 4商品名

投稿日時 - 2018-05-18 16:46:34

お礼

ご回答ありがとうございます。
vlookupでA列のすべての商品のところに抽出していて、入力がなければ””という方法をとっています。
その状態で空白も含めてコピーして貼り付けるとValueがでるので、SI299792さんが危惧していただいた通りの状態になっていると思います。

現在のシートの形としては、1行目に日付が横並びに入っており、A列に商品名が並んでいる状態なのですが、これじゃわからないですよね(汗)
せつめいがへたくそですいません。

投稿日時 - 2018-05-18 16:32:04

ANo.3

値のコピーと書いてありますが、
マクロの記録をして、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]

投稿日時 - 2018-05-18 02:41:30

補足

申し訳ありません。
自分の質問がわかりにくすぎるのでもう一度質問をちゃんと考えて出直してきます。
せっかくいろいろと教えていただいたのに申し訳ありません。

投稿日時 - 2018-05-21 09:54:17

お礼

ご回答ありがとうございます。
後出しの情報になり、大変申し訳ありません。

AとBが同じ形式ではなく、Aが日にち単位、BがそのAの毎日の記録を一日ずつ記録していく。というような形なのでシートごとというのと、同じ記録場所というのができないのです。
せっかくご回答いただいたのに申し訳ありません。

投稿日時 - 2018-05-18 16:49:36

ANo.2

「Book1のAシートには抽出して並び替えた結果が入っている」んですよね?
これをそのままBook2にコピーするだけの話なんじゃないんですか?

投稿日時 - 2018-05-17 15:29:40

補足

現在それで対応しているのですが、空白の欄もあり、それを値のみ貼り付けするとValueになってしまうので、それをデリートで消すのがめんどくさくて、マクロにて入力出来たらデリートの手間を省けるなぁ。と思いまして(汗)

投稿日時 - 2018-05-17 15:54:02

お礼

くだらない質問にコメしていただきありがとうございます。
ほんとすいません(汗)

投稿日時 - 2018-05-17 15:54:30

ANo.1

単純にbook1のBシートを
book2のAシートにコピーする
ということではないのですか?

投稿日時 - 2018-05-16 14:43:00

補足

ご回答ありがとうございます。
Aファイルは1日の数値、たとえば人数、商品、客層といったものを時間別に表示しているといったもので、
Bファイルはその数値を月単位で集計したものなのです。

なので、Aの数値を人数シート、商品シート、客層シートにそれぞれ入力する形になっております。

各シートのA列に時間帯が乗っており、それにB、C、D、と毎日1列づつずれて入力している状態になります。

説明がわかりにくく申し訳ありません。

投稿日時 - 2018-05-16 15:12:02

お礼

わかりにくい説明にコメントしていただき、ありがとうございます!

投稿日時 - 2018-05-16 15:12:41