生成されて Excel にコピーされたフォームをクリーンアップするマクロに取り組んでいます。余分な数式を含む行を削除する必要がある最後の段階まで、すべてを把握しています。例:
400000 | Smith, John| 2.4 | 5.66| =C1+D1
400001 | Q, Suzy | 4.6 | 5.47| =C2+D2
400002 | Schmoe, Joe| 3.8 | 0.14| =C3+D3
Blank | | | | #VALUE
Blank | | | | #VALUE
列「A」を列「E」と比較し、「A」に値がないが「E」に値があるすべての行を削除する式はありますか?
空の「A」列のみを使用する基本的なループ式を試してみましたが、保持したい情報の下の行を永久に削除するまで機能し、このWebサイト(brettdjから)でフィルターを処理する式を見つけましたが、必要なものを適切にキャプチャするために編集する方法がわかりませんでした。
これは私がbrettdjから持っているものです:
Sub QuickKill()
Dim rng1 As Range, rng2 As Range, rng3 As Range
Set rng1 = Cells.Find("*", , xlValues, , xlByColumns, xlPrevious)
Set rng2 = Cells.Find("*", , xlValues, , xlByRows, xlPrevious)
Set rng3 = Range(Cells(rng2.Row, rng1.Column), Cells(1, rng1.Column))
Application.ScreenUpdating = False
Rows(1).Insert
With rng3.Offset(-1, 1).Resize(rng3.Rows.Count + 1, 1)
.FormulaR1C1 = "=OR(RC1="",RC1<>"")"
.AutoFilter Field:=2, Criteria1:="TRUE"
.EntireRow.Delete
On Error Resume Next
'in case all rows have been deleted
.EntireColumn.Delete
On Error GoTo 0
End With
Application.ScreenUpdating = True
その他の情報:
無視したいシートの最初の 5 行には、列のタイトルやレポート名などが含まれています。
40#### の変更によって埋められた行の数なので、単純にマクロで行 4 を削除することはできません。
私は(明らかに)マクロの広範な知識を持っていないので、特定の部分がどのように機能するかについての詳細な説明をいただければ幸いです. 助けてくれてありがとう。