2014-11-04 198 views
0

通过任何方法(导入,粘贴,...)将数据导入到excel中时我有时会遇到以下问题。在单元格的开头,文本前面有一个额外的空间。现在我知道通常程序,即处理这个问题:无法删除excel中的非空格空格字符

trim(cell number) 

,如果它不是一个空格字符

=TRIM(SUBSTITUTE(cell number,CHAR(160),CHAR(32))) 

但此时这两个没有工作。我确实尝试了其他替代品CHAR。

而在开始的人物只是简单的怪异。当我转到单元格的最开始部分并尝试删除它时,我必须按两次删除键才能删除一个空格!但是当我转到单元格中的第一个字符时,只需按下一次即可。

我还可以做些什么来消除这个奇怪的非空格空白字符?

+0

你从字符串中获得CHAR代码吗? – 2014-11-04 18:19:04

+0

我试过了。我使用ROW()将每个ASCII字符显示为255,然后对每个字符进行奇怪的字符测试。所有人都成了虚假的。当使用@加里的学生答案时,我得到一个字符的两个代码。 – user1181337 2014-11-04 18:47:43

+0

是的。我的猜测是你有一个CRLF。您是否尝试过'CLEAN'功能?你知道VBA吗? – 2014-11-04 19:14:13

回答

0

让我们假设A列有一些文本,其中一些单元格很好,有些文本的前面有像字符一样的奇怪空间。所以我们想改变一些细胞,有些我们不改变。

1)在每个单元格中用一个字母创建一个列表。我决定走到H列表的右边。因此,例如,单元格H1具有A,单元格H2具有B等等。

2)获取我们想要编辑的单元格的长度。我已经把这个公式放在B1单元格中。

=LEN(A1) 

3)测试单元格的第一个字母。这给了我们哪个单元改变,哪个不改变。我把这个公式放在C1单元格中。

=ISNA(VLOOKUP(LEFT(A1),$H$1:$H$26,1,0)) 

4)使用RIGHT和LEN的结果改变(或不依赖于步骤3)。

=IF(B1,RIGHT(A1,B1-2),A1) 

请注意,我必须减去2个空格而不是一个?就像我说的那样,这是一个奇怪的角色。

5)重复下一列。

1

如果单元格A1 包含不可见的垃圾字符,则必须识别他们才能删除他们。

选择一些细胞,然后输入:

=IFERROR(CODE(MID($A$1,ROWS($1:1),1)),"") 

和复制下来。这会给你每个字符的CHAR代码A1

然后你可以使用替代()删除罪犯。

+0

对,我试图找出它,但找不到代码。通过使用你的方法(Thank You BTW),第一个字符是ASCII 63,它是?在牢房里没有可见的。然后是第二个字符,它是一个空格的ASCII 32。两个字符为一个空格。 – user1181337 2014-11-04 18:52:58

+0

你正在处理** unicode字符** – 2014-11-04 19:06:02

+0

那么它看起来像你的方法返回的代码是ASCII码。我查找了ASCII表中的一些代码,并且它们匹配,但不匹配unicode表。 – user1181337 2014-11-04 19:18:12

0

如果您的字符串的第一个字符合法将在集合[A-ZA-Z0-9],那么你可以使用这个公式:

=MID(A1,MIN(SEARCH({"a";"b";"c";"d";"e";"f";"g";"h";"i";"j";"k";"l";"m";"n";"o";"p";"q";"r";"s";"t";"u";"v";"w";"x";"y";"z";0;1;2;3;4;5;6;7;8;9},A1&"abcdefghijklmnopqrstuvwxyz1234567890")),99) 

其中99长于最长的字符串可能。如果还有其他合法的起始字符,则将它们添加到数组常量和结尾的字符串中。

如果您可能需要删除尾随空格(char(32)),则可以将上述内容包含在TRIM函数中。