- ベストアンサー
EXCELでセルの値がゼロ OR ブランクの行のみ別のシートに。
以下の様のEXCELがあります。 <SHEET1> A B 1 売上 2 A社 0 3 B社 4 C社 100 5 D社 150 6 E社 0 <SHHET2> A B 1 C社 100 2 D社 150 と言う様にSHEET1からSHEET2を作りたいのですがやり方がわかりません。どなたかおわかりの方お教え願えないでしょうか。お願いします。
- みんなの回答 (2)
- 専門家の回答
質問者が選んだベストアンサー
フィルタオプションをマクロでやって見ました。 (1)Sheet1のB列の「売上」列のブランクのセルを、一時的に「*」におき変える。 (2)C1:C3に 売上 0 * を入れる。 (3)VBE画面のModule1に下記をコピペする。 ALT+F11(VBE)、ALT+I(挿入),ALT+M(標準モジュール) Sub Macro3() Range("A1:B6").AdvancedFilter Action:=xlFilterCopy, CriteriaRange:=Range( _ "C1:D3"), CopyToRange:=Range("M6:N12"), _ Unique:=False Range("M6:N12").Copy Worksheets("Sheet2").Activate ActiveSheet.Range("A1").Select ActiveSheet.Paste End Sub 実行する。A1:B6、M6:N12は適宜変えてください。 Copy以下が以外に難しい。 Sheet2のA1から、結果データがコピーされる。 元のSheet1のM6:N12はDelでクリアしてください。 Worksheets("sheet1").Range("M6:N12").Clearを最後に入れてもよい。
その他の回答 (1)
- Hageoyadi
- ベストアンサー率40% (3145/7860)
ボタン一つで、って意味でしたら、他の方にお任せ。 データ→フィルタ→オートフィルタで B列のフィルタを「0より大きい」と設定して出来上がった結果をそっくりsheet2にコピペすることで出来ます。 コレを マクロの記録で記録すればボタン一つでってコトも出来ますが、マクロに関しては(も?)素人なので大きなことは言えません。
お礼
ご回答ありがとうございます。 やっぱり自動的にやりたいですねー 私もしっかりマクロ勉強したいですー。
お礼
ご回答ありがとうございます。 Range("A1:B6").AdvancedFilter Action:=xlFilterCopy, CriteriaRange:=Range( _ "C1:D3"), CopyToRange:=Range("M6:N12"), _ Unique:=False Range("M6:N12").Copy部分でコンパイルエラーになります。 また、C1:C3の打ち込みとか M6:N12を後で削除と言うのは手間のような感じが するのですが関数を使っては出来ないでしょうか?