2014-04-13 76 views
0

我正在寻找通过特定范围的单元格进行排序并查看该单元格的LEN(gth)是否等于20.如果是,我想清除所述单元格的内容并移动到下一个单元格,直到它们全部被评估为止。如果匹配条件清除表格的单元格值

我有这个报告是从一个网站拉出来的,并出口到excel和烦恼是0.0%,显示为英镑符号(#x的20)。我尝试了其他搜索字符串的宏,它完全忽略了0%,一个常数是每个出现的单元格长度都是20个字符。

应该发生的是我:

1 Searching C3:U20 
2 for cell.len = 20 
3 if activecell = matches criteria 
4 then clear.contents 
5 Goto 1 until all activecells with a len of 20 are cleared 

谢谢您可以提供任何帮助。

* 编辑 * 因为我无法使这项工作,我用了一个 “解决”。这是效率低下,因为它只用在一张小桌子上,它并不重要。我只需要在“三个”单独的脚本中执行此操作。我发现如果我将百分比格式的范围转换为常规,我只能将溢出数字看作字符串。然后,一旦被“清除”我只是重新转换这些列的百分比格式:

Sub sub_ConvertToGeneral() 
''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''' 
''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''' 
'''' Convert the Percentage Columns to General Format 
''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''' 
''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''' 

    Columns("F:F").Select 
    'Application.FormulaBarHeight = 2 
    Range("F:F,H:H,L:M,O:O,S:S,U:U").Select 
    Range("U1").Activate 
    Selection.NumberFormat = "General" 
    'Selection.NumberFormat = "0.00%" 
    Range("A1:B1").Select 
End Sub 

Sub sub_Overflow() 
''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''' 
''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''' 
'''' Find Overflow and delete every instance of it 
''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''' 
''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''' 

    Dim FindString As String 
    Dim rng As Range 
    FindString = "2.6965E+308" 
50 
    If Trim(FindString) <> "" Then 
     With Sheets("Main Import").Range("C1:U20") 
      Set rng = .Find(What:=FindString, _ 
          After:=.Cells(.Cells.Count), _ 
          LookIn:=xlValues, _ 
          LookAt:=xlWhole, _ 
          SearchOrder:=xlByRows, _ 
          SearchDirection:=xlNext, _ 
          MatchCase:=False) 
      If Not rng Is Nothing Then 
       Application.Goto rng, True 
       ActiveCell.ClearContents 
       Do 
       Set rng = .FindNext(rng) 
       GoTo 50 
       Loop While Not rng Is Nothing 
       Else 
      End If 
     End With 
    End If 
    Range("A1").Select 
End Sub 

Sub sub_ConvertToPercentage() 
''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''' 
''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''' 
'''' Convert the General Columns to Percentage 
''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''' 
''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''' 

    Columns("F:F").Select 
    'Application.FormulaBarHeight = 2 
    Range("F:F,H:H,L:L,O:O,S:S,U:U").Select 
    Range("U1").Activate 
    'Selection.NumberFormat = "General" 
    Selection.NumberFormat = "0.00%" 
    Range("A1:B1").Select 
End Sub 
+1

告诉我们你尝试过什么至今。 –

回答

0

如果细胞被实际清除恰好包含20个字符(所以LEN(A1)将显示20),然后选择单元格要检查并尝试:

Sub dural() 
    For Each r In Intersect(Selection, ActiveSheet.UsedRange) 
    If Len(r.Text) = 20 Then 
     r.Clear 
    End If 
    Next r 
End Sub 

编辑#1:

This version will clear cells with a value greater than 1.0E+307: 

Sub dural() 
    For Each r In Intersect(Selection, ActiveSheet.UsedRange) 
     If IsNumeric(r.Value) Then 
      If r.Value > 1E+307 Then 
       r.Clear 
      End If 
     End If 
    Next r 
End Sub 
+0

嗯,我认为这可行,但显然不是,脚本在长度不超过20个字符的单元格上触发,但我刚才发现的是pund符号背后的真正问题是堆栈溢出。单元格的格式设置为在单元格被选中时给出0%的值,但实际值为2.69653970229347E + 308。 我只是想清除那些大声笑... – xXCableDogXx

+0

我们如何清除其值超过1.E + 308? –

+0

这对我来说很好,除非我不确定如何做到这一点。我越来越好,但我仍然遇到循环和搜索等问题。为了满足我的需求,我一直在努力修改其他代码大约一周,最后我终于在这里问了一个问题。 – xXCableDogXx

相关问题