excel - 删除前导或尾随空格,但不删除 Excel 上文本或单词之间的空格
问题描述
如何删除实际字符串前后的一个或多个空格。字符串之间的空格必须保持原位。空格数(前导/尾随/之间)各不相同。
例子:
"1234 456abc "
" 1234 456bac "
" 1234 456cab "
结果应该是:
"1234 456abc"
"1234 456bac"
"1234 456cab"
解决方案
如果要保留所有中间空间,最简单的方法是使用简短的用户定义函数。
Function vbaTRIM(S As String) As String
vbaTRIM = Trim(S)
End Function
如果你不能使用 VBA,你可以使用这个相当复杂的数组函数:
=MID(A1,MATCH(TRUE,(MID(A1,ROW(INDIRECT("1:"&LEN(A1))),1)<>CHAR(32)),0),
LOOKUP(2,1/(MID(A1&" ",ROW(INDIRECT("1:"&LEN(A1)+1)),1)<>CHAR(32)),
ROW(INDIRECT("1:"&LEN(A1)+1)))-MATCH(TRUE,(MID(A1,ROW(INDIRECT("1:"&LEN(A1))),1)<>CHAR(32)),0)+1)
要输入/确认数组公式,请在按住ctrl+的shift同时按enter。如果您正确执行此操作,Excel 将{...}
在公式栏中看到的公式周围放置大括号。
这个函数有两个主要部分:
查找第一个非空格
=MATCH(TRUE,(MID(A1,ROW(INDIRECT("1:"&LEN(A1))),1)<>CHAR(32)),0)
查找最后一个非空格
=LOOKUP(2,1/(MID(A1&" ",ROW(INDIRECT("1:"&LEN(A1)+1)),1)<>CHAR(32)),ROW(INDIRECT("1:"&LEN(A1)+1)))
那么,只返回从开头和结尾剥离的空格:
=mid(a1,firstNonSpace,lastNonSpace-firstNonSpace+1)
如果您将公式的这些部分输入到某个单元格中,并使用公式评估工具,您应该能够弄清楚它们是如何工作的。
编辑
如果您有更新版本的 Excel,具有该FILTERXML
功能,您可以尝试:
=FILTERXML("<s>" & A1 & "</s>", "//s")
推荐阅读
- python - 使用python pandas在同一文件中提取以不同方式构造的部分CSV数据
- python - 为什么弯曲的边缘在 networkx 中对我不起作用?
- selenium-webdriver - sauceLabs 上的 webdriverIO 测试不适用于 Firefox
- r - Caret 包的置信区间
- moodle - Moodle 主页只有纯文本,没有主题
- php - echo php 正在转换为 ascii
- xsd - 创建一个支持 web.config 转换或多租户/配置 xml 文件之类的 XSD
- reactjs - 如何在 React 重新渲染中重用 DOM 节点?
- java - aws cognito 中的分页获取用户
- react-native - 在 React Native 中使用类和渲染 api 调用