如何通過Access VBA檢查字符串是否包含字母(非數字)字符

立即分享:

在將資訊匯入資料庫之前進行「清洗」是相當標準的操作——畢竟,你開始使用資料庫的原因之一就是為了能夠根據預設條件對資料庫進行可預測的查詢,對吧?那麼,你該如何處理一些外部情況呢?例如,你需要從一個文件中導入信息,其中有人輸入了“$”,而另一個人卻認為你知道它代表的是金額;或者更糟的是,有人輸入了“上午”或“下午”,而另一個人卻使用24小時制?像往常一樣,有很多方法可以解決這個問題,其中一種方法是檢查字串是否只是一組數字,還是包含任何“非數字”字元。使用一些VBA程式碼,這種檢查非常簡單——本文將向你展示它究竟有多簡單…

為什麼我們需要這樣做?

數據字符如果您匯入的資訊類型不受您控制,無法控制其輸入或提取方式,那麼您肯定已經多次遇到過這個問題——人們會以自己最習慣的方式輸入訊息,而不是採用統一的方式。這意味著您遲早會遇到以下問題: 使 統一導入之前。

一個典型的例子是,您需要將數據導入到數字字段中,但是當您查看數據時,會發現其中一些已經用逗號分隔了數千個,另一些則添加了貨幣符號,而誰知道呢。

快速警告!

將尚未清理的數據導入數據庫可能會造成災難性的後果–充其量可能會使報告產生偏差,更糟糕的是,您可能會導致各種各樣的事情破裂–不要讓“臟”數據導入成為您的原因試圖 解決訪問問題 整個週末!

如何“擺脫”字母字符

您當然可以進行搜索並手動進行替換,但是這樣做可能會花費一些時間,並且您很可能會錯過某些內容(例如,如果僅搜索美元符號,則可能會錯過歐元符號或逗號,空格等)。 。 因此,最簡單,更可靠的方法是讓Access使用下面的代碼來完成艱苦的工作。

進入代碼...

Public Function removeNonNumeric(inString As String) As Long
    Dim outputString, chrString As String
    Dim strPos As Integer
    
    For strPos = 1 To Len(inString)
        chrString = Mid(inString, strPos, 1)
        If IsNumeric(chrString) Then outputString = outputString & chrString
    Next
    
    removeNonNumeric = CLng(outputString)
End Function

代碼做什麼

VBA代碼這個函數非常簡單明了。我們所做的就是遍歷傳入的字串,一次處理一個字元。如果遇到的字元是數字,就將其添加到臨時字串中,最後將其轉換為“long”類型。

修改代碼以適合您

如您所見–函數返回的數據類型為“ long” –如果您使用整數或浮點數等,則需要相應地更改函數,以便為數據庫返回正確的值類型。

作者簡介:

Mitchell Pond是 DataNumen,Inc.是數據恢復技術的全球領導者,包括 修復 SQL Server 數據庫 和excel恢復軟件產品。 欲了解更多信息,請訪問 萬維網。datanumen.COM

立即分享:

評論被關閉。