
いつもお世話になります。
エクセル2002です。
(1)オートフィルターでデータを抽出(部署ごと)する。(インプットボックスで)
(2)抽出された行を1行ずつコピーし、【編集シート】のA1セルに貼り付け
(3)【印刷シート】の印刷
(データが3行あれば3枚の印刷がしたいのです)
《データ》
A列 B列
1 (部署)(商品名)
2 01 商品1
3 01 商品2
4 02 商品1
5 02 商品3
・・・・・・・・・・
----------------
Sub Macro1()
Dim 部署
部署 = InputBox("部署コードを入れてください")
Selection.AutoFilter Field:=1, Criteria1:=部署
Range("A1").Select
End Sub
------------------
↑のマクロにどう追加すればよいのかわからないので、教えてください。
よろしくお願いします。
A 回答 (3件)
- 最新から表示
- 回答順に表示
No.3
- 回答日時:
ユーザー操作を考えた場合、
>(1)オートフィルターでデータを抽出(部署ごと)する。(インプットボックスで)
ここは入力方式ではなくてリストからの選択方式のほうが良いのでは。
その場合、Application.Dialogs(xlDialogFilter)を使うと、
Excel既定のオートフィルタ.オプションダイアログを活用できます。
http://officetanaka.com/patio/patio.cgi?mode=vie …
似たような案件がありましたので参考にしてみてください。
No.2
- 回答日時:
大事なところを丸投げしていて、実質コードを書いてくださいというタイプだ。
マクロの記録で下記のコード前半ぐらいすぐ判るはず。それさえもやってないのかな。
しかしWEBで調べても、コード後半の処理は関連記事は少ないと思った。
Sub Macro1()
Dim 部署
Dim cl
部署 = InputBox("部署コードを入れてください")
Range("A1").CurrentRegion.Select
Selection.AutoFilter Field:=1, Criteria1:=部署
Selection.SpecialCells(xlCellTypeVisible).Select
For Each cl In Selection
If cl.Column = 1 And cl.Row > 1 Then
Worksheets("Sheet2").Range("B2") = cl
Worksheets("Sheet2").Range("B4") = cl.Offset(0, 1)
Worksheets("Sheet2").Range("A1:C20").PrintOut '(印刷ルーチン)
End If
Next
End Sub
ーーー
例データ
Sheet1のA1:B6
部署コード商品名
01商品1
01商品2
02商品1
02商品3
01商品4
ーーー
Sheet1をアクチブにして、
実行すると
01を指定した場合
Sheet2にデータが一時的にセットされて(B2セルに部署コード、B4セルに商品名をセット)
01商品1 で1枚
01商品2 で1枚
01商品4 で1枚
各々印刷される(テスト済み)。
C列以右列にもデーがある場合、
Worksheets("Sheet2").Range("B4") = cl.Offset(0, 1)の1を2,3、・・と変えたコードを連ねてください。
Sheet2は罫線、見出し、書式(いろ、フォント等)、列幅、行高等はVBA初心者のうちは手操作で設定したほうが良い。
部署コードのセットするセル位置、商品のセットするセル位置は質問者の適当なセルに変えてください。
空白セルがありえる場合は、印刷後、内容をセットするセルは空白にして、次の行のデータのセットを始めてください。
印刷の諸設定は必要があれば、マクロの記録をとって勉強のこと。
原データは間に空白行や列が無いデータであること。
ありがとうございました。
VBAがさっぱりわからないため、どこをどのように変えてよいのかわからず、マル投げして申し訳ありませんでした。
とっても助かりました。このまま使わせてもらいます。
No.1
- 回答日時:
マクロの自動記録を試してみることをお薦めします。
「ツール」-「マクロ」-「新しいマクロの記録」
これにより、手作業の内容がマクロに記録できます。
実際の使用に足るものにするには、上でできたものを多少一般化する必要がありますが、処理の全体の流れは変わらないはずです。
そこでわからないことがあれば、その部分について質問なさるのがよろしいかと思います。
早速のお返事ありがとうございました。
手作業のマクロの記録はしてみたのですが、どこをどのように変えてよいのかわからなかったので省いてしまいました。申し訳ありませんでした。
お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!
似たような質問が見つかりました
- Visual Basic(VBA) Sheet2の日付をキーにオートフィルターで2023年1月のデータを抽出し、Sheet3へ書き出すた 2 2023/03/06 23:57
- Excel(エクセル) Excelマクロ 差分抽出の方法が知りたいです。 2 2023/03/07 13:25
- Excel(エクセル) エクセルのマクロで複数シートを両面印刷するには? 2 2022/12/08 23:23
- Excel(エクセル) 【マクロ】プリントスクリーンした画像をエクセルに貼付して印刷したい 6 2022/11/30 20:11
- Excel(エクセル) ExcelVBAについて。 2 2022/12/10 20:08
- Visual Basic(VBA) データのある範囲を選択するVBAについて 2 2022/09/03 00:20
- Visual Basic(VBA) excelVBAについて。 5 2022/11/27 18:48
- Visual Basic(VBA) まとめシートから集計シートへA列のコードが一致したら1行コピーするマクロをネット上で見つけました。こ 1 2022/08/30 14:11
- Excel(エクセル) エクセルのマクロについて教えてください。 3 2023/02/07 14:47
- Excel(エクセル) excelVBAについて。 8 2022/12/11 13:47
このQ&Aを見た人はこんなQ&Aも見ています
関連するカテゴリからQ&Aを探す
おすすめ情報
このQ&Aを見た人がよく見るQ&A
デイリーランキングこのカテゴリの人気デイリーQ&Aランキング
-
エクセルで特定の文字列が入っ...
-
excel 小さすぎて見えないセル...
-
【Excel関数】UNIQUE関数で"0"...
-
エクセル マクロ オートフィ...
-
特定の文字がある行以外を削除...
-
Excelで非表示のセルをとばして...
-
エクセルVBA 最終行を選んで並...
-
A1に入力された文字列と同じ文...
-
excelのデータで色つき行の抽出...
-
エクセル 時間の表示形式AM/PM...
-
エクセル マクロで数値が変っ...
-
エクセル 上下で列幅を変えるには
-
Excel VBA 異なるファイルのシ...
-
エクセルマクロ オートSUM(合...
-
エクセル2016で時間を入力して...
-
Excelマクロ 期間を指定してデ...
-
Excel2007で、指定範囲の行高さ...
-
Excelのフィルター後の一番上の...
-
Excelで結合されたセルの間に列...
-
連続データが入った行の一番右...
マンスリーランキングこのカテゴリの人気マンスリーQ&Aランキング
-
特定の文字がある行以外を削除...
-
【Excel関数】UNIQUE関数で"0"...
-
エクセル 上下で列幅を変えるには
-
[EXCEL]ボタン押す→時刻が表に...
-
Excelのフィルター後の一番上の...
-
エクセルで特定の文字列が入っ...
-
excelのデータで色つき行の抽出...
-
エクセル マクロで数値が変っ...
-
Excel グラフのプロットからデ...
-
結合されたセルをプルダウンの...
-
エクセル マクロ オートフィ...
-
excel 小さすぎて見えないセル...
-
Excel ウインドウ枠の固定をす...
-
EXCELで最後の行を固定
-
電話番号の入力方式が違うデー...
-
エクセルVBA 最終行を選んで並...
-
エクセルのセルに指定画像(.jpg...
-
エクセル 時間の表示形式AM/PM...
-
連続データが入った行の一番右...
-
Excelで非表示のセルをとばして...
おすすめ情報