• ベストアンサー

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を作りたいのですがやり方がわかりません。どなたかおわかりの方お教え願えないでしょうか。お願いします。

質問者が選んだベストアンサー

  • ベストアンサー
  • imogasi
  • ベストアンサー率27% (4737/17069)
回答No.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を最後に入れてもよい。

saiz
質問者

お礼

ご回答ありがとうございます。 Range("A1:B6").AdvancedFilter Action:=xlFilterCopy, CriteriaRange:=Range( _ "C1:D3"), CopyToRange:=Range("M6:N12"), _ Unique:=False Range("M6:N12").Copy部分でコンパイルエラーになります。 また、C1:C3の打ち込みとか M6:N12を後で削除と言うのは手間のような感じが するのですが関数を使っては出来ないでしょうか?

その他の回答 (1)

  • Hageoyadi
  • ベストアンサー率40% (3145/7860)
回答No.1

ボタン一つで、って意味でしたら、他の方にお任せ。 データ→フィルタ→オートフィルタで B列のフィルタを「0より大きい」と設定して出来上がった結果をそっくりsheet2にコピペすることで出来ます。 コレを マクロの記録で記録すればボタン一つでってコトも出来ますが、マクロに関しては(も?)素人なので大きなことは言えません。

saiz
質問者

お礼

ご回答ありがとうございます。 やっぱり自動的にやりたいですねー 私もしっかりマクロ勉強したいですー。

関連するQ&A

専門家に質問してみよう