いつもお世話になっております
Excelシートで、次のような表を作っています
[Sheet1]
A/B/C/D/E
センター/氏名/生年月日/契約開始日/契約終了日
※契約終了日のセルには計算式が入っていて、契約開始から18か月後の日付が出るようにしています。
また、G1セルに「契約終了月」、G2に「18」と入っています
そこで、[Sheet2]に必要な行のみを抽出し、印刷するまでをしたいのですが、どのようにしたら良いのかわかりません
今できているのは、こんな感じです
Private Sub CommandButton1_Click()
Worksheets("Sheet2").Select
Worksheets("Sheet2").Range("A:E").Clear
With Worksheets("Sheet1")
.Range("A:E").Copy Worksheets("Sheet2").Range("A1")
.Range("A:E").AdvancedFilter _
Action:=xlFilterCopy, _
criteriarange:=.Range("G1:G2"), _
CopyToRange:=Worksheets("Sheet2").Range("A:F"), _
unique:=False
End With
If Application.CountA(Worksheets("Sheet2").Range("A:A")) > 1 Then
MsgBox "今月末で契約終了です", vbOKOnly + vbInformation, "確認"
If MsgBox("印刷しますか?", vbYesNo + vbQuestion, "印刷") = vbYes Then
Worksheets("Sheet2").PrintOut
End If
Else
MsgBox "今月で契約終了となる方はいません", vbOKOnly + vbInformation, "確認"
End If
Sheets("top_page").Select
Range("A1").Select
End Sub
※top_pageシートでコマンドボタンをクリックするとマクロ実行できるようにしています
連続する列の抽出の仕方はわかるのですが、例えば
A列、B列、E列のみ
を抽出させる場合どのようにしたらよいのか、アドバイスをお願いします
できたら、抽出後、印刷までできるようなやり方がもっと簡単なのがあれば、教えていただけると助かります
色々勉強してはいるのですが、今一つわからないので、よろしくお願いします
No.1ベストアンサー
- 回答日時:
まず表題が>、必要な列を抽出する方法
となっているが
むしろ、必要な行を抽出する方法 、でしょう。その後不要列は表示しないを希望らしいがまず、行の抜き出しの問題でしょう。
ーー
まずデータ例が挙げられていないことが困る。
コードだけ書き連ねて、何をしたいのか書いてないのは、回答者にコードを読み解けとなって、質問する立場としては良くない。
>criteriarange:=.Range("G1:G2"), _
のRange("G1:G2"), _の中身が書いてないので、テストも「やりにくい。
ーーー
>A列、B列、E列のみ
を抽出させる場合どのようにしたらよいのか、アドバイスをお願いします。
不要列を削除ないしは非表示にしてはどうですか。
エクセルのフィルタ、フィルタオプションの設定では必要項目は指定できないのではないかな。
もしどうしてもやりたいなら、Sheet1の各行について、条件に合って居るかIF分で判断し、合致しておれば
必要な列だけ、Sheet2に書き出す。
このコードも常々回答で示している。
その場合は
シート名を明示してセルデータを扱うこと
コピー貼り付けでなく、代入文でセルの値を持っていくで済ませる。書式が必要なら下行、や最後などで別途手当てする。
のが初心者にはわかりやすいと思う。
Sub test04()
Sheets("Sheet1").Range("F5").Copy Destination:=Sheets("Sheet2").Range("C5")
End Sub
のようなことも可能だが。
セル単位でデータを扱うこと。ただし複数列対象Copyでも連続する列ではCopyが使えるが。列数が多くなければセル単位に統一しては。
ーー
>抽出後、印刷までできるようなやり
データが完成したあとの印刷のコードは、、マクロの記録を採れば判る。
Worksheets("Sheet2").PrintOut
はシートのPrintOutだが、(シート).Range(・・).Printout
を学んでは。
多分唯一データ情況で場合によって変わるのは、最終行(データ行数)だけでしょう。
これをとらえるコードなど毎日ここに出ている。
Googleで「エクセル VBA 最終行」で照会して見ること。
ーー
>Worksheets("Sheet2").Select
Worksheets("Sheet2").Range("A:E").Clear
のようなSelect方式は早く改めること(マクロの記録から来る、クセ)
Sub test03()
Worksheets("Sheet2").Range("A:E").Clear
End Sub
で良い
お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!
関連するカテゴリからQ&Aを探す
おすすめ情報
- ・漫画をレンタルでお得に読める!
- ・あなたの人生で一番ピンチに陥った瞬間は?
- ・初めて見た映画を教えてください!
- ・今の日本に期待することはなんですか?
- ・【大喜利】【投稿~1/31】『寿司』がテーマの本のタイトル
- ・集中するためにやっていること
- ・テレビやラジオに出たことがある人、いますか?
- ・【お題】斜め上を行くスキー場にありがちなこと
- ・人生でいちばんスベッた瞬間
- ・コーピングについて教えてください
- ・あなたの「プチ贅沢」はなんですか?
- ・コンビニでおにぎりを買うときのスタメンはどの具?
- ・おすすめの美術館・博物館、教えてください!
- ・【お題】大変な警告
- ・【大喜利】【投稿~1/20】 追い込まれた犯人が咄嗟に言った一言とは?
- ・洋服何着持ってますか?
- ・みんなの【マイ・ベスト積読2024】を教えてください。
- ・「これいらなくない?」という慣習、教えてください
- ・今から楽しみな予定はありますか?
- ・AIツールの活用方法を教えて
- ・最強の防寒、あったか術を教えてください!
- ・【大喜利】【投稿~1/9】 忍者がやってるYouTubeが炎上してしまった理由
- ・歳とったな〜〜と思ったことは?
- ・モテ期を経験した方いらっしゃいますか?
- ・好きな人を振り向かせるためにしたこと
- ・スマホに会話を聞かれているな!?と思ったことありますか?
- ・それもChatGPT!?と驚いた使用方法を教えてください
- ・見学に行くとしたら【天国】と【地獄】どっち?
- ・これまでで一番「情けなかったとき」はいつですか?
- ・この人頭いいなと思ったエピソード
- ・あなたの「必」の書き順を教えてください
- ・14歳の自分に衝撃の事実を告げてください
- ・人生最悪の忘れ物
- ・あなたの習慣について教えてください!!
デイリーランキングこのカテゴリの人気デイリーQ&Aランキング
-
Worksheets メソッドは失敗しま...
-
IIF関数の使い方
-
Cellsのかっこの中はどっちが行...
-
VBA 何かしら文字が入っていたら
-
vba 2つの条件が一致したら...
-
URLのリンク切れをマクロを使っ...
-
B列の最終行までA列をオート...
-
Excelで、あるセルの値に応じて...
-
エクセル 2つの表の並べ替え
-
文字列の結合を空白行まで実行
-
【VBA】2つのシートの値を比較...
-
VBA 列が空白なら別のマクロへ...
-
マクロについて。S列の途中から...
-
VBAのFind関数で結合セルを検索...
-
【Excel VBA】 B列に特定の文字...
-
VBAで指定範囲内の空白セルを左...
-
複数の列の値を結合して別の列...
-
VBAコンボボックスで選択した値...
-
【Excel VBA】カンマと改行コー...
-
Changeイベントでの複数セルの...
マンスリーランキングこのカテゴリの人気マンスリーQ&Aランキング
-
B列の最終行までA列をオート...
-
Cellsのかっこの中はどっちが行...
-
Worksheets メソッドは失敗しま...
-
Excelで、あるセルの値に応じて...
-
vba 2つの条件が一致したら...
-
IIF関数の使い方
-
VBA 何かしら文字が入っていたら
-
VBAのFind関数で結合セルを検索...
-
【VBA】2つのシートの値を比較...
-
文字列の結合を空白行まで実行
-
Changeイベントでの複数セルの...
-
URLのリンク切れをマクロを使っ...
-
VBAで指定範囲内の空白セルを左...
-
【Excel VBA】 B列に特定の文字...
-
VBAを使って検索したセルをコピ...
-
VBAで、特定の文字より後を削除...
-
エクセル 2つの表の並べ替え
-
データグリッドビューの一番最...
-
rowsとcolsの意味
-
VBAでのリスト不一致抽出について
おすすめ情報