回答編集履歴
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
|
+
```
|