ここから本文です

複数シートの指定列だけを集め、元データと重複した行の一部分を別シートに集約し...

アバター

ID非公開さん

2019/5/2611:28:47

複数シートの指定列だけを集め、元データと重複した行の一部分を別シートに集約したい。

Sheet1~3には複数項目がありますが、その1列目だけを集計シートに集約し
その集計シートにある番号に該当した行の元データの番号、注文日、担当者を
完成シートに抽出したいです。

Sheet1~3の番号は、項目が入っていないセルもあります。
Sheet1にフィルターをかけて集計シートにコピーするまではできたのですが、
その後Sheet2、Sheet3へ続くマクロがうまくいきませんでした。
その後、元データと照合し、完成シートへもっていくまで、
もっと簡素的なやり方もあると思うのですが、お知恵を貸していただきたいです。

Sub Macro1()


With Worksheets("Sheet1")

.Range("A1").AutoFilter _

Field:=1, Criteria1:="<>"

Sheets("Sheet1").Range("A:A").Copy

Sheets("集計").Range("A1").PasteSpecial _

Paste:=xlPasteValues, Operation:=xlNone, SkipBlanks:=False, Transpose:=False

.AutoFilterMode = False


End With

End Sub

ここまでは問題なく作動しました。
どうぞよろしくお願いいたします。

Sheet1&amp;quot,A1&amp;quot,AutoFilterMode,xlPasteValues,Sub Macro1,or ws.name,Sheet2&amp;quot

閲覧数:
33
回答数:
2
お礼:
100枚

違反報告

ベストアンサーに選ばれた回答

プロフィール画像

カテゴリマスター

nor********さん

2019/5/2612:12:01

Worksheets("Sheet1")

で動いているなら

シート単位の処理を

Sub SubMacro1( byref ws as Worksheet, byref 集計 as Worksheet )

みたいなSubプロシージャにして

メイン側で

dim ws as worksheet
dim 集計シート

For Each ws In Worksheets

If ws.name = "Sheet1" or ws.name = "Sheet" or ws.name = "Sheet3" then
call SubMacro1( ws, 集計シート)
end if

みたいにするとか。

オートフィルタをどう扱うかはあります。

あと添付画像だとシートが一つしかない意味がよくわかりません。元データとSheet1,Sheet2の関係、Sheet3がない理由。集計シートと完成シートをなぜわける必要があるのかも。

  • アバター

    質問者

    ID非公開さん

    2019/5/2612:26:21

    閲覧、ご指摘有難うございます!

    >シートがひとつしかない理由
    全シートを添付するとわかりづらいと思い、質問用に
    全シートを表示したからです。

    >元データとSheet1,Sheet2の関係
    元データ、Sheet1~Sheet3はそれぞれ別のシステムから抽出したデータを貼り付けています。また、実際はSheet1~3にそれぞれ,
    a、b、cとシート名がついています。

    >Sheet3がない理由
    これは単純に書き忘れです。失礼しました。
    Sheet1、2と同様に番号列を抽出したいです。

    >集計シートと完成シートをなぜわける必要があるのかも。
    これは当方の知識不足と実力不足からなるものです。
    マクロを組むにあたって、ひとつひとつ切り分けて作成しようと試みていましたが、わざわざシートを分けずとも集計可能であればそのほうが有難いです。

  • その他の返信(3件)を表示

返信を取り消しますが
よろしいですか?

  • 取り消す
  • キャンセル

アバター

質問した人からのコメント

2019/5/26 16:15:18

お二方ともご回答有難うございました。
引き続き勉強します。

ベストアンサー以外の回答

1〜1件/1件中

zic********さん

2019/5/2613:22:27

今のマクロを生かし、For~Nextで
For r=1 to 3
With Worksheets(choose(r,"sheet1","sheet2","sheet2"))
.Range("A1").AutoFilter _
Field:=1, Criteria1:="<>"
’ここのSheets("Sheet1")は、Withで省略可のはず
.Range("A:A").Copy
Sheets("集計").Range("A1").PasteSpecial _
Paste:=xlPasteValues, Operation:=xlNone, SkipBlanks:=False, Transpose:=False
.AutoFilterMode = False
End With
Next

End Sub

返信を取り消しますが
よろしいですか?

  • 取り消す
  • キャンセル

あわせて知りたい

みんなで作る知恵袋 悩みや疑問、なんでも気軽にきいちゃおう!

Q&Aをキーワードで検索:

Yahoo! JAPANは、回答に記載された内容の信ぴょう性、正確性を保証しておりません。
お客様自身の責任と判断で、ご利用ください。
本文はここまでです このページの先頭へ

「追加する」ボタンを押してください。

閉じる

※知恵コレクションに追加された質問は選択されたID/ニックネームのMy知恵袋で確認できます。

不適切な投稿でないことを報告しました。

閉じる