- ベストアンサー
ExcelVBAで必要な列を抽出する方法
- ExcelVBAを使って、指定した列のみを抽出する方法を教えてください。
- また、抽出した列を印刷する方法も知りたいです。
- 連続する列だけでなく、非連続の列も抽出できる方法があれば教えてください。
- みんなの回答 (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 で良い
お礼
ありがとうございます。 削除か非表示で考えてみます。