回答編集履歴
2
コード修正
    
        answer	
    CHANGED
    
    | @@ -22,17 +22,21 @@ | |
| 22 22 |  | 
| 23 23 | 
             
            ```vba
         | 
| 24 24 | 
             
            Sub Sample1()
         | 
| 25 | 
            +
                Application.ScreenUpdating = False
         | 
| 26 | 
            +
                
         | 
| 25 27 | 
             
                Dim tbl As Range
         | 
| 26 | 
            -
                Set tbl = Range("A1").CurrentRegion | 
| 28 | 
            +
                Set tbl = Range("A1").CurrentRegion
         | 
| 27 | 
            -
                Set tbl = tbl.Resize( | 
| 29 | 
            +
                Set tbl = tbl.Resize(, tbl.Columns.Count + 1) '作業列追加
         | 
| 28 30 |  | 
| 29 31 | 
             
                Dim workCol As Range '作業列の式を設定する範囲
         | 
| 30 32 | 
             
                Set workCol = tbl.Columns(tbl.Columns.Count).Offset(2).Resize(tbl.Rows.Count - 2, 1)
         | 
| 31 33 | 
             
                workCol.Formula = "=IF(AND(A2=A3,B2=B3,D3=""未確定"",D2=""確定"",C3<=C2),1,0)"
         | 
| 32 | 
            -
             | 
| 34 | 
            +
             | 
| 33 | 
            -
                tbl.AutoFilter Field:=6, Criteria1:="1" | 
| 35 | 
            +
                tbl.AutoFilter Field:=6, Criteria1:="1"
         | 
| 34 | 
            -
                tbl.Offset(1).EntireRow.Delete | 
| 36 | 
            +
                tbl.Offset(1).EntireRow.Delete
         | 
| 35 37 | 
             
                tbl.AutoFilter
         | 
| 36 38 | 
             
                workCol.Clear
         | 
| 39 | 
            +
             | 
| 40 | 
            +
                Application.ScreenUpdating = True
         | 
| 37 41 | 
             
            End Sub
         | 
| 38 42 | 
             
            ```
         | 
1
コード追記
    
        answer	
    CHANGED
    
    | @@ -14,4 +14,25 @@ | |
| 14 14 |  | 
| 15 15 | 
             
            これをマクロの記録でVBA化して、それを元に書き換えるといいでしょう。
         | 
| 16 16 |  | 
| 17 | 
            -
            念のためにバックアップを取ってから作業をしてください。
         | 
| 17 | 
            +
            念のためにバックアップを取ってから作業をしてください。
         | 
| 18 | 
            +
             | 
| 19 | 
            +
            ---
         | 
| 20 | 
            +
             | 
| 21 | 
            +
            作業列とオートフィルターを使って削除する場合のコード例
         | 
| 22 | 
            +
             | 
| 23 | 
            +
            ```vba
         | 
| 24 | 
            +
            Sub Sample1()
         | 
| 25 | 
            +
                Dim tbl As Range
         | 
| 26 | 
            +
                Set tbl = Range("A1").CurrentRegion '表範囲取得
         | 
| 27 | 
            +
                Set tbl = tbl.Resize(tbl.Rows.Count, tbl.Columns.Count + 1) '作業列追加
         | 
| 28 | 
            +
                
         | 
| 29 | 
            +
                Dim workCol As Range '作業列の式を設定する範囲
         | 
| 30 | 
            +
                Set workCol = tbl.Columns(tbl.Columns.Count).Offset(2).Resize(tbl.Rows.Count - 2, 1)
         | 
| 31 | 
            +
                workCol.Formula = "=IF(AND(A2=A3,B2=B3,D3=""未確定"",D2=""確定"",C3<=C2),1,0)"
         | 
| 32 | 
            +
                
         | 
| 33 | 
            +
                tbl.AutoFilter Field:=6, Criteria1:="1" 
         | 
| 34 | 
            +
                tbl.Offset(1).EntireRow.Delete 
         | 
| 35 | 
            +
                tbl.AutoFilter
         | 
| 36 | 
            +
                workCol.Clear
         | 
| 37 | 
            +
            End Sub
         | 
| 38 | 
            +
            ```
         | 
