2016-12-30 191 views
0

我想使用vba删除列中的特定值。如何使用vba删除列中的特定值

这是我现在的代码。但它当然不起作用。

vstd = Range("J6").Offset(l - 1, 0).Value 


     For Each Rng2 In Range("F6:F2555") 
     If Rng2.Value = vstd Then 
     Rng2.ClearContents 
     End If 
    Next 
+0

在clearcontents后需要一个“End IF” –

+2

'但是当然我t不工作。“非常模糊。你能指定错误吗? –

+0

另外,你是否有类似于'Sub clearCellContents()'的开始和'End Sub'的结尾?你必须把代码放在一个'Sub'中,而不仅仅是它自己的。 – BruceWayne

回答

0

这是接近你在找什么?

Sub Macro2() 

    Dim vSpecificVal As Variant 
    vSpecificVal = Range("J6").Offset(l - 1, 0).Value 

    Call Range("F6:F2555").Replace(vSpecificVal, "") 

End Sub 

请让我们知道感谢

+0

使您的示例真正有效1)您应该至少指定'lookAt:= xlWhole'参数并确保它不会简单地删除单元格_containing_所需的值。但是指定所有参数比较安全,因为_“每次使用此方法时都会保存LookAt,SearchOrder,MatchCase和MatchByte的设置”_ 2)您应该添加“Dim l As Long”和一些“l = someLongValue”3 )最后你可以避免'Call'并在'Replace'后面取掉括号,如下所示:'Range(“F6:F2555”)替换:= vSpecificVal,replacement:=“”,lookAt:= xlWhole,MatchCase:= True ' – user3598756

0

这里是一个AutoFilter()方法:

Option Explicit 

Sub ClearColumn() 
    Dim l As Long 

    l = 1 '<--| initializing 'l' variable value 
    With Range("F5:F2555") '<--| reference your range 
     .AutoFilter Field:=1, Criteria1:=Range("J6").Offset(l - 1, 0).Value '<--| filter on value in cell offsetted "l-1" rows from J6 
     If Application.WorksheetFunction.Subtotal(103, .Cells) > 1 Then .Offset(1).Resize(.Rows.count - 1).SpecialCells(xlCellTypeVisible).ClearContents '<--| if any filtered cell found clear their contents 
    End With 
    ActiveSheet.AutoFilterMode = False 
End Sub 

确保您初始化l值,以免有Range("J6").Offset(l - 1, 0)引用一个无效的范围(即l必须小于6)

相关问题