Hỏi về chỉ lấy chữ không lấy số trong chuỗi ký tự

Liên hệ QC

shanks10

Thành viên chính thức
Tham gia
28/4/15
Bài viết
50
Được thích
2
các bạn giúp mình hàm này với, mình có 1 mã kh vừa có ký tự và số, bây giờ mình muốn tạo một mã mới chỉ lấy các ký tự đầu là chuỗi text không lấy sô, giúp mình với cảm ơn
1.png
 

File đính kèm

  • hoima.xlsx
    10.2 KB · Đọc: 16
Nếu chỉ đơn giản như bạn ví dụ thì
B2=LEFT(A2;FIND("0";A2)-1)
bạn nên cho dữ liệu đầy đủ thì mới có giải pháp đầy đủ
 
các bạn giúp mình hàm này với, mình có 1 mã kh vừa có ký tự và số, bây giờ mình muốn tạo một mã mới chỉ lấy các ký tự đầu là chuỗi text không lấy sô, giúp mình với cảm ơn
View attachment 194103
Bạn thử:
PHP:
Sub abc()
    Dim c As Range
    Application.ScreenUpdating = False
    With CreateObject("VBScript.RegExp")
        .Global = True
        .Pattern = "\d"
        For Each c In Range("a2", Range("A" & Rows.Count).End(3))
            c.Offset(, 1).Value = .Replace(c.Value, "")
        Next
    End With
    Application.ScreenUpdating = True
End Sub
 

File đính kèm

  • hoima.xlsx
    10.8 KB · Đọc: 6
Lần chỉnh sửa cuối:
Bạn thử:
PHP:
Sub abc()
    Dim c As Range
    Application.ScreenUpdating = False
    With CreateObject("VBScript.RegExp")
        .Global = True
        .Pattern = "\d"
        For Each c In Range("a2", Range("A" & Rows.Count).End(3))
            c.Offset(, 1).Value = .Replace(c.Value, "")
        Next
    End With
    Application.ScreenUpdating = True
End Sub
bạn ơi cái này sử dụng sao vậy bạn, mình không biết sử dụng, bạn chỉ giúp mình nhé, cảm ơn
 
bạn ơi cái này sử dụng sao vậy bạn, mình không biết sử dụng, bạn chỉ giúp mình nhé, cảm ơn
Bạn làm như sau:
1.Copy Code phần trên
2. Gõ Alt+F11
3. Vào Insert ----> Module
4. Dán Code vào phần trống bên phải như hình dưới
5. Ấn F5 để chạy Code
5.jpg
 
các bạn giúp mình hàm này với, mình có 1 mã kh vừa có ký tự và số, bây giờ mình muốn tạo một mã mới chỉ lấy các ký tự đầu là chuỗi text không lấy sô, giúp mình với cảm ơn
View attachment 194103
Nếu nhóm số bắt đầu là 0 thì có thể dùng find and replace
find: 0*
replace:
Nếu không phải thế thì bạn dùng hàm subtitu gì đó thay các số từ 0 tới 9 bằng rỗng
 

File đính kèm

  • hoima.xlsx
    11.2 KB · Đọc: 6
Lần chỉnh sửa cuối:
Bạn thử:
PHP:
Sub abc()
    Dim c As Range
    Application.ScreenUpdating = False
    With CreateObject("VBScript.RegExp")
        .Global = True
        .Pattern = "\d"
        For Each c In Range("a2", Range("A" & Rows.Count).End(3))
            c.Offset(, 1).Value = .Replace(c.Value, "")
        Next
    End With
    Application.ScreenUpdating = True
End Sub
Chỉnh lại thành cái này dễ dùng hơn anh ạ
Diff:
Function abc(ByVal c As Range)
    With CreateObject("VBScript.RegExp")
        .Global = True
        .Pattern = "\d"
        abc = .Replace(c.Value, "")
    End With
End Function
 
Lần chỉnh sửa cuối:
các bạn giúp mình hàm này với, mình có 1 mã kh vừa có ký tự và số, bây giờ mình muốn tạo một mã mới chỉ lấy các ký tự đầu là chuỗi text không lấy sô, giúp mình với cảm ơn
Thử dùng hàm này chỉ đúng như ví dụ bài 1:
B2 =LEFT(A2, FIND({0},A2,1)-1)
 
Lần chỉnh sửa cuối:
các bạn giúp mình hàm này với, mình có 1 mã kh vừa có ký tự và số, bây giờ mình muốn tạo một mã mới chỉ lấy các ký tự đầu là chuỗi text không lấy sô, giúp mình với cảm ơn
View attachment 194103
Thêm công thức tham khảo, công thức mảng nhé.{Ctrl+Shift+Enter}
Mã:
=LEFT(A2,MIN(FIND(ROW($1:$10)-1,A2&1234567890))-1)
 
Chỉnh lại thành cái này dễ dùng hơn anh ạ
Diff:
Function abc(ByVal c As Range)
    With CreateObject("VBScript.RegExp")
        .Global = True
        .Pattern = "\d"
        abc = .Replace(c.Value, "")
    End With
End Function
Nếu sửa thì nên 1 đường kiếm diệt hết. Global cũng không cần vì người ta chỉ có 1 cụm chữ số liên tiếp. Nếu có nhiều cụm thì dĩ nhiên thêm Global.
Mã:
Function abc(ByVal c As Range)
    With CreateObject("VBScript.RegExp")
'       .Global = True
        .Pattern = "\d+"
        abc = .Replace(c(1).Value, "")
    End With
End Function
 
Bạn đặt tên:
VT:
PHP:
=MIN(IF(ISERROR(FIND({0,1,2,3,4,5,6,7,8,9},Sheet1!$A2)),"",FIND({0,1,2,3,4,5,6,7,8,9},Sheet1!$A2)))
Tại ô B2 bạn đặt công thức sau:
=IF($A2="","",IF(vt=0,"",LEFT($A2,vt-1)))
Bạn xem file:
 

File đính kèm

  • hoima.xlsx
    10.7 KB · Đọc: 5
Hàm bài 10 sẽ không có kết quả nếu trong mã có các con số không bắt đầu là số không (ví dụ các mã sau: NTTK5285, NVK777, N888,KL999). Vì vậy, thử sử dụng hàm sau:

B2 =LEFT(A2,LEN(A2)-SUM(LEN(A2)-LEN(SUBSTITUTE(A2,{"0","1","2","3","4","5","6","7","8","9"},""))))
 
Lần chỉnh sửa cuối:
Thấy các anh em trên đưa giải pháp mỗi người mỗi vẽ, đều có cái hay riêng trong mỗi cách hỗ trợ cho bạn mình.
Tâm trạng hưng phấn vui vẻ, muốn góp phần, hòa nhịp với anh em cùng vui!
hihi ^o^
Chơi thêm 1 hàm nữa, tuy dài nhưng dễ hiểu.

B2 =LEFT(A2,MIN(FIND({0,1,2,3,4,5,6,7,8,9},A2&"0123456789"))-1)
 
Nếu thành viên nào dùng Excel 2013 trở lên thì dùng cách này là lẹ nhất.
1/ Copy A2 Paste sang B2 (NTTK00285), xóa các con số chỉ chừa lại chữ NTTK.
2/ Click chọn B2, Vào Data >Flash Fill (xem hình), vậy là được kết quả.
3/ Muốn tách các con số bên phải thì xóa chữ.

A_LastFill.JPG.
 
Web KT
Back
Top Bottom