首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >问答首页 >具有特殊功能的过滤单元

具有特殊功能的过滤单元
EN

Stack Overflow用户
提问于 2020-05-15 04:56:52
回答 2查看 58关注 0票数 1

我希望能够过滤A列(使用vba删除我不需要的内容)

示例:

  • df!gf:mqichgfdcg
  • test)2:@1jhbh5@j0
  • est@56:)hquct36A
  • h@hy.ju:A3)nxhd123QW
  • tempghj#b:jkb
  • temp234!A:gfgcjhgcj,hgk
  • hgdfht:2345vk!
  • hgchghc:268678954
  • hgchghc:A268678954

我希望使用以下规格的过滤器:

  1. 过滤器应该在字符: (每个单元格)
  2. 之后开始,必须至少有10个字符(大写、小写、数字、特殊字符)

https://i.imgur.com/3XiECI7.jpg这个细胞(A:3,A:5,A:7,A:8)不尊重标准

  1. 擦除不尊重标准的线条。

所以我想删除这个细胞。https://i.imgur.com/12N5k2O.jpg

我希望删除每个空单元格或行https://i.imgur.com/O3nIzDt.jpg

我有删除每个空行的代码

来源:Excel VBA - Delete empty rows选项显式

代码语言:javascript
复制
Sub Sample()
    Dim i As Long
    Dim DelRange As Range

    On Error GoTo Whoa

    Application.ScreenUpdating = False

    For i = 1 To 1000000
        If Application.WorksheetFunction.CountA(Range("A" & i & ":" & "B" & i)) = 0 Then
            If DelRange Is Nothing Then
                Set DelRange = Range("A" & i & ":" & "B" & i)
            Else
                Set DelRange = Union(DelRange, Range("A" & i & ":" & "B" & i))
            End If
        End If
    Next i

    If Not DelRange Is Nothing Then DelRange.Delete shift:=xlUp
LetsContinue:
    Application.ScreenUpdating = True

    Exit Sub
Whoa:
    MsgBox Err.Description
    Resume LetsContinue
End Sub
EN

回答 2

Stack Overflow用户

回答已采纳

发布于 2020-05-16 08:01:13

您可能考虑过了。我将暂时忽略问题中的VBA部分。您可以使用Excel的内置过滤功能过滤字符串:

  1. 确保字符串位于具有标题的列中(例如,将A1设置为“strings”)并过滤该列。
  2. 单击过滤器的下拉箭头,→“文本筛选器”→包含…。.

  1. 在Contains过滤器中输入:??????????。它将匹配包含一个:的任何值,后面跟着10个额外的字符。
票数 1
EN

Stack Overflow用户

发布于 2020-05-15 05:45:36

您可以使用这样的代码:

代码语言:javascript
复制
Sub test1()
    Dim OriginText, filterVal, startPosition
    Dim ThereIs10Char As Boolean
    Application.ScreenUpdating = False

    For i = 1 To Cells.Rows.Count ' this will be slow ,you better use integer number ( rows count number) instead of Cells.Rows.Count
        OriginText= Cells(i, "A").Value
        startPosition = InStr(1, OriginText, ":")
        filterVal = Mid(OriginText, startPosition + 1, Len(OriginText) - startPosition)
        ThereIs10Char = False
        If Len(filterVal >= 10) Then
            ThereIs10Char = True
        End If

        'I dont understand your mean for empty lines
        'you can use If condition for [while cells(i,"A").value="" Goto next i] or anything else

        If ThereIs10Char = True Then
            Rows(i).Delete Shift:=xlUp
            i = i - 1
        End If
    Next

    Application.ScreenUpdating = True
End Sub
票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/61812041

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档