2017-07-05 26 views
0

2つの列をフィルタリングすることは可能ですか?それは、国と日付(現在の日付よりも小さい)をフィルタリングするか、または可能であれば、2番目のフィルタで強調表示されたセルのみをフィルタリングします。ありがとうございました。 Btw、ロン・デ・ブルインのコード、著作権を使用しています。私が探しているものの2つの列をフィルタリングするExcel VBA

例:あなたはさらにそれをフィルタリングするためにしなければならないすべては、その後、別の類似文を書きで

FilterRange.AutoFilter Field:=FieldNum, _ 
          Criteria1:=Cws.Cells(Rnum, 1).Value 

使用して一度フィルタリングsample excel

Sub Send_Row_Or_Rows_2() 

Dim OutApp As Object 
Dim OutMail As Object 
Dim rng As Range 
Dim Ash As Worksheet 
Dim Cws As Worksheet 
Dim Rcount As Long 
Dim Rnum As Long 
Dim FilterRange As Range 
Dim FieldNum As Integer 

On Error GoTo cleanup 
Set OutApp = CreateObject("Outlook.Application") 

With Application 
    .EnableEvents = False 
    .ScreenUpdating = False 
End With 

'Set filter sheet, you can also use Sheets("MySheet") 
Set Ash = ActiveSheet 

'Set filter range and filter column (column with e-mail addresses) 
Set FilterRange = Ash.Range("A1:H" & Ash.Rows.Count) 
FieldNum = 3 'Filter column = B because the filter range start in column A 

'Add a worksheet for the unique list and copy the unique list in A1 
Set Cws = Worksheets.Add 
FilterRange.Columns(FieldNum).AdvancedFilter _ 
     Action:=xlFilterCopy, _ 
     CopyToRange:=Cws.Range("A1"), _ 
     CriteriaRange:="", Unique:=True 

'Count of the unique values + the header cell 
Rcount = Application.WorksheetFunction.CountA(Cws.Columns(1)) 

'If there are unique values start the loop 
If Rcount >= 2 Then 
    For Rnum = 2 To Rcount 

     'Filter the FilterRange on the FieldNum column 
     FilterRange.AutoFilter Field:=FieldNum, _ 
           Criteria1:=Cws.Cells(Rnum, 1).Value 

     'If the unique value is a mail addres create a mail 
     'If Cws.Cells(Rnum, 1).Value Like "?*@?*.?*" Then 

      With Ash.AutoFilter.Range 
       On Error Resume Next 
       Set rng = .SpecialCells(xlCellTypeVisible) 
       On Error GoTo 0 
      End With 

      Set OutMail = OutApp.CreateItem(0) 

      On Error Resume Next 
      With OutMail 
       .To = Cws.Cells(Rnum, 1).Offest(0, 1).Value 
       .Subject = "Test mail" 
       .HTMLBody = RangetoHTML(rng) 
       .Display 'Or use Send 
      End With 
      On Error GoTo 0 

      Set OutMail = Nothing 


     'Close AutoFilter 
     Ash.AutoFilterMode = False 

    Next Rnum 
End If 
+0

あなたが直面しているエラーは何ですか?あなたはどこで修正しようとしましたか? – AiRiFiEd

+0

今のところ、1つの列のみがフィルタリングされた状態で動作しています。しかし、可能であれば、2つの列をフィルタリングできる方法を探しています。 – Mark

+0

あなたは次のリンクhttps://stackoverflow.com/questions/21834701/use-autofilter-on-more-than-2-criteria – AiRiFiEd

答えて

0

FilterRange.AutoFilter Field:=FieldNum2, _ 
          Criteria1:= 'your criteria 

これを行うと、選択した両方の列でフィルタリングされますs。同じデータセット上の3つ、4つ、または複数の他のフィルタについても同じです。

+0

ありがとうございますが、動作していません。ヘッダーのみが出ます。 – Mark

+0

これは、あなたの基準がジョブに対して適切でない場合に発生します。あなたの2番目の基準は何ですか? –

+0

私の2番目の基準は、今日の日付よりも(またはより小さい)日付、または可能であれば強調表示されたセルを除外します。 – Mark

関連する問題