Trong quá trình sử dụng Excel, mình thường xuyên gặp tình huống cần trích xuất chỉ phần số từ chuỗi. Hãy theo dõi bài viết này để biết cách làm. Dưới đây là hướng dẫn chi tiết cách tách số từ chuỗi trong Excel.
2 phương pháp tách số:
- Phương pháp 1: Tách số từ chuỗi và chỉ giữ giá trị dương.
- Trường hợp 2: Tách số từ chuỗi và bao gồm cả giá trị âm và dương.
1. Trích số từ chuỗi và giữ giá trị dương
Bước 1: Mở File Excel cần trích số -> Nhấn tổ hợp phím Alt + F11 -> Cửa sổ VBA hiển thị -> Chọn tab Insert -> Module.
Bước 2: Tại cửa sổ lệnh, nhập đoạn Mã sau:
Hàm Trích Số(rCell Như Phạm Vi) Dim lDem Như Dài Dim sChuoi Như Chuỗi Dim lSo Như Chuỗi sChuoi = rCell For lDem = Dài(sChuoi) Đến 1 Bước -1 Nếu IsNumeric(Trung(sChuoi, lDem, 1)) Thì lSo = Trung(sChuoi, lDem, 1) & lSo End If Kết Quả Trích = CLng(lSo) End Function
Chú ý: Bạn nhớ tên hàm này vì khi quay lại File Excel sẽ cần dùng đến nó.
Bước 3: Sau khi nhập xong, chọn Lưu (vì có macro nên khi lưu, hộp thoại hiển thị thông báo, bạn chỉ cần chọn OK là được) -> Quay trở lại File Excel và tìm hàm như trong hình vẽ:
Bước 4: Sao chép công thức cho các ô còn lại với kết quả sau:
2. Trích số từ chuỗi và bao gồm cả giá trị âm và dương
Bước 1: Mở File Excel cần trích số -> Nhấn tổ hợp phím Alt + F11 -> Cửa sổ VBA hiển thị -> Chọn tab Insert -> Module.
Bước 2: Tại cửa sổ lệnh, nhập đoạn Mã sau:
Hàm SuperTrim(TheStr Như Chuỗi) Dim Temp Như Chuỗi, DoubleSpase Như Chuỗi 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 Hàm Tach_So(strText Như Chuỗi) Dim strText_1 Như Chuỗi Dim subText() Như Mảng Chuỗi, so() Như Mảng Double Dim i Như Số Nguyên, j Như Số Nguyên, k Như Số Nguyên, m Như Số Nguyên strText = SuperTrim(strText) subText = ChiaChuoi(strText, ' ') For i = 0 Đến UBound(subText) For j = 1 Đến Dài(subText(i)) k = 0 Nếu IsNumeric(Trung(subText(i), j, 1)) _ Hoặc (Trung(subText(i), j, 1) = '-' Và IsNumeric(Trung(subText(i), j + 1, 1))) Thì k = j Exit For End If Kết Thúc Nếu Next j Nếu k <> 0 Thì m = m + 1 strText_1 = GiáTrị(Trung(subText(i), k)) ReDim Duyệt so(1 Đến m) Như Mảng Double so(m) = strText_1 Kết Thúc Nếu Next i Nếu index > 0 Và index <= m Thì Tach_So = so(m) Ngược Lại Tach_So = '' Kết Thúc Nếu End Function
Lưu ý: Ghi nhớ tên hàm 'Tach_so().'
Bước 3: Chọn Lưu, chọn OK. Quay lại file Excel và chọn hàm Tach_so() như trong hình:
Bước 4: Hàm Tach_so() chỉ có 1 tham số là vị trí ô cần tách.
Bước 5: Copy công thức cho các ô còn lại để nhận kết quả:
Với cách này, bạn có thể tách được cả giá trị âm và dương, kể cả khi dấu âm đầu tiên của ô.
Chú ý: Các hàm chỉ hoạt động với chuỗi chứa các ký tự số liền nhau. Trong trường hợp dữ liệu có nhiều chuỗi số khác nhau, phân cách bởi các ký tự chữ cái, giá trị trả về sẽ là chuỗi số đầu tiên.
Chúc mừng bạn đã thành công!