如果特定单元格为空,VBA排序移位将删除2个单元格
我需要一些关于VBA代码的帮助。如果B列中的单元格为空,我尝试移位删除A列和B列中的2个单元格。我需要重复这个动作10次 我有一个VBA代码,它使用B列中空白处的过滤器来实现这一点。它在小数据集上运行良好,但是,由于我的数据集非常大,操作需要重复10次,因此需要花费大量时间如果特定单元格为空,VBA排序移位将删除2个单元格,vba,sorting,shift,Vba,Sorting,Shift,我需要一些关于VBA代码的帮助。如果B列中的单元格为空,我尝试移位删除A列和B列中的2个单元格。我需要重复这个动作10次 我有一个VBA代码,它使用B列中空白处的过滤器来实现这一点。它在小数据集上运行良好,但是,由于我的数据集非常大,操作需要重复10次,因此需要花费大量时间 Sub del() For i = 1 To 10 ActiveSheet.Range("A1").AutoFilter Field:=2, Criteria1:="=" Range("b:b" &
Sub del()
For i = 1 To 10
ActiveSheet.Range("A1").AutoFilter Field:=2, Criteria1:="="
Range("b:b" & Cells(Rows.Count, "A").End(xlUp).Row).Select
Selection.SpecialCells(xlCellTypeVisible).Delete Shift:=xlToLeft
Range("a:a" & Cells(Rows.Count, "A").End(xlUp).Row).Select
Selection.SpecialCells(xlCellTypeVisible).Delete Shift:=xlToLeft
Next i
End Sub
我在想,与其过滤,不如:
-对列B进行排序,以获得末尾的所有空格
-从第一个空白单元格选择,直到行结束(对于A列和B列)
-删除所选内容
-重复此操作10次
我尝试了一些方法,但我无法获得正确的代码
非常感谢您的帮助
谢谢,,
Daniela您的叙述是关于shift/delete“2列中的2个单元格”,而您的代码看起来好像要删除整个列。此外,您的“代码工作正常”是不可能的,因为
Range(“b:b”和Cells(Rows.Count,“A”).End(xlUp.Row)
也会抛出错误(并且Range(“A:A”…)
)。请澄清并告诉我们,通过过滤和删除/移位十次,您试图实现的真正目标是什么,也许会有更好的解决方案。您的叙述是关于移位/删除“2列中的2个单元格”,而您的代码看起来像是试图删除整列。此外,您的“代码工作正常”是不可能的,因为Range(“b:b”和Cells(Rows.Count,“A”).End(xlUp.Row)
也会抛出错误(并且Range(“A:A”…)
)。请澄清并告诉我们,通过十次过滤和删除/移动,您试图实现的真正目标是什么,也许会有更好的解决方案。