在Excel中,我們可以通過(guò)TRIM和CLEAN這兩個(gè)函數(shù)來(lái)清除數(shù)據(jù)單元格中多余的空格,但CLEAN函數(shù)也有其局限性,它只能清除ASCII代碼列表中十進(jìn)制代碼的0-31所代表的字符。

但是對(duì)于十進(jìn)制代碼為160的字符,則是行不通的。

因此,我們另辟蹊徑,先使用Substitute函數(shù),其功能相當(dāng)于查找并替換,例如,我們可以告知此函數(shù)要查找的字符并且替換掉這些字符。
先看一個(gè)簡(jiǎn)單的案例:在“Email”列中,有些數(shù)據(jù)有單個(gè)空格(因人名中的姓里有一個(gè)空格字符),我們?nèi)绻謇淼暨@些空格,使用TRIM函數(shù)是不行的,因?yàn)檫@些空格是單個(gè)空格字符。

我們使用Substitute函數(shù)來(lái)解決以上問(wèn)題:雙擊H2單元格,在“=”后面輸入Substitute函數(shù),第一個(gè)參數(shù)為text(文本),即當(dāng)前單元格中的文本,第二個(gè)參數(shù)為要替換掉的字符,此例中為空格,故雙引號(hào)中輸入一個(gè)空格,第三個(gè)參數(shù)為替換后的字符,此例為空,輸入一個(gè)雙引號(hào)即可,不用添加任何東西。

按Enter鍵并使用快速填充功能復(fù)制此函數(shù)公式于整列數(shù)據(jù)單元格中,那些沒(méi)有多余空格的數(shù)據(jù)不變,但是原先有空格的數(shù)據(jù),此時(shí)空格已經(jīng)不存在了。

同理,我們將Substitute函數(shù)應(yīng)用到“Events”列的數(shù)據(jù)中,不過(guò)這里又有另一個(gè)小問(wèn)題,在給Substitute函數(shù)設(shè)定參數(shù)時(shí),如果要替換的字符為空格,我們可以直接輸入,但代碼為160的字符,即“不換行空格(non-breaking space)”,則不容易直接進(jìn)行輸入,所以我們要用到另一個(gè)輔助函數(shù)UNICHAR。
UNICHAR函數(shù)用于將ASCII的十進(jìn)制代碼轉(zhuǎn)換成實(shí)際的字符,如UNICHAR(160)返回的就是一個(gè)“不換行空格”,可將其看作是與UNICODE相對(duì)應(yīng)的一個(gè)函數(shù)。
雙擊I2單元格,在“=”后輸入Substitute函數(shù),其中第二個(gè)參數(shù)為UNICHAR(160)。

通過(guò)Substitute和UNICHAR函數(shù),我們已經(jīng)將“Events”列中的“不換行空格”字符清除了,但數(shù)據(jù)中仍然有代碼為32的空格字符,對(duì)此,我們使用TRIM函數(shù)即可。

在TRIM函數(shù)的作用下,我們看到數(shù)據(jù)的“Length”和“Code”現(xiàn)在已顯示正確,唯一剩下的問(wèn)題就是,“Events”中這些看似為“數(shù)字”的數(shù)據(jù)如何真的以數(shù)字型的數(shù)據(jù)顯示。要完成這最后一步,我們會(huì)用到VALUE函數(shù)。
VALUE函數(shù)用于僅包含數(shù)字的文本,如果有其他的文本字符,則會(huì)返回錯(cuò)誤。
在TRIM函數(shù)之前,輸入VALUE函數(shù);“Numeric”列全部顯示為TRUE。

與“Events”關(guān)聯(lián)的數(shù)據(jù)透視表,刷新之后,在進(jìn)行合計(jì)運(yùn)算時(shí),就不再有問(wèn)題了。

至此,關(guān)于在Excel中清理數(shù)據(jù)的這一主題,我們就暫告一段落,重點(diǎn)需要了解的是:
1. 在清理數(shù)據(jù)之前,復(fù)制一份原始數(shù)據(jù)專門用于數(shù)據(jù)的清理。
2. 了解并熟悉與數(shù)據(jù)清理相關(guān)的一系列函數(shù):TRIM、CLEAN、ISNUMBER、LEN、UNICODE、SUBSTITUTE、UNICHAR、VALUE等。