会下面的代码能够被修改以Excel的VBA宏删除基于列标题整个行
- 除去基于列标题和单元格的值的多个行,和
- 了多列要这样做行组合?
例如:列“状态”值“完成” 循环使用所有床单和寻找这样的状态,并删除其中的状态中有一个完整的全行所有标题?
Sub Delete_Rows_Based_On_Header_and_Value()
'
' Delete_Rows_Based_On_Header_and_Value Macro
'
' Declaration
Dim a as long
Dim w as long
Dim vDELCOLs as variant
Dim vCOLNDX as variant
Dim vDELROWs as variant
Dim vROWNDX as variant
vDELCOLs = array("status","Status Name","Status Processes")
vDELROWs = array("Complete","Completed","Done")
with Activeworkbook
for w=1 to .worksheets.count
with worksheets(w)
' I know this part is to delete columns based on the column name and I am not sure how to modify it to just check column name then delete row based on the value on that column only.
for a=lbound(vdelcols) to ubound(vdelcols)
vcolndx=application.match(vdelcols(a), .rows(1), 0)
if not iserror(vcolndx) then
.columns(vcolndx).entirecolumn.delete
end if
next a
end with
next w
end with
之前,你可以写任何代码更有效,你需要决定是否要删除行如果(a)的状态列包含“完成”或者状态名称列包含“已完成”,或者状态进程列包含“已完成”,或者(b)状态列包含“完成”并且状态名称列包含“已完成”并且状态处理列包含“已完成”。 – YowE3K
因此,对于1列名称和1个单元格值,即:Status和Complete,然后执行状态名称和完成的第三行以及状态处理的第三行,并完成正确操作会更容易?这样可以简化代码和流程? –
对于一个值来说,它会略微**更简单 - 它可以节省您想要的所有值是匹配还是任何值匹配。但是,如果你愿意只检查一列的值,那么你可能已经**已经决定,如果任何**值匹配,你想要删除该行。 – YowE3K