Excel (VBA)

Excel VBAに関するフォーラムです。
  • 解決済みのトピックにはコメントできません。
このトピックは解決済みです。
質問

 
(Windows 10 Pro : Excel 2013)
複数のシートから一つのシートにコピペしたい
投稿日時: 20/08/03 19:48:19
投稿者: ザックん

いつもお世話になっております。
 
複数のシートから一つのシートにコピペしたいのですが、値があるときだけコピーしたい、
しかし、そのやり方が分からなく困っております。コピーした値を特定のシートの同列に貼り付け纏めたい。
 
宜しくお願い致します。
 

回答
投稿日時: 20/08/03 21:27:25
投稿者: WinArrow
投稿者のウェブサイトに移動

説明が具体性に欠けています。
 
(1)条件が見えない
(2)同列とは?
 
手操作でできるのならば、マクロの記録でコードを作成してみたら・

回答
投稿日時: 20/08/04 09:50:51
投稿者: QooApp

値が、って言ってるんでValueとするならば、
 
IF(WorkSheets(ワークシート名).Range("座標").Value <> "")Then
 
じゃだめなんですか?

投稿日時: 20/08/04 12:38:47
投稿者: ザックん

いつもお世話になっております。
 
申し訳御座いません。
 
3つ(複数)のシートは
同じ仕様のシートです。値は、D11、G11、H11から下方へ、文字、数値が入力されます。
どの行まであるかは、その時により異なります。
 
貼り付けを行うシートは、1つのシートに特定して、
B列(B5〜),C列(C5〜),D列(D5〜)へ、値が重ならない様に貼り付けたい。
 
※D11⇒B5へ、G11⇒C5へ、H11⇒D5へ
 
よろしくお願いします。

回答
投稿日時: 20/08/04 14:29:48
投稿者: WinArrow
投稿者のウェブサイトに移動

過去のあなたのスレ
https://www.moug.net/faq/viewtopic.php?t=79565&highlight=
と似ているが・・・・・
違うとしても、応用できないのかなあ?
あちらは、どのようになりましたか?

回答
投稿日時: 20/08/04 14:33:39
投稿者: WinArrow
投稿者のウェブサイトに移動

説明に、問題がありますね・・・・
 
>貼り付けを行うシートは、1つのシートに特定して、
>B列(B5〜),C列(C5〜),D列(D5〜)へ、値が重ならない様に貼り付けたい。
 
常に5行目から這いつけるのかな?
 
>値が重ならない様に
は、どんなことですか?
 

投稿日時: 20/08/05 16:08:35
投稿者: ザックん

いつもお世話になっております。
 
返信が遅くなり申し訳ありません。
 
ありがとうございます。
以前、ご指導いただいた案件でペーストの方は使用できると思っていました。
 
しかし、今回はコピーする内容が条件指定はなく、特定の列に値があれば全てコピーする
内容でしたので色々試してきたのですが、うまくいきませんでしたので相談させていただきました。
 
 
常に5行目から這いつけるのかな?
⇒常に5行目からです。
 
>値が重ならない様に
は、どんなことですか?
⇒以前のものを使用すればよいと思っていました。
 
 
宜しくお願い致します。

回答
投稿日時: 20/08/05 17:34:38
投稿者: mattuwan44

作業始め
  '前提条件の説明
  コピー元シート(Sheet2、Sheet3、Sheet4)
  コピー先シート(Sheet1)

  '転記(繰り返し)
  コピー元シートを順次見ていき繰り返す
    シート(個別)に対して
      それの、最後のデータ行は、D列のシートの最終行から上に見ていって最初のデータセルの行
      それの、最初のデータ行は、それの11行目
      もし、最後のデータ行が最初のデータ行以下なら、
        それの、D列、G列、H列、および最初のデータ行から最後のデータ行のセル範囲が、重なるセル範囲をコピーする
        コピー先シートのC列のデータ最終行の下に貼り付ける
  次のシートへ
作業終わり

 
ザックんさんが、エクセル君にしてほしい作業内容(=作業指示書)は、
こういうことではないですか?
 
マクロは、VBAという言葉(言語)で、
作業の命令を行います。
なので、まずは言葉でやりたいことを説明できるようにならなければいけません。
当然、エクセルを操作するときのコツがありますが、
他人に説明できなければ、エクセル君にも命令出来ないということをご理解ください。
 
とりあえず、上記のような作業指示書で、
意図する作業ができそうでしょうか?

回答
投稿日時: 20/08/05 20:40:47
投稿者: WinArrow
投稿者のウェブサイトに移動

ザックん さんの引用:

しかし、今回はコピーする内容が条件指定はなく、特定の列に値があれば全てコピーする

>特定の列に値があれば
これを条件といいます。
>特定の列
こんな、漠然とした言い方で、あなたの意図が伝わりますか?
 
ザックん さんの引用:

内容でしたので色々試してきたのですが、うまくいきませんでしたので相談させていただきました。

試した内容を掲示しましょう。
 
ザックん さんの引用:

常に5行目から這いつけるのかな?
⇒常に5行目からです。

質問した意図が伝わアなかったようですね?
複数のシートから、1つのシートに複写するのに、
複写先の行位置が、常に5行目だったら、どうなるか想像したことありますか?
 
ザックん さんの引用:

>値が重ならない様に
は、どんなことですか?
⇒以前のものを使用すればよいと思っていました。

とても重要な条件ですよ。
考え方によっては、とても難しいことなんだが・・・・・

投稿日時: 20/08/05 21:10:08
投稿者: ザックん

お世話になっております。
 
WinArrow様
ご指導ありがとうございます。
 
QooApp様
申し訳御座いません。
IF(WorkSheets(ワークシート名).Range("座標").Value <> "")Then
まだ、試しておりませんでした・・・。
以前、作成した内容に上記のコードを入れ、詳細を修正したところ、正常に動作しました。
ありがとうございました。