こんにちはゲストさん。会員登録(無料)して質問・回答してみよう!

解決済みの質問

エクセル・マクロについて教えてください

こんにちは。エクセルのマクロについて教えてください。
エクセルの表で毎日20000~30000行くらいのデータがあり、フィルタを掛けてやるのもいいですが、業務効率を考えて、マクロを使用したいと思っています。
実行したい内容は、C列(担当)は8と721以外は削除、F列(地域)は渋谷と品川以外は削除、G列(コード)は1000未満と空白行は削除、H列(数量)は0以下を削除
簡易記録マクロで記録してみましたが、毎回データの内容が異なるため、H列のマイナスが削除されていなかったり等、実行したい結果が得ることができませんでした。
マクロも少し勉強していますが本やネットでも検索したりしましたが、うまくできませんでした。ご教授ください。

投稿日時 - 2018-07-19 10:37:39

QNo.9519685

困ってます

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

'
Option Explicit
'
Sub Macro1()
'
  Dim Row As Long
'
  For Row = [A1].End(xlDown).Row To 2 Step -1
'
    If Cells(Row, "C") <> 8 And Cells(Row, "C") <> 721 Or _
      Cells(Row, "F") <> "渋谷" And Cells(Row, "F") <> "品川" Or _
      Cells(Row, "G") < 1000 Or _
      Cells(Row, "H") <= 0 Then
      Rows(Row).Delete
    End If
  Next Row
End Sub

投稿日時 - 2018-07-19 13:28:24

お礼

ご回答ありがとうございます。欲しい結果が得られました!助かりました!マクロの勉強頑張ります!

投稿日時 - 2018-07-19 13:49:01

このQ&Aは役に立ちましたか?

0人が「このQ&Aが役に立った」と投票しています

回答(3)

ANo.3

検索条件が変わる事もあると想定して……。
元の表がSheet1にあるとします。
Sheet2のA1:D3に添付の図の様に検索条件を入力します。

で、マクロはたった一行

Sub Sample()
  Sheets(1).Range("A:J").AdvancedFilter Action:=xlFilterCopy, CriteriaRange:=Sheets(2).Range("A1:D3"), CopyToRange:=Sheets(2).Range("F1"), Unique:=False
End Sub

投稿日時 - 2018-07-19 13:48:49

ANo.1

ごめんなさいっ><
マクロではないのですが・・・以下の方法でも可能ではないでしょうか?
https://www.forguncy.com/blog/20170714_filteroption
これ参考にして一度やってみられては?
『抽出範囲への抽出』これでもできますよっ
ですが・・・ マクロにこだわるのであれば、読み流して下さい><

参考URL:https://www.forguncy.com/blog/20170714_filteroption

投稿日時 - 2018-07-19 11:26:43

お礼

ご回答ありがとうございます。フィルタでやる方法は分かります。やはりマクロで一発変換が希望です。ありがとうございました。

投稿日時 - 2018-07-19 11:34:56

あなたにオススメの質問