Cần xử lý chuỗi kỹ tự

Liên hệ QC

RAT_LIEU

Thành viên mới
Tham gia
9/9/09
Bài viết
29
Được thích
4
Em có một chuỗi ký tự, ví du:
T10270a/1968a ( có thể là a,b,c,d,e,f,g,h,i,k,l)
hoăc

18673534563/112b

Các a/c giúp em công thức nào có thể loại bỏ các chữ cái trong chuỗi trừ chữ cái đầu( nếu có) và ký tự / (nếu) có với ạ

thank a chị nhiều
 
Em có một chuỗi ký tự, ví du:
T10270a/1968a ( có thể là a,b,c,d,e,f,g,h,i,k,l)
hoăc

18673534563/112b

Các a/c giúp em công thức nào có thể loại bỏ các chữ cái trong chuỗi trừ chữ cái đầu( nếu có) và ký tự / (nếu) có với ạ

thank a chị nhiều
Nếu không có quy luật nào hết thì khó mà dùng công thức được. Có phải dữ liệu của bạn luôn luôn có ký tự "/" và chữ cái cần loại bỏ lúc nào cũng ở trước ký tự "/" hoặc ở cuối chuỗi không?
 
DỮ liệu của mình có khá nhiều th

VD Dữ liệu vào DỮ liệu cần ra

T001 T001
T024a T024
1985 1985
1986c 1986
1919a/1022 1919/1022
19/20g 19/20
T0366a/10255d T0366/10255
 
Lần chỉnh sửa cuối:
Bạn dùng code đi cho lẹ, chỉ cần đoạn code ngắn sau sẽ dọn sạch các chữ cái trừ chữ cái dầu cho bạn

Mã:
Function loc(ch As String) As String
loc = Left(ch, 1)
For i = 2 To Len(ch) - 1
If Mid(ch, i, 1) Like "[!A-Z]" And Mid(ch, i, 1) Like "[!a-z]" Then
loc = loc & Mid(ch, i, 1)
End If
Next
End Function
 

File đính kèm

  • chuoi.xls
    31.5 KB · Đọc: 21
Bạn thử dùng hàm này xem nhé
Mã:
Function NewStr(vRange As Range) As String
Dim str, ichar As String
Dim i  As Long
    str = vRange.Value
    NewStr = Left(str, 1)
    For i = 2 To Len(str)
        ichar = Mid(str, i, 1)
        If ichar Like "[A-z]" Then
          ichar = ""
        End If
        NewStr = NewStr & ichar
    Next
End Function
 

File đính kèm

  • Newstring.rar
    8.6 KB · Đọc: 19
Đọc lại bài thì hình như bạn chỉ cần giữ chữ cái đầu nếu là T, vậy thì bạn sửa câu lệnh đầu tiên 1 chút
Mã:
Function loc(ch As String) As String
[B][COLOR=Red]loc = IIf(Left(ch, 1) = "T", "T", "")[/COLOR][/B]
For i = 2 To Len(ch) - 1
If Mid(ch, i, 1) Like "[!A-Z]" And Mid(ch, i, 1) Like "[!a-z]" Then
loc = loc & Mid(ch, i, 1)
End If
Next
End Function
 
Đọc lại bài thì hình như bạn chỉ cần giữ chữ cái đầu nếu là T, vậy thì bạn sửa câu lệnh đầu tiên 1 chút
Mã:
Function loc(ch As String) As String
[B][COLOR=Red]loc = IIf(Left(ch, 1) = "T", "T", "")[/COLOR][/B]
For i = 2 To Len(ch) - 1
If Mid(ch, i, 1) Like "[!A-Z]" And Mid(ch, i, 1) Like "[!a-z]" Then
loc = loc & Mid(ch, i, 1)
End If
Next
End Function
M thay vào thấy hàm của bạn bị thiếu kí tự đầu tiên bạn àh. Giả sử =Loc(1986c) thì kểt quả là 986. Còn nếu số đầu là chữ T thì đúng.
---------------------------------------------------

Theo đề bài chắc là yêu cầu chỉ lấy kí tự số và chữ T chăng???
Mã:
Function tachchu(cel As Range)
Dim i As Integer
For i = 1 To Len(cel)
If IsNumeric(Mid(cel, i, 1)) = True Or Mid(cel, i, 1) = "T" Or Mid(cel, i, 1) = "/" Then
tachchu = tachchu & Mid(cel, i, 1)
End If
Next
End Function
 
Lần chỉnh sửa cuối:
Cám ơn HaiTuan đã test giùm, đêm qua khuya quá nên cũng không kiểm kỹ. Các bạn thay giùm đoạn lệnh số 1 thành:

loc = IIf(UCase(Left(ch, 1)) = "T" Or Left(ch, 1) Like "[0-9]", Left(ch, 1), "")
 
cảm ơn các a/c đã hết sức giúp đỡ, em dùng hàm này thấy ổn
sẽ lại làm phiền a/c nếu có jì thắc mắc

Bạn thử dùng hàm này xem nhé
Mã:
Function NewStr(vRange As Range) As String
Dim str, ichar As String
Dim i  As Long
    str = vRange.Value
    NewStr = Left(str, 1)
    For i = 2 To Len(str)
        ichar = Mid(str, i, 1)
        If ichar Like "[A-z]" Then
          ichar = ""
        End If
        NewStr = NewStr & ichar
    Next
End Function
 
Web KT
Back
Top Bottom