【原创】VBA(实验23)如何去掉一列中的空格,多种工作表函数方法以及VBA方法

92 篇文章 51 订阅

 

 

问题

左上角为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(旧文本)。

  实例解说如图

  • 0
    点赞
  • 11
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
可以使用 VBA 的 Replace 函数和 Trim 函数来实现该功能。具体步骤如下: 1. 选需要操作的单元格范围,例如 I1:I10。 2. 在 VBA 编辑器打开该工作的代码窗口,可以通过快捷键 Alt + F11 来打开。 3. 在代码窗口输入以下代码: ``` Sub RemoveEmptyLine() Dim cell As Range For Each cell In Selection If InStr(cell.Value, vbLf) > 0 And Trim(Right(cell.Value, Len(cell.Value) - InStrRev(cell.Value, vbLf))) = "" Then cell.Value = Replace(cell.Value, vbLf, "") End If Next cell End Sub ``` 4. 点击运行按钮或者按下 F5 键执行代码。 代码解释: - 第一行定义了一个名为 RemoveEmptyLine 的子过程。 - 第二行定义了一个 Range 类型的变量 cell,用于遍历选的单元格范围。 - 第三行开始循环遍历每一个单元格。 - 第四行判断单元格是否包含换行符,如果包含则继续执行下一步操作。 - 第五行使用 InStrRev 函数定位最后一个换行符的位置,然后使用 Trim 函数删除该位置之后的空格。 - 第六行判断删除空格后单元格是否为空,如果为空则说明该换行符后没有内容,需要进行删除操作。 - 第七行使用 Replace 函数将换行符替换为空字符串。 - 最后一行结束循环。 注意事项: - 该代码只能删除一行之后没有内容的换行符,如果一行有多个换行符且其后都没有内容,需要多次运行代码才能全部删除。 - 该代码只对选的单元格范围进行操作,如果需要对整个工作进行操作,需要修改代码的 Selection 为该工作的单元格范围。

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值