excel怎么样将某列所有单元格中文本的非中文字符或数字或字母全部删除?

目录

    • 1. 简述
    • 2. 函数功能及参数介绍
      • (1)功能
      • (2)参数介绍
    • 3. 完整VBA代码
    • 4. 宏代码使用方法
    • 5. 效果图

1. 简述

  当我们要处理大量行数的excel数据时候,有时某列中有些行中的单元格内容中含有我们不想要的部分(比如包含一些特殊字符、数字、字母等等),这个时候我们想把这些不想要的部分删除,目前的excel没有相关的函数可以为我们解决这个问题,我们只能自己编写宏函数,实现这个功能,下面是一个功能很完备的宏函数,可以解决这个问题,大家可以直接复制代码到自己的文件中,也可以下载包含这个宏函数的文件,进行使用,宏文件包含多个常用的宏函数,并有详细介绍,大家可以根据需要使用。
 下载链接:https://download.csdn.net/download/u014541881/88036953
 如有特殊功能需求,可关注私信我。

2. 函数功能及参数介绍

(1)功能

 可以实现判断选中单元格是否有指定类的特殊字符,若有则删除,并返回删除后的单元格内容,并将选中的包含指定类特殊字符的单元格字体变红;没有则原样返回,不改变选中单元格字体颜色。

(2)参数介绍

  rng必填参数,代表选中的单元格。
  charType必填参数,代表要查询的特殊字符类型,notchin代表仅判断选中的单元格是否包含非中文汉字类的特殊字符,num代表仅判断选中的单元格是否包含数字类的特殊字符,letter代表仅判断选中的单元格是否包含字母类的特殊字符(包含大小写的字母);cus代表自己指定哪种特殊字符,仅判断选中的单元格是否包含指定的的特殊字符,指定的特殊字符在第三个参数customChars输入,如 “,;!” 代表仅判断选中的单元格是否包含逗号、封号、叹号这三个特殊,注意,第三个函数形参是可选参数,仅在第二个形参为cus的时候才需要输入第三个参数。 若包含参数定义的类型的特殊字符,则将选中的单元格中这些特殊字符逐个删除,并返回处理后的单元格内容,并将选中的包含指定类特殊字符的单元格字体变红;若不包含参数定义类型的特殊字符,则将单元格内容原样返回,不改变选中单元格字体颜色。

3. 完整VBA代码

Function CheckAndRemoveSpecialChars(ByVal rng As Range, ByVal charType As String, Optional ByVal customChars As String = "") As String
    On Error Resume Next ' 忽略可能的错误
    
    Dim cellValue As String
    Dim specialChars As String
    Dim i As Integer
    
    ' 检查参数是否有效
    If rng.Cells.Count > 1 Then
        CheckAndRemoveSpecialChars = "只能选择单个单元格作为参数。"
        Exit Function
    End If
    
    cellValue = rng.Value
    specialChars = ""
    
    ' 判断特殊字符类型
    Select Case charType
        Case "notchin"
            specialChars = "!@#$%^&*()-_=+[]{}|;':,.<>/?`~"
            specialChars = specialChars & GetNonChineseChars()
        Case "num"
            specialChars = "0123456789"
        Case "letter"
            specialChars = "abcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWXYZ"
        Case "cus"
            specialChars = customChars
        Case Else
            CheckAndRemoveSpecialChars = "输入的第二个参数为无效的特殊字符类型。"
            Exit Function
    End Select
    
    ' 删除特殊字符并返回处理后的单元格内容
    For i = 1 To Len(specialChars)
        cellValue = Replace(cellValue, Mid(specialChars, i, 1), "")
    Next i
    
   If cellValue <> rng.Value Then
        ' 解除单元格保护
        rng.Locked = False
    
         ' 设置字体为红色
         On Error Resume Next ' 忽略可能的错误
         rng.Font.Color = RGB(255, 0, 0)
         On Error GoTo 0 ' 恢复默认错误处理
    
          ' 上锁保护单元格
          rng.Locked = True
   End If
    
    CheckAndRemoveSpecialChars = cellValue
End Function

Function GetNonChineseChars() As String
    Dim nonChineseChars As String
    Dim i As Integer
    
    nonChineseChars = ""
    
    ' 添加非中文字符范围
    For i = 32 To 126
        If Not IsChineseCharacter(ChrW(i)) Then
            nonChineseChars = nonChineseChars & ChrW(i)
        End If
    Next i
    
    GetNonChineseChars = nonChineseChars
End Function

Function IsChineseCharacter(ByVal character As String) As Boolean
    Dim code As Long
    
    code = AscW(character)
    IsChineseCharacter = (code >= &H4E00 And code <= &H9FFF) Or (code >= &H3400 And code <= &H4DBF)
End Function

4. 宏代码使用方法

具体使用方法可仿照文章如何判断某列某个单元格是否包含特殊字符(如空格、数字、下划线等等),并返回特殊字符

5. 效果图

excel怎么样将某列所有单元格中文本的非中文字符或数字或字母全部删除?_第1张图片

你可能感兴趣的:(excel,VBA宏)