2015-06-12 262 views
1

因此,我正在編寫一個宏,它按列排序並清除包含某些類型數據的單元格,特別是如果它們是數字。我現有的代碼做這樣的事情來捕獲所有號碼字段和清除它們:VBA自動篩選單元格是否包含格式化爲字符串的數字

Selection.AutoFilter Field:=(i + 1), Criteria1:=">0" 
    Range(Cells(2, i), Cells(70000, i + 1)).Select 
    Selection.Clear 
    Worksheets("Sheet1").ShowAllData 


    Selection.AutoFilter Field:=(i + 1), Criteria1:="=0" 
    Range(Cells(2, i), Cells(70000, i + 1)).Select 
    Selection.Clear 
    Worksheets("Sheet1").ShowAllData 

這對於包含在數字格式的數字細胞正常工作。一些單元格包含數字格式化爲字符串,即什麼

="80" 

將生成時鍵入excel。我需要爲這個自動過濾器創建一個標準,它可以識別單元格是否包含格式化爲字符串的數字,但是我不知道如何,因爲Criteria:=「> 0」和Criteria:=「= 0」被字符串忽略。

回答

2

另一種方式:)我已經評論了代碼,但如果您仍有任何問題,請隨時發回。

Sub Sample() 
    Dim rng As Range 

    '~~> Change this to the relevant sheet 
    With Sheet1   
     '~~> Change format of the column to number 
     '~~> This is an example for Col A 
     '~~> Change as applicable 
     .Columns(1).NumberFormat = "0" 

     '~~> Convert number stored as text to number 
     .Columns(1).Formula = .Columns(1).Value 

     '~~> Use Special Cells to select all cells containing numbers 
     On Error Resume Next 
     Set rng = .Columns(1).SpecialCells(xlCellTypeConstants, xlNumbers) 
     rng.ClearContents 
     On Error GoTo 0   
    End With 
End Sub 
+0

這很有效,謝謝。 – BruceJohnJennerLawso

0

我不認爲你可以指定像AutoFilter的標準那麼複雜的東西。

但是,這裏有一個解決方法:

  1. 創建UDF這樣的:

    Function IsTextNumeric(r As Range) As Boolean 
        If Application.IsText(r) And IsNumeric(r) Then 
         IsTextNumeric = True 
        Else 
         IsTextNumeric = False 
        End If 
    End Function 
    
  2. 編程創建條件格式爲單元格範圍。條件格式允許您指定公式並使用該表達式的真/假值來決定是否將格式應用於單元格。該公式應該只涉及UDF。要應用的條件格式是單元格着色。

  3. AutoFilter允許您使用細胞着色作爲標準。

相關問題