Kỹ thuật tách số từ chuỗi trong Excel
Nội dung bài viết
Trong quá trình sử dụng Excel, tôi đã gặp nhiều tình huống cần tách riêng phần số từ một chuỗi ký tự. Bài viết này sẽ chia sẻ cách thực hiện điều đó một cách chi tiết và dễ hiểu, giúp bạn áp dụng hiệu quả trong công việc.
Có hai phương pháp chính để tách số:
- Trường hợp 1: Tách số từ chuỗi và chỉ lấy giá trị dương.
- Trường hợp 2: Tách số từ chuỗi và thu cả giá trị âm lẫn dương.
1. Tách số từ chuỗi và chỉ lấy giá trị dương
Bước 1: Mở File Excel cần xử lý -> Nhấn tổ hợp phím Alt + F11 -> Cửa sổ VBA hiện ra -> Chọn tab Insert -> Module.
Bước 2: Nhập đoạn mã sau vào cửa sổ lệnh:
Function ExtractNumber(rCell As Range) Dim lCount As Long Dim sText As String Dim lNum As String sText = rCell For lCount = Len(sText) To 1 Step -1 If IsNumeric(Mid(sText, lCount, 1)) Then lNum = Mid(sText, lCount, 1) & lNum End If Next lCount ExtractNumber = CLng(lNum) End Function
Lưu ý: Hãy ghi nhớ tên hàm này vì bạn sẽ cần sử dụng nó khi quay lại File Excel.
Bước 3: Sau khi nhập xong, nhấn Save (do chứa macro nên sẽ có hộp thoại thông báo, bạn chọn OK) -> Quay lại File Excel và tìm đến hàm như hình minh họa:
Bước 4: Sao chép công thức cho các ô còn lại và thu được kết quả như sau:
2. Tách số từ chuỗi và thu cả giá trị âm lẫn dương
Bước 1: Mở File Excel cần xử lý -> Nhấn tổ hợp phím Alt + F11 -> Cửa sổ VBA hiện ra -> Chọn tab Insert -> Module.
Bước 2: Nhập đoạn mã sau vào cửa sổ lệnh:
Private Function SuperTrim(TheStr As String) Dim Temp As String, DoubleSpase As String DoubleSpase = Chr(32) & Chr(32) Temp = Trim(TheStr) Temp = Replace(Temp, DoubleSpase, Chr(32)) Do Until InStr(Temp, DoubleSpase) = 0 Temp = Replace(Temp, DoubleSpase, Chr(32)) Loop SuperTrim = Temp End Function Public Function Tach_So(strText As String) Dim strText_1 As String Dim subText() As String, so() As Double Dim i As Integer, j As Integer, k As Integer, m As Integer strText = SuperTrim(strText) subText = Split(strText, " ") For i = 0 To UBound(subText) For j = 1 To Len(subText(i)) k = 0 If IsNumeric(Mid(subText(i), j, 1)) _ Or (Mid(subText(i), j, 1) = "-" And IsNumeric(Mid(subText(i), j + 1, 1))) Then k = j Exit For End If Next j If k <> 0 Then m = m + 1 strText_1 = Val(Mid(subText(i), k)) ReDim Preserve so(1 To m) As Double so(m) = strText_1 End If Next i If index > 0 And index <= m Then Tach_So = so(m) Else Tach_So = "" End If End Function
Lưu ý: Hãy ghi nhớ tên hàm "Tach_so()" để sử dụng sau này.
Bước 3: Nhấn Save và chọn OK. Quay lại file Excel và chọn hàm Tach_so() như hình minh họa:
Bước 4: Hàm Tach_so() chỉ yêu cầu một tham số duy nhất là vị trí ô cần tách số.
Bước 5: Sao chép công thức cho các ô còn lại và thu được kết quả như sau:
Như vậy, bạn đã có thể tách được cả giá trị âm và dương, kể cả khi dấu âm nằm ở vị trí đầu tiên của ô.
Lưu ý: Các hàm trên chỉ áp dụng cho chuỗi ký tự chứa một dãy số liền kề. Nếu dữ liệu gồm nhiều chuỗi số khác nhau được ngăn cách bởi ký tự chữ cái, hàm sẽ trả về chuỗi số đầu tiên.
Chúc các bạn thực hiện thành công và đạt được kết quả như mong đợi!
Có thể bạn quan tâm