Linda có một cột chứa các ký tự chữ và số. Cô ấy cần giữ lại các ký tự số và xóa các ký tự chữ cái. Ví dụ: một ô có thể chứa 10003E111 và cô ấy muốn kết thúc bằng 10003111.

Có một số cách bạn có thể tiếp cận vấn đề này. Tuy nhiên, trước khi tiếp tục bất kỳ giải pháp nào, bạn nên đảm bảo rằng bạn không cố gắng thay đổi thứ gì đó chưa thực sự bị hỏng. Ví dụ: bạn sẽ muốn đảm bảo rằng chữ “E” xuất hiện trong số không phải là một phần của định dạng số — nói cách khác, là ký hiệu của lũy thừa. Nếu đúng như vậy, thì bạn không thực sự muốn xóa ký tự vì nó sẽ làm thay đổi bản chất của số cơ bản.

Nếu bạn xác định rằng các ký tự không phải là một phần của định dạng số, thì trước tiên bạn có thể thử sử dụng công thức để xóa các ký tự alpha. Nếu các giá trị bạn muốn thay đổi nằm trong cột A, bạn có thể nhập công thức sau (rất dài) vào cột B:

=MID(A1,MATCH(TRUE,ISERROR(1MID(A1,ROW(INDIRECT ("1:"&LEN(A1))),1)),0),-MATCH(TRUE,ISERROR(1MID (A1,ABS(ROW(INDIRECT("1:"&LEN(A1)))-LEN(A1)-1),1))

,0)+LEN(A1)+2-MATCH(TRUE,ISERROR(1*MID(A1,ROW (INDIRECT("1:"&LEN(A1))),1)),0))

Đảm bảo bạn nhập công thức này dưới dạng công thức mảng bằng cách nhấn Ctrl + Shift + Enter. Sau đó nhập thông tin sau vào cột C:

=SUBSTITUTE(A1,B1,"")

Kết quả là cột C chứa các giá trị từ cột A, không có ký tự alpha. Bạn có thể sử dụng Dán Đặc biệt để sao chép thông tin từ cột C sang một cột khác để bạn nhận được giá trị thực thay vì kết quả công thức.

Cách tiếp cận này có thể hiệu quả khi sử dụng ngắn hạn trên một sổ làm việc, nhưng nếu bạn cần thực hiện loại xử lý dữ liệu này thường xuyên hơn thì bạn sẽ muốn tạo một hàm do người dùng xác định để thực hiện việc xử lý. Đây là một ví dụ:

Function OnlyNums(sWord As String)

Dim sChar As String     Dim x As Integer     Dim sTemp As String

sTemp = ""

For x = 1 To Len(sWord)

sChar = Mid(sWord, x, 1)

If Asc(sChar) >= 48 And _           Asc(sChar) <= 57 Then             sTemp = sTemp & sChar         End If     Next     OnlyNums = Val(sTemp)

End Function

Bạn sử dụng hàm này bằng cách gọi nó từ bên trong một ô trang tính:

=OnlyNums(A1)

Hàm trả về một giá trị số. Nếu bạn muốn tạo một macro ngắn hơn nữa để thực hiện quá trình xử lý, hãy xem xét những điều sau:

Function StripChar(aText As String)

Dim I As Integer

StripChar = ""

For I = 1 To Len(aText)

aChar = Mid(aText, I, 1)

Select Case aChar             Case "0" To "9"

StripChar = StripChar & aChar         End Select     Next End Function

Để sử dụng chức năng này, hãy sử dụng một trong hai cách sau trong trang tính của bạn:

=STRIPCHAR(A1)

=VALUE(STRIPCHAR(A1))

Đầu tiên trả về một chuỗi văn bản bao gồm các chữ số, thứ hai trả về phiên bản số của chuỗi đó.

_Lưu ý: _

Nếu bạn muốn biết cách sử dụng các macro được mô tả trên trang này (hoặc trên bất kỳ trang nào khác trên trang ExcelTips), tôi đã chuẩn bị một trang đặc biệt bao gồm thông tin hữu ích.

ExcelTips là nguồn của bạn để đào tạo Microsoft Excel hiệu quả về chi phí.

Mẹo này (3840) áp dụng cho Microsoft Excel 97, 2000, 2002 và 2003. Bạn có thể tìm thấy phiên bản của mẹo này cho giao diện ribbon của Excel (Excel 2007 trở lên) tại đây: