Hỏi về chỉ lấy chữ không lấy số trong chuỗi ký tự (1 người xem)

Liên hệ QC

Người dùng đang xem chủ đề này

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

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

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

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

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.
 
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
Mấy cái này phải hỏi lại cho chắc nha. Liệu có phải người ta muốn loại toàn bộ số hay không? Ví dụ: Với P2CBS016 thì người ta muốn kết quả gì? P hay P2CBS hay PCBS
 
Mấy cái này phải hỏi lại cho chắc nha. Liệu có phải người ta muốn loại toàn bộ số hay không? Ví dụ: Với P2CBS016 thì người ta muốn kết quả gì? P hay P2CBS hay PCBS
Chủ Topic yêu cầu cái gì thì làm cái đó, nếu chưa đúng thì họ la làng lên, thì tính tiếp nếu thấy khó nhằn quá thì bỏ qua. Có khi đâu cần phải lường trước việc này, việc nọ, việc kia.

Nhà nước quy hoạch 10 năm, 20 năm và lúc nào cũng gọi là tầm nhìn nhưng thực tế tầm nhìn đó cũng chẳng đến đâu, khi quy hoạch đó chẳng khả thi, ví dụ: quy hoạch khu dân cư hiện hữu để trồng cây xanh chắc chẳng ai dám làm vì không có lợi ích gì? Không khéo lại bị kiểm điểm vì thực hiện dự án dỡ hơi, bồi thường hàng trăm tỷ đồng lại trồng ba cái cây vớ vẫn, dân thì ta thán, cấp trên thì khiển trách, thậm chí có thể bị kiểm điểm.

Kết luận:
- Nếu ta làm quan thì nên ngồi đó làm bù nhìn cho sướng, việc chi phải lao tâm, khổ trí để dân khỏi ta thán, cấp trên khỏi khiển trách hết nhiệm kỳ thì xuống (gọi là hạ cánh an toàn).
- Nói cho vui vậy thôi, chứ 40 năm trong nghề chẳng bao giờ làm khó ai, kiến thức thì lơ tơ mơ, cơ quan thì chẳng cần, nhiều khi góp ý gắt quá thì tụi nó cho mình ra rìa (không cho họp góp ý nữa) để tụi nó rộng đường mở hầu bao, chỉ tham gia diễn đàn cho vui, có nhiều khi góp ý bài viết cho anh em thì nó nói mình dỡ hơi (giúp thì không giúp mà cứ góp ý hoài).
- Có nhiều khi thấy nãn lòng, không muốn góp ý nữa nhưng thấy 1 số thành viên viết bài mà không thấy ai giúp đành động lòng trắc ẩn nhảy vào giúp nhưng đôi khi lại buồn lòng quá khi họ nói 1 câu " tưởng có gì mới, cái này thì biết rồi" hoặc vào hỏi bài hỏi xong thì lặn mất mà chẳng có 1 câu cám ơn cho người giúp, các bạn làm kiểu này thì hãy đợi đấy (tết Ma Rốc mới có người giúp).

Cuối cùng, đừng thành viên nào ném đá, hãy ném cho tôi 1 bịch rượu, tôi ném ra 1 dĩa mồi để cùng ứng chiến.
 
Chủ Topic yêu cầu cái gì thì làm cái đó, nếu chưa đúng thì họ la làng lên, thì tính tiếp nếu thấy khó nhằn quá thì bỏ qua. Có khi đâu cần phải lường trước việc này, việc nọ, việc kia.
.
Theo ví dụ mà chủ topic đưa lên ở bài 1 thì không phải là xóa toàn bộ số, chỉ là lấy từ trái sang phải đến khi gặp số thì ngưng. Trong khi code VBA viết trong topic này lại không phải vậy đâu anh
Ý em muốn nói: Code VBA và công thức trong topic này cho kết quả khác nhau
 
Theo ví dụ mà chủ topic đưa lên ở bài 1 thì không phải là xóa toàn bộ số, chỉ là lấy từ trái sang phải đến khi gặp số thì ngưng. Trong khi code VBA viết trong topic này lại không phải vậy đâu anh
Ý em muốn nói: Code VBA và công thức trong topic này cho kết quả khác nhau

Cảm ơn tất cả các bạn đã giúp mình, do trong phần mềm mình xuất ra thì nó theo thứ tự chữ trước rồi đến số nên mình cũng chỉ cần tách chuỗi đằng trước ra thôi bạn
 

Bài viết mới nhất

Back
Top Bottom