2個excel查找相同數據的方法「excel數據匹配怎麼操作」

工作中我常常需要從系統中導出數據,比如說我導出了店鋪銷售,但是當我用Vlookup查找某一個店鋪的銷售時,總是顯示錯誤值(#N/A)。很奇怪,查找與被查找的店鋪名稱完全一樣,為什麼匹配會出現錯誤呢?

原因其實是系統導出的數據有時會帶有非打印字符或空格(肉眼不可見),導致匹配出錯。比如下面的例子:

首先我們看一下單元格中的文本個數,公式計算和自己數出來相差1。這就是我們看不到的那個1。

Excel系統導出數據無法匹配怎麼辦?

那麼我們怎麼才能清除那個看不見的字符呢?

第一種方法:分列法

Excel系統導出數據無法匹配怎麼辦?

一直點擊下一步到最終完成即可。如果不可以,那就採用第二種方法。

第二種:函數法

這裡要介紹的函數是CLEAN和TRIM。

CLEAN 函數用於刪除文本中 7 位 ASCII 碼的前 32 個非打印字符(值為 0 到 31)。

TRIM可以除去字符串開頭和末尾的空格,ASCII為32。

通常我會將兩個函數一起使用,這樣既可清除空格,也可清除非打印字符。當然也可以單獨使用。

Excel系統導出數據無法匹配怎麼辦?
Excel系統導出數據無法匹配怎麼辦?

那麼我們怎麼知道文本是否含有非打印字符呢?

CODE函數可以告訴你。

CODE函數用於返迴文本字符串中第一個字符的數字代碼。如下所示:

Excel系統導出數據無法匹配怎麼辦?

CODE計算為9表示文本最前有水平製表符。因為水平製表符的ASCII碼為9。CODE如果小於等於33就可以判斷文本首字符為非打印字符或者空格。

做到這裡我很好奇,如果非打印字符或者空格在文本中間或者尾部又怎麼發現呢(當然一般不會在中間)?所以我編了一段代碼。使用效果如下:

Excel系統導出數據無法匹配怎麼辦?
Excel系統導出數據無法匹配怎麼辦?

代碼原理:

代碼逐個單元格逐個字符查看ASCII,如果大於等於0且小於33即判斷為含非打印字符或空格。

Excel系統導出數據無法匹配怎麼辦?
Sub asc編碼()

For Each rg In Selection
For i = 1 To Len(rg)
n = Mid(rg, i, 1)
num = asc(n)
If num < 33 And num >= 0 Then
rg.Offset(0, 1) = "含非打印字符或空格"
GoTo 100
End If
Next
100:
Next
MsgBox "結束"
End Sub

原創文章,作者:投稿專員,如若轉載,請註明出處:https://www.506064.com/zh-hant/n/273131.html

(0)
打賞 微信掃一掃 微信掃一掃 支付寶掃一掃 支付寶掃一掃
投稿專員的頭像投稿專員
上一篇 2024-12-17 14:04
下一篇 2024-12-17 14:04

相關推薦

發表回復

登錄後才能評論