Tôi cần xóa tất cả các ký tự không phải chữ và số từ một chuỗi trừ khoảng thời gian và khoảng trắng trong Excel. Một giải pháp sử dụng VBA chứ không phải là các hàm excel thuần túy là tốt.Làm thế nào để loại bỏ tất cả các ký tự không phải chữ và số từ một chuỗi ngoại trừ dấu chấm và dấu cách trong excel?
Trả lời
Chèn chức năng này vào một module mới trong Visual Basic Editor:
Function AlphaNumericOnly(strSource As String) As String
Dim i As Integer
Dim strResult As String
For i = 1 To Len(strSource)
Select Case Asc(Mid(strSource, i, 1))
Case 48 To 57, 65 To 90, 97 To 122: 'include 32 if you want to include space
strResult = strResult & Mid(strSource, i, 1)
End Select
Next
AlphaNumericOnly = strResult
End Function
Bây giờ bạn có thể sử dụng điều này như một tài Xác định chức năng, tức là nếu dữ liệu của bạn là trong phòng giam A1
, đặt công thức này trong một sản phẩm nào ô =AlphaNumericOnly(A1)
.
Nếu bạn muốn chuyển đổi một phạm vi rộng lớn trực tiếp, tức là thay thế tất cả các ký tự không phải chữ mà không để lại nguồn, bạn có thể làm điều này với một VBA thói quen:
Sub CleanAll()
Dim rng As Range
For Each rng In Sheets("Sheet1").Range("A1:K1500").Cells 'adjust sheetname and range accordingly
rng.Value = AlphaNumericOnly(rng.Value)
Next
End Sub
Đơn giản chỉ cần đặt phụ này trong cùng một và thực thi nó. Tuy nhiên, hãy lưu ý rằng điều này sẽ thay thế bất kỳ công thức nào trong phạm vi.
Albert, nhanh, cảm ơn bạn. Tôi sẽ thử nó vào ngày mai. Như tôi đã nói tôi biết rất ít về excel, bạn có thể giải thích làm thế nào để sử dụng chức năng tôi cần để chạy nó trên toàn bộ bảng excel của tôi. Điều này thường sẽ có 11 cột và khoảng 1500 hàng nhưng điều này rất có thể. Cảm ơn bạn điều này được đánh giá cao – xyz
Albert, đó là nhanh chóng, cảm ơn bạn. Tôi sẽ thử nó vào ngày mai. Như tôi đã nói tôi biết rất ít về excel, bạn có thể giải thích làm thế nào để sử dụng chức năng tôi cần để chạy nó trên toàn bộ bảng excel của tôi. Điều này thường sẽ có 11 cột và khoảng 1500 hàng nhưng điều này rất có thể. Cảm ơn bạn điều này được nhiều đánh giá cao – xyz
Xem chỉnh sửa của tôi - hy vọng nó trả lời hầu hết câu hỏi của bạn –
Tôi đã viết mã sau và nó hoạt động theo như tôi đã thử nghiệm, nó bao gồm hai chức năng. Kiểm tra đầu tiên cho dù một chuỗi là chữ và số và thứ hai làm cho việc thay thế (nó cũng loại bỏ không gian)
Public Function Isalphanumeric(cadena As String) As Boolean
Select Case Asc(UCase(cadena))
Case 65 To 90 'letras
Isalphanumeric = True
Case 48 To 57 'numeros
Isalphanumeric = True
Case Else
Isalphanumeric = False
End Select
End Function
Và đây đi hàm remove
Function RemoveSymbols_Enhanced(InputString As String) As String
Dim InputString As String
Dim CharactersArray()
Dim i, arrayindex, longitud As Integer
Dim item As Variant
i = 1
arrayindex = 0
longitud = Len(InputString)
'We create an array with non alphanumeric characters
For i = 1 To longitud
If Isalphanumeric(Mid(InputString, i, 1)) = False Then
ReDim Preserve CharactersArray(arrayindex)
CharactersArray(arrayindex) = Mid(InputString, i, 1)
arrayindex = arrayindex + 1
End If
Next
'For each non alphanumeric character we do a replace
For Each item In CharactersArray
item = CStr(item)
InputString = Replace(InputString, item, "")
Next
End Function
Xem câu hỏi này, ngoại trừ một phần thời gian/không gian. Mẫu của bạn sẽ giống như [AZ, az, 0-9, \., \ S] http://stackoverflow.com/questions/10789948/remove-non-numeric-characterst-from-excel – Alexander