Cách kiểm tra xem một chuỗi có chứa ký tự chữ cái (không phải số) thông qua Access VBA

Chia sẻ ngay bây giờ:

Việc “làm sạch” thông tin trước khi nhập vào cơ sở dữ liệu là khá phổ biến – xét cho cùng, một trong những lý do bạn bắt đầu sử dụng cơ sở dữ liệu là để bạn có thể truy vấn cơ sở dữ liệu đó một cách có thể dự đoán được theo các tiêu chí đã định, đúng không? Vậy làm thế nào để xử lý các tình huống bên ngoài, ví dụ, khi bạn phải nhập thông tin từ một tệp mà một người nhập “$” nhưng người khác lại cho rằng bạn biết đó là giá trị tiền tệ – hoặc tệ hơn, khi một người nhập “am” hoặc “pm” nhưng người khác lại sử dụng đồng hồ 24 giờ? Như thường lệ, có rất nhiều cách để giải quyết vấn đề, nhưng một cách là kiểm tra xem một chuỗi có phải chỉ là một tập hợp các số hay không, hoặc liệu nó có chứa bất kỳ “ký tự không phải số” nào hay không. Với một chút VBA, loại kiểm tra này rất đơn giản – và bài viết này sẽ chỉ cho bạn thấy nó đơn giản như thế nào…

Tại sao chúng ta cần phải làm điều này?

Ký tự dữ liệuNếu bạn đang nhập bất kỳ loại thông tin nào mà bạn không kiểm soát được cách thức nhập hoặc trích xuất thông tin đó, thì bạn chắc chắn đã gặp phải vấn đề này nhiều lần (rất nhiều lần!) trước đây – mọi người nhập thông tin theo cách thuận tiện nhất cho họ, chứ không phải theo một cách thống nhất. Điều này có nghĩa là chỉ là vấn đề thời gian trước khi bạn phải... làm cho nó thống nhất trước khi bạn có thể nhập nó.

Một ví dụ điển hình về điều này là khi bạn cần nhập dữ liệu vào một trường số nhưng khi xem dữ liệu, bạn thấy rằng một số đã phân tách hàng nghìn bằng dấu phẩy, một số khác đã thêm ký hiệu tiền tệ – và ai biết được còn gì nữa.

Một lời cảnh báo nhanh chóng!

Việc nhập dữ liệu chưa được làm sạch vào cơ sở dữ liệu của bạn có thể khá tai hại – tốt nhất là nó có thể làm sai lệch báo cáo của bạn, tệ hơn là bạn có thể khiến mọi thứ bị hỏng – đừng để việc nhập dữ liệu “bẩn” là lý do khiến bạn đang cố gắng khắc phục sự cố truy cập tất cả các ngày cuối tuần!

Làm thế nào để "thoát khỏi" các ký tự chữ cái

Tất nhiên, bạn có thể thực hiện tìm kiếm và thay thế theo cách thủ công, nhưng làm điều đó có thể mất thời gian và bạn có thể bỏ sót điều gì đó (ví dụ: nếu bạn chỉ tìm kiếm ký hiệu đô la, bạn có thể bỏ sót ký hiệu euro hoặc dấu phẩy, dấu cách, v.v.) . Vì vậy, cách dễ nhất và đáng tin cậy hơn để làm điều đó là để Access thực hiện công việc khó khăn bằng cách sử dụng mã bên dưới.

Lên mã…

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

Mã làm gì

Mã VBAHàm này rất đơn giản. Tất cả những gì chúng ta làm ở đây là lặp qua chuỗi được truyền vào, từng ký tự một. Nếu ký tự đó là một số, chúng ta sẽ thêm số đó vào chuỗi tạm thời và khi hoàn thành, chúng ta sẽ chuyển đổi nó thành kiểu dữ liệu "long".

Điều chỉnh mã cho phù hợp với bạn

Như bạn có thể thấy – hàm trả về kiểu dữ liệu “dài” – nếu bạn đang làm việc với số nguyên hoặc dấu phẩy động, v.v. thì bạn sẽ muốn thay đổi hàm cho phù hợp để hàm trả về đúng loại giá trị cho cơ sở dữ liệu của bạn.

Giới thiệu tác giả:

Mitchell Pond là một chuyên gia phục hồi dữ liệu trong DataNumen, Inc., công ty hàng đầu thế giới về công nghệ khôi phục dữ liệu, bao gồm sửa SQL Server cơ sở dữ liệu và các sản phẩm phần mềm phục hồi excel. Để biết thêm thông tin, hãy truy cập www.datanumennăm

Chia sẻ ngay bây giờ:

Được đóng lại.