精华内容
下载资源
问答
  • VBA代码删除字符串里所有空格(邮件地址内空格专杀!)
    千次阅读
    2021-03-25 14:16:26

    通过简单的问卷APP收上来的Email地址内夹杂大量的空格、中文符号,一进入和发件相关的工作环节就想杀人有没有?

    为了解决这个痛苦,今天研究出了一个组合使用 双重DoWhile循环 + 文本函数 组合消除字符串内部空格的小代码段供其他和我一样挣扎在一线的朋友们参考。代码比较6的请直接去最下方搬运拙作,我的注释写得及其详细,但凡有基础都能很快看懂。刚入门的朋友请先听我介绍以下思路。

    带人犯!这是一个典型的加在空格的email地址:Abc 12 @ nju .edu. cn 一个短短的地址夹了5个空格,简直丧心病狂……

    这个有问题的地址有两个处理难点:

    1. 空格不在字符串的两端而在中间,因此不能用简单的trim函数(无论是VBA还是Excel公式)解决
    2. 空格不止一个,网上有不少代码试图用replace的方法替换掉空格,但是很多都是挖了个坑,说明replace最起码在代码实现上不够直观,很多人用不好

    针对这两个问题我的思路是:

    1. 对于在中间的空格,可以先用InStr()方法锁定空格所在位置,然后把字符串从空格处劈成两半,对两半分别进行Trim()去空格——这样一来就把从中间去空格的问题转化成了常规的从两边去空格。随后再把这两半拼接起来即可。
    2. 由于邮件地址里面夹杂的地址不止一个,需要用DoWhile循环,再检查一次去过空格的字符串看是不是干净了,如果还包含空格就再来一遍……直到当前处理的字符串里再也没有任何空格。

    把这个思路落实到代码里就是:

    Sub Space_Killer()
    
        Dim ridx As Long ' 定义变量存储行标
        Dim w As Worksheet
        Dim org_email ' 定义变量存储经两端去空格的原始邮件地址
        Dim space ' 定义变量存储字符串中空格所在位置,即它的下标
        Dim L_part ' 定义变量存储空格左边的字符串
        Dim R_part ' 定义变量存储空格右边的字符串
        Dim Re_Concatenated ' 定义变量存储重组后的邮件地址
        
        Set w = ThisWorkbook.Worksheets("清理邮箱") '目标工作表的名字叫“清理邮箱”
        ridx = 3 '我要清理的内容是从“清理邮箱”工作表的第3行第5列开始的,因此ridx起始值为3,下面的所有列标也都是5
        
        Do While w.Cells(ridx, 5) <> ""
            org_email = VBA.Trim(w.Cells(ridx, 5)) '清理内部空格之前先把两端的去了
            
            Do While VBA.InStr(w.Cells(ridx, 5), " ") <> 0 '找不到才会等于0,找得到就不等于零
            	debug.Print org_email
                space = VBA.InStr(w.Cells(ridx, 5), " ") '找到现行字符串内空格的下标
                L_part = VBA.Trim(VBA.Left(w.Cells(ridx, 5), space)) '空格左边的截出来
                R_part = VBA.Trim(VBA.Right(w.Cells(ridx, 5), VBA.Len(w.Cells(ridx, 5)) - space)) '空格右边的部分截出来
                Re_Concatenated = L_part & R_part '把截好去了空格的两部分再重新对起来
                Debug.Print Re_Concatenated ’配合前面一次debug.print那些地址中间加在一个甚至多个空格的单元格内容就会在VBE立即窗口里面一一现身,并把空格随着循环数减少的过程展示出来,个人比较喜欢欣赏……
                w.Cells(ridx, 5) = Re_Concatenated '把对起来的重新写入单元格
                Rem 如果字符串里面还有空格,那么下一轮循环的时候就会触发InStr()<> 0条件从而再去一遍
            Loop
            ridx = ridx + 1 '这个不要忘,忘了的话一个有空格的单元格就能让你EXCEL无响应
         
        Loop
        
    End Sub
    

    珍爱生命,远离手残者的伤害从清空格开始!

    更多相关内容
  • Excel利用VBA实现去掉单元格两边空格

    千次阅读 2020-03-01 13:05:33
    直接贴代码,方便大家学习。 '清除所有sheet页中单元格两端的空格 Public Sub trimCell() Dim sheetCount, columnCount, rowCount, tempRow, tempCol Dim rng As Range '获取本excel的sheet的数量 sheetCount ...

    直接贴代码,方便大家学习。

    '清除所有sheet页中单元格两端的空格
    Public Sub trimCell()
        Dim sheetCount, columnCount, rowCount, tempRow, tempCol
        Dim rng As Range
        '获取本excel的sheet的数量
        sheetCount = ThisWorkbook.Sheets.count
        For i = 1 To sheetCount
            ThisWorkbook.Sheets(i).Select
            'sheet原始选择的单元格行号和列号
            tempRow = Selection.Row
            tempCol = Selection.Column
            '获取当前数据区域的行号和列号
            columnCount = ActiveSheet.UsedRange.Columns.count
            rowCount = ActiveSheet.UsedRange.Rows.count
            '将数据区域置于选择区域
            Range(Cells(1, 1), Cells(rowCount, columnCount)).Select
            '遍历数据区域每个单元格
            For Each rng In Selection
                rng.Value = Trim(rng.Value)
            Next
            '还原单元格选择区域
            Cells(tempRow, tempCol).Select
        Next
    End Sub
    

    操作步骤(基于excel2013)

    1.调用vba的编辑器

    2 粘贴代码,运行

     

     

     

    展开全文
  • 最近朋友让帮忙解决一个批量删除word中空行的问题,在网上搜索相关内容并试验,并不能删除包含空格的空行,如下图: 自己研究了下,终于解决,记录

    最近朋友让帮忙解决一个批量删除word中空行的问题,在网上搜索相关内容并试验,并不能删除包含空格的空行,如下图:

    自己对vb也不太熟悉,鼓捣半天,结果很简单,记录如下:

    Sub 空行删除()
    '
    ' 空行删除 宏
    '
    '
    Dim p As Paragraph
    Dim r As Range
    Dim s As String
    Dim l As Long
    For Each p In ActiveDocument.Paragraphs
    Set r = p.Range
    s = CStr(r.Text)
    l = Asc(s)
    If (l = 13 Or l = 11) Then
    r.Text = ""
    ElseIf (l = 32) Then
    r.Text = Trim(s)
    End If
    Next p
    End Sub

    新建一个宏,复制粘贴以上内容,运行即可

    展开全文
  • 比如其中,key2 ,key4, key6 后面都可能带空格 key1 key2 key3 key4 key5 key6 key7 key8 key9 key10 key11 key12 key10 key10 key10 key12 key12 VBA方法 所有的工...

     

     

    问题

    左上角为a1

    比如其中,key2 ,key4, key6 后面都可能带空格

     

    key1
    key2 
    key3
    key4  
    key5
    key6   
    key7
    key8
    key9
    key10
    key11
    key12
    key10
    key10
    key10
    key12
    key12

     

    VBA方法

    所有的工作表函数,都是针对单元格的? --也就是基本都得用循环

    数组公式不是吧

     'trim居然没生效,末尾空格也没去掉

    好像trim是 VBA自带函数?不是工作表函数?

    应该要修改value

    Sub 删除空格()                  'trim居然没生效,末尾空格也没去掉
    Dim target1 As Object
    Dim i As Object
    
    
    Set target1 = ActiveSheet.Range("a1:a17")   '是一个二维数组
    
    For Each i In target1
       Application.WorksheetFunction.Trim (i)
       'Application.WorksheetFunction.Trim (target1) trim是针对cell的
    Next i
    
    End Sub
    

    查找资料

    Selection.CurrentRegion.Select
    For Each c In Selection
    c.Value = Trim(c.Value)

    不能用TRIM函数,不然全部空格都会删除。
    要用LTRIM函数、RTRIM函数组合使用。
    LTRIM() 是去除字符首位的空格(不论有几个空格)
    RTRIM() 是去除字符尾部的空格(不论有几个空格)
    如二楼的回答,把Trim(c.Value) 改成 LTrim(RTrim(c.Value)) 即可。

    一个单元格的怎么写?
    比如:去掉ActiveSheet.Cells(1, 1)的话怎么写?

    Sub test()
        a = "   ax aa    b b   "
        Debug.Print Trim(a)
        Debug.Print Application.WorksheetFunction.Trim(a)
    End Sub
    结果
    ax aa    b b
    ax aa b b
    我知道了,trim()和Application.WorksheetFunction.Trim()不一样

    工作表函数中间的空格只保留一个

     

    Sub Oval1_Click33()

    Dim n, m, i

    For n = 1 To 10

     i = 1

     m = ""

     While i <> Len(Cells(n, 1)) + 1

     If Asc(Mid$(Cells(n, 1), i, 1)) > 33 Then

     m = m & Mid$(Cells(n, 1), i, 1)

     

     

     End If

      i = i + 1

      Wend

     Cells(n, 1) = m

     

    Next

    End Sub

     

    '替换整个文档范围的

    ThisDocument.Content.Text = Replace(ThisDocument.Content.Text, vbCrLf, "")

    '替换选中范围的

    Selection.Range.Text = Replace(Selection.Range.Text, vbCrLf, "")

     

    vbcrlf 

    char(10)

    char(10)&vbtab 

    这样都可以吗?

     

     

    仿造别人写的

    Sub 删除空格()
    Dim target1 As Object
    Dim cell_i As Object
    
    
    Set target1 = ActiveSheet.Range("a1:a17")
    
    For Each cell_i In target1
         cell_i.Value = Trim(cell_i.Value)
    Next cell_i
    
    
    End Sub

     

    Sub 删除空格()
    Dim target1 As Object
    Dim cell_i As Object
    
    
    Set target1 = ActiveSheet.Range("a1:a17")
    
    For Each cell_i In target1
         cell_i.Value = Application.WorksheetFunction.Substitute(cell_i.Value, " ", "")
    Next cell_i
    
    
    End Sub

     

     

     

    工作表函数方法

    去掉单元格内所有的空格

    =SUBSTITUTE(A1," ","")

    去掉首尾空格

    =TRIM(A1)  
    去掉所有非打印字符

    =CLEAN(A1)

     

     

    有人做了统计,牛逼了,这个图是转的

     

     

    后面这部分内容是转的

    excel表格中怎么删除看不见的空格或符号?

    方法一:各种处理方法对空格和不可见符号的处理能力对比

      1、对比如图



      方法二:用LEN函数判断看不见的空格和符号是否被删除。

      1、用LEN函数计算单元格字符个数

      因为是看不见的空格或者符号,我们无法用肉眼来判断是否删除成功,这时我们需要用LEN函数来辅助判断。比如在空白单元格B2中输入“=LEN(A2)”,就能计算出A2单元格中字符的个数。用LEN函数计算处理前和处理后的单元格字符个数,就能判断出是否删除成功了。



      方法三:使用TRIM函数去除空格

      1、TRIM函数的语法格式及实例

      =trim(text),用来删除字符串前后的空格,但是会在字符串中间保留一个作为连接用途。实例解说如图



      方法四:用替换法去除空格

      1、选中要替换的G列,点击EXCEL软件的菜单栏中的“编辑”,在下拉菜单中点击“替换”,在弹出窗口中点击“选项”。在查找内容框中,输入空格,在替换中不要输入。点击“选项”,以便更详细地设置。

     

      2、搜索框中选“按列”,区分大小写、单元格匹配、区分全/半角的前面不要选择,最后点击全部替换,就能把整列替换成无空格了。用查找替换法需要知道要查找的内容,但因为是不可见空格或符号,所以只能替换空格,而无法替换其它不可见符号。



      方法五:使用CLEAN函数去除符号

      1、CLEAN函数的语法格式及实例

      =CLEAN(text),要从text中删除非打印字符的任何工作表信息。CLEAN 函数被设计为删除文本中 7 位 ASCII 码的前 32 个非打印字符(值为 0 到 31)。实例解说见图。



      方法六:使用SUBSTITUTE函数去除空格和符号

      1、SUBSTITUTE函数语法及实例

      =substitute(text,old_text,new_text,[instance_num])

      =substitute(需要替换的文本,旧文本,新文本,第N个旧文本)

      参数Instance_num ——为一数值,用来指定以 new_text (新文本)替换第几次出现的 old_text(旧文本)。

      参数Instance_num 可省略,这表示用 new_text(新文本)替换掉所有的old_text(旧文本)。

      实例解说如图

    展开全文
  • 本期学习的函数是Trim()函数。 要处理的字符串前面和后面都有讨厌的空格,必须要把他们去掉,每个单元格的内容才可以保持整齐。...Trim()函数只会去掉头部和尾部的空格,因此,如果字符串中间有空格,是无法...
  • 当我们将一个网页另存为一个文本文件并将文本文件中的所有内容复制到Word2007中进行编辑时,有时会遇到大量的空格和空行,运用该宏按钮可以全部删除Word文档中的空格和空行(由于空行产生的复杂性,可能一次不能删除...
  • excel表格处理当前工作表时,如果有几行中穿插着空白行,把下面代码复制进去,自动删除掉 Sub DeleteBlankRow() Dim IngFirstRow As Long Dim IngLastRow As Long Dim a As Integer IngFirstRow = ...
  • 对于js中eval()函数的理解和写一个函数trim()去掉字符串左右空格;对于js中eval()函数的理解是本人心得不一定正确,感兴趣的朋友参考下,或许对你学习eval()函数有所帮助
  • Excel单元格空格删除是表哥表姐们日常工作中经常遇到的问题,大多数人对这个问题的常规解决方法就是:1、全选工作表,按ctrl+H键,弹出查找和替换工作框2、在查找和替换工作框的“查找内容”项,输入“ ”,在...
  • Sub 段落首行缩进转为空格() Dim ib As Paragraph For Each ib In ActiveDocument.Paragraphs '排除表格 If ib.Range.Information(wdWithInTable) = False Then ib.Range.Select '缩进不一定是2个字符,只要...
  • 摘 要:微软Office中的VBA编程功能可以将办公操作自动化。由于现代翻译中绝大多数原文和译文都用办公软件呈现,而且现代翻译中译前和译后的编辑工作基本上都可以在office软件中完成,因此VBA编程可以将翻译实践中的...
  •   个人制作的 VBA 代码加密混淆器,帮你加密你的宏代码,让它不再那么易读。因 VBA 的方便一直以来都喜欢用它写一些小工具,了解多了也就知道这种代码编写的工具完全没有安全性可言,工程密码形同虚设,很容易破解...
  • 今天在使用Excel VBA编辑器修改代码的时候发现输入空格会自动退回,另外在输入&和引号时也会被自动转义,几乎无法正常编写代码。按照如下步骤可以解决该问题:  1. 在Excel中找到Developer菜单。如果没有看到...
  • vb去除前后空格trim()函数使用
  • EXCEL空格删除

    2020-12-19 01:05:32
    方法一:用EXCEL函数 SUBSTITUTE思路:将空格“ ”用“”来代替,...即它不能将字符串(中文汉字)里的空格全部删除掉,仍留一个空格。在从其他应用程序中获取带有不规则空格的文本时,可以使用函数 TRIM。语法 TRIM(...
  • VBA——基础代码

    千次阅读 2019-04-04 19:27:42
    '删除要倒着删除,正删,删除了第二行,第3->2,4->3,5->4,删除第四行,实际删除的是第五行 Rows(rownum).Delete Next rownum End Sub 'for-next结构 Sub max_test(): Sheets("8").Range("A:A").Find...
  • 实用VBA代码

    千次阅读 2018-08-11 00:20:28
    '去掉两端空格 Debug.Print Len(Trim(s)) '替换s中子串a,用b替代 Debug.Print Replace(s, "world" , "chadm" ) '从左边取若干字符 Debug.Print Left(s, 5 ) '从右边取若干字符 Debug.Print Right(s, 5 )...
  • 据部分用户反映,在我们进行文本编辑或者编写代码时,当我们按下空格键来打出“空格号”时会删除后面的文字内容,许多用户不知道是什么原因造成的,其实如果用户仔细观看后一定会发现,此时输入的光标并不是正常的...
  • vba 删除空值的单元格,上移数据

    千次阅读 2016-04-14 16:00:00
    Sub aa() Dim arr As Variant Dim i As Integer Dim j As Integer Dim rng As Range Dim temp As Variant arr = Range("a1", [a65536].End(3)).Value j = 1 For i ...
  • VBA-加快你的代码运行速度--转自ExcelHome

    千次阅读 多人点赞 2020-05-14 14:42:32
    我们知道,用VBA实现同一个效果可能有多种不同的方法,写出一个最有效率的代码是大家都追求的,但是假如我水平有限,经验不足,实践不多,或者逻辑线路的设计不够简洁清爽,是不是就无法大幅提高代码速度?当然不是,如果你...
  • VBA删除如下内容,解决思路都不同 删除1列的空行(本文要做的) 删除整个区域内的空行 删除整个区域内的空格(这个一般很少有这种需求,用处不大----可用currentregion .specialcells()解决) 下...
  • 文章目录1 Tools1.1 关闭用户表单1.2 终止下面操作1.3 字符串拼接1.4 保留路径的空格字符1.5 去掉换行符1.6 Excel操作1.6.1 绝对路径1.6.2 SheetName1.6.3 Save1.6.4 某个Sheet某个单元格的值2 数据初始化3 执行脚本...
  • 如果Excel单元格内包含了换行符(又称,软空格,Chr(10),vbLF),则使用Len()函数统计...VBA代码如下(虽然只有一行,调试也花了不少时间,但是作用却不小)Sub removeChr10() Range("A2") = Replace...
  • 当某一列有空白单元格时,如下图所示 在下拉菜单中,也会存在空白单元格 常规制作下拉菜单的方法没有办法避免该问题,所以需要利用VBA解决这个问题二、解决方法解决该问题的VBA代码如下:Private Sub Worksheet_...
  • 文章目录前言一、思路二、写代码总结 前言 特定场景: 工作中经常遇到一些软件导出的表格,其中的各级小计分布在不同的列,“小计”二字之间有的还加入了数量不等的空格,实际统计时这些小计行在其中非常碍事,于是...
  • 代码复制特定范围的单元格,每个... )我想删除每个单元格之前和之后出现在主体中的空格,并用逗号(,)分隔每个单元格值 . 使用了修剪命令,但没有运气 .Sub Mail_Selection_Range_Outlook_Body()Dim rng As Ra...
  • 实现九九乘法表的代码相对简单,但涉及结构嵌套很典型,希望通过整个实例可以帮助理解程序结构嵌套。首先要说明一点没有介绍过的知识,即单元格的cells(行号,列号)属性表示方法,参数分别行号和列号。且列号以数字...
  • Excel宏批量转置并删除空格

    千次阅读 2019-11-13 18:15:56
    VBA代码 Sub 转置并删除空格() ' ' 转置 宏 ' 快捷键: Ctrl+Shift+U ' 设置屏幕不滚动 Application.ScreenUpdating = False Range("B1").Select ActiveCell.Range("A1:A6").Select Do While ActiveCe...

空空如也

空空如也

1 2 3 4 5 ... 20
收藏数 1,473
精华内容 589
热门标签
关键字:

vba删除空格代码