Giúp đỡ xử lí chuỗi kí tự

Liên hệ QC

TrinhAnh91

Thành viên mới
Tham gia
2/11/18
Bài viết
3
Được thích
0
Xin chào mọi người,
Hiện tại em đang có 1 file excel như file đính kèm giờ em muốn bỏ các kí tự ngày tháng và số thứ tự đi
ví dụ: TH_CTY_CAM_THUY_03122018_11 em chỉ muốn lấy TH_CTY_CAM_THUY.
Có lưu ý là có một số tên như NA_DCU_DIEN_HAI_2_06122018_11 thì sau khi loại bỏ thì nó sẽ là NA_DCU_DIEN_HAI_2 vì số 2 ở đây dùng để phân biệt ạ.
Em cảm ơn
 

File đính kèm

  • Count.xls
    371 KB · Đọc: 25
Xin chào mọi người,
Hiện tại em đang có 1 file excel như file đính kèm giờ em muốn bỏ các kí tự ngày tháng và số thứ tự đi
ví dụ: TH_CTY_CAM_THUY_03122018_11 em chỉ muốn lấy TH_CTY_CAM_THUY.
Có lưu ý là có một số tên như NA_DCU_DIEN_HAI_2_06122018_11 thì sau khi loại bỏ thì nó sẽ là NA_DCU_DIEN_HAI_2 vì số 2 ở đây dùng để phân biệt ạ.
Em cảm ơn
Bạn thử code này xem:
PHP:
Function tach(ByVal str As String) As String
Static reg As Object
If reg Is Nothing Then Set reg = CreateObject("vbscript.regexp")
reg.Pattern = "((?:_\d{1,2}))?(?:_\d{8}.*)?(?:_\d+)?$"
If reg.test(str) Then tach = reg.Replace(str, "$1")
End Function
Dùng công thức =tach(A2) rồi kéo xuống!
 

File đính kèm

  • Count.xls
    585.5 KB · Đọc: 9
Lần chỉnh sửa cuối:
Hinh như vẫn chưa giải quyết hết các trường hợp, như A3811, A1375. Có thể tác giả chưa nêu 2 trường hợp này.:)
 
Lần sau bạn nên mô tả dữ liệu. Những cái gì có thể nói thì hãy nói ra, đừng bắt người khác phải đoán mò, phải hiểu ngầm.

Tôi giả thiết như sau, nếu không đúng với dụng ý của bạn thì ngừng đọc tiếp.

1. Bạn không nói thẳng ra nhưng tôi hiểu "ngầm" là ngày tháng và số thứ tự luôn ở cuối cùng.
2. Chỉ có 2 dạng "đuôi" là _ngaythang_stt hoặc _stt (không có ngày tháng). Không có dạng _ngaythang (không có stt). Tức ngày tháng có thể không có nhưng stt luôn có.

Ví dụ:
- dạng _ngaythang_stt: TH_CTY_CAM_THUY_03122018_1, NA_DCU_DIEN_HAI_2_06122018_11

- dạng _stt: NB_KSN_AN_HOA_1, NB_YKH_KHANH_HAI_2_7

Phải chuột trên tên sheet ở sheet tabs (ở cạnh dưới cửa sổ) -> View code -> dán code ở dưới vào module của Sheet1 -> vẫn trong VBE chọn menu Insert -> Module -> dán code dưới vào Module.

Khi bạn nhập, sửa đổi, xóa dữ liệu trong cột A của Sheet1 thì code sẽ nhập lại kết quả vào cột F. Tức bạn có thể chọn nhiều dòng trong cột A rồi DELETE hoặc copy ở đâu đó và dán hàng loạt vào cột A.

Do bạn đã có dữ liệu nên để khởi động lần đầu thì bạn đúp chuột vào A2 -> Enter.

Tôi hướng dẫn để bạn biết cách làm cho sau này. Tôi vẫn đính kèm tập tin.
Code cho Sheet1
Mã:
Private Sub Worksheet_Change(ByVal Target As Range)
    If Not Intersect(Target, Range("A2:A10000")) Is Nothing Then bo_duoi
End Sub

Code cho Module
Mã:
Sub bo_duoi()
Dim lastRow As Long, r As Long, text As String, data(), re As Object
    With ThisWorkbook.Worksheets("Sheet1")
        .Range("F2:F10000").ClearContents
        lastRow = .Cells(Rows.Count, "A").End(xlUp).Row
        If lastRow = 1 Then Exit Sub
        data = .Range("A2:A" & lastRow + 1).Value
    End With
    Application.EnableEvents = False
    
    Set re = CreateObject("vbscript.regexp")
    re.Pattern = "(?:_\d{8})?_\d+$"
    For r = 1 To UBound(data) - 1
        text = data(r, 1)
        If re.test(text) Then data(r, 1) = re.Replace(text, "")
    Next r
    ThisWorkbook.Worksheets("Sheet1").Range("F2").Resize(UBound(data) - 1).Value = data
    Set re = Nothing
    
    Application.EnableEvents = True
End Sub
 

File đính kèm

  • Count.xls
    442 KB · Đọc: 13
B2=IFERROR( LOOKUP(-1*10^6,1-MID(A2,ROW($1:$100),8),LEFT(A2,ROW($1:$100)-2)),A2)
 
Xin chào mọi người,
Hiện tại em đang có 1 file excel như file đính kèm giờ em muốn bỏ các kí tự ngày tháng và số thứ tự đi
ví dụ: TH_CTY_CAM_THUY_03122018_11 em chỉ muốn lấy TH_CTY_CAM_THUY.
Có lưu ý là có một số tên như NA_DCU_DIEN_HAI_2_06122018_11 thì sau khi loại bỏ thì nó sẽ là NA_DCU_DIEN_HAI_2 vì số 2 ở đây dùng để phân biệt ạ.
Em cảm ơn
B2=IFERROR(LEFT(A2,FIND("1220",A2)-4),A2)
 
Góp vui công thức mảng:

=IFERROR(LEFT(A1,MATCH(0,0/MID(A1,ROW(INDIRECT("1:"&LEN(A1)-7)),8),0)-2),A1)
 
Lần chỉnh sửa cuối:
Web KT
Back
Top Bottom