Sử dụng hàm nào trong excel để lấy 1 số ký tự trong chuỗi

Liên hệ QC
Thế còn nói làm gì ạ ! Dữ liệu nó nhảy hàng ngày ! Em muốn kiểm tra trích xuất ra làm báo cáo cho nhanh !
Tôi muốn biết mặt mũi của kết quả bạn muốn là sao, từ đó chọn cách giải quyết cho ra kết quả giống bạn.
"Em muốn tách tên tỉnh sau chữ "tỉnh" thì dùng hàm gì ạ ", thành phố Hồ Chí Minh không có chữ tỉnh thì lấy từ đâu? Có bao nhiêu ô có "Long An" thì lấy hết hay mỗi tỉnh chỉ xuất hiện 1 lần?...
"Thế còn nói làm gì ạ !"? Vậy thì khỏi nói nữa.
 
Tôi muốn biết mặt mũi của kết quả bạn muốn là sao, từ đó chọn cách giải quyết cho ra kết quả giống bạn.
"Em muốn tách tên tỉnh sau chữ "tỉnh" thì dùng hàm gì ạ ", thành phố Hồ Chí Minh không có chữ tỉnh thì lấy từ đâu? Có bao nhiêu ô có "Long An" thì lấy hết hay mỗi tỉnh chỉ xuất hiện 1 lần?...
"Thế còn nói làm gì ạ !"? Vậy thì khỏi nói nữa.
:p Em hiểu chưa hết ý của bác ! bác thông cảm !
Tức là: Em muốn ô kết quả nó hiện tên tỉnh, thành phố, cách nhau dấu phẩy, hay chấm gì đó cũng được ! nếu kết quả có nhiều hơn 1 thì lấy 1 (ví dụ: có 2 lần xuất hiện BÌnh Dương thì chỉ lấy 1 lần)
Em cảm ơn !
 
Các bác xem hộ em cái file này. Giờ em muốn lấy cái đơn vị tính ra cột đóng gói thì làm thế nào ạ? Còn cái phần "Description" thì chỉ muốn giữ lại nội dung từ bên trái sang đến chỗ trước (xx mg). Các bác hộ em với ạ
 

File đính kèm

  • USP List.xlsx
    268.8 KB · Đọc: 19
Các bác xem hộ em cái file này. Giờ em muốn lấy cái đơn vị tính ra cột đóng gói thì làm thế nào ạ? Còn cái phần "Description" thì chỉ muốn giữ lại nội dung từ bên trái sang đến chỗ trước (xx mg). Các bác hộ em với ạ
Cho bạn code này:
PHP:
Sub split()
Dim num1 As Long, num2 As Long, text As String, arr1, arr2
arr1 = Range("B3:B" & [d60000].End(xlUp).Row)
ReDim arr2(1 To UBound(arr1), 1 To 2)
With CreateObject("vbscript.regexp")
    .Global = True: .ignorecase = True
    .Pattern = "^(.+)\((.*[\d\.]+\s?(mg|ml|g)).*\).*$"
    For num1 = 1 To UBound(arr1)
        text = arr1(num1, 1)
        If .test(text) Then
            arr2(num1, 1) = .Execute(text).Item(0).submatches(1)
            arr2(num1, 2) = .Execute(text).Item(0).submatches(0)
        Else
            arr2(num1, 1) = "Check agian": arr2(num1, 2) = "Check again"
        End If
    Next num1
End With
[E3].Resize(UBound(arr1), 2) = arr2
End Sub
Hoăc dùng CT này:
PHP:
E3=MID(B3,FIND("(",B3)+1,FIND(")",B3)-FIND("(",B3)-1)
F3=MID(B3,1,FIND(E3,B3)-2)
Fill xuống!!!
 
Lần chỉnh sửa cuối:
Cho bạn code này:
PHP:
Sub split()
Dim num1 As Long, num2 As Long, text As String, arr1, arr2
arr1 = Range("B3:B" & [d60000].End(xlUp).Row)
ReDim arr2(1 To UBound(arr1), 1 To 2)
With CreateObject("vbscript.regexp")
    .Global = True: .ignorecase = True
    .Pattern = "^(.+)\((.*[\d\.]+\s?(mg|ml|g)).*\).*$"
    For num1 = 1 To UBound(arr1)
        text = arr1(num1, 1)
        If .test(text) Then
            arr2(num1, 1) = .Execute(text).Item(0).submatches(1)
            arr2(num1, 2) = .Execute(text).Item(0).submatches(0)
        Else
            arr2(num1, 1) = "Check agian": arr2(num1, 2) = "Check again"
        End If
    Next num1
End With
[E3].Resize(UBound(arr1), 2) = arr2
End Sub
Hoăc dùng CT này:
PHP:
E3=MID(B3,FIND("(",B3)+1,FIND(")",B3)-FIND("(",B3)-1)
F3=MID(B3,1,FIND(E3,B3)-2)
Fill xuống!!!
Quá tuyệt vời! em cám ơn bác nhiều ạ :)
 
VD CÔNG THỨC CỦA EM LÀ A1=850 , B1= 7.1 ,C1= (850*7.1)= 6103 . EM DÙNG HÀM NÀO ĐỂ LẤY "7.1" thôi mấy bác nếu dùng hàm RIGHT ( C1,3) thì máy hiển thị là 103. em muốn lấy "7.1" thì làm sao mấy bác
 
Bạn diễn tả quá luộm thuộm cho nên bắt buộc tôi cũng phải vắn tắt.
Ít ra tôi cũng phải biết C1 của bạn nó chứa =(850*7.1) hay là chứa =A1*B1
 
Chào các anh em GPE,

Mình có chuỗi như sau:
046010-MILK+046020-YOGURT+046040-BUTTER+046050-EGGS
--> mình muốn kết quả chỉ là: MILK+YOGURT+BUTTER +EGGS
Vậy áp dụng công thức gì vừa cắt chữ vừa gộp chung lại được

Mong anh em giúp cho! Cảm ơn rất nhiều!
 
Chào các anh em GPE,

Mình có chuỗi như sau:
046010-MILK+046020-YOGURT+046040-BUTTER+046050-EGGS
--> mình muốn kết quả chỉ là: MILK+YOGURT+BUTTER +EGGS
Vậy áp dụng công thức gì vừa cắt chữ vừa gộp chung lại được

Mong anh em giúp cho! Cảm ơn rất nhiều!
Module:
PHP:
Function EmYeuExcel(ByVal Txt As String) As String
    Dim i As Long
    EmYeuExcel = Replace(Txt, "-", "")
    For i = 0 To 9
        If InStr(EmYeuExcel, CStr(i)) Then
            EmYeuExcel = Replace(EmYeuExcel, CStr(i), "")
        End If
    Next i
End Function
Bảng tính:
Mã:
=EmYeuExcel(A1)
 
Module:
PHP:
Function EmYeuExcel(ByVal Txt As String) As String
    Dim i As Long
    EmYeuExcel = Replace(Txt, "-", "")
    For i = 0 To 9
        If InStr(EmYeuExcel, CStr(i)) Then
            EmYeuExcel = Replace(EmYeuExcel, CStr(i), "")
        End If
    Next i
End Function
Bảng tính:
Mã:
=EmYeuExcel(A1)
Vậy công thức tách sao Anh? Anh có thể đưa công thức cho em học hỏi với được không Anh?

Em cảm ơn Anh nhiều!
 
Chào các anh em GPE,

Mình có chuỗi như sau:
046010-MILK+046020-YOGURT+046040-BUTTER+046050-EGGS
--> mình muốn kết quả chỉ là: MILK+YOGURT+BUTTER +EGGS
Vậy áp dụng công thức gì vừa cắt chữ vừa gộp chung lại được

Mong anh em giúp cho! Cảm ơn rất nhiều!
Hàm này:
Mã:
Function RemoveNumber(ByVal Text As String) As String
  With CreateObject("VBScript.RegExp")
    .Global = True
    .Pattern = "\d"
    RemoveNumber = .Replace(Text, "")
  End With
End Function
Sẽ xóa hết các ký tự số trong chuỗi. Ví dụ:
Mã:
=RemoveNumber(A1)
Với A1 là cell chứa chuỗi 046010-MILK+046020-YOGURT+046040-BUTTER+046050-EGGS
Kết quả sẽ là -MILK+-YOGURT+-BUTTER+-EGGS
Dấu trừ còn thừa bạn có thể dùng hàm SUBSTITUTE để loại bỏ, chẳng hạn:
Mã:
=SUBSTITUTE(RemoveNumber(A1),"-","")
-------------------------------------
Viết luôn trong code để loại dấu trừ cũng không có vấn đề nhưng mà viết vậy thì chỉ mình bạn xài, chẳng áp dụng được cho bài toán nào nữa cả
 
Mình cảm ơn các anh em GPE nhiều lắm!
 
Anh/Chị giúp em với ạ. Em có dữ liệu sau:
A1: Tributyltin chloride, code: N-13650-250MG, 250mg/lọ, Chemservice (Mỹ)
A2: Chất chuẩn Chlorpyrifos, 250mg/lọ, code: N-11459-250MG, Chemservice (Mỹ)
A3: Chlorpyrifos-methyl, 250mg/lọ, code: DRE-C11601000, LGC (Đức)
A4: Chuẩn 2,4-Diaminoanisole dihydrochloride, 0.1g/lọ, code: DRE-C12192000 - LGC (Đức)
A5: Mycotoxin Mix 5 (Aflatoxins), 1ml/lọ, code: B-MYC0305-1, LGC (Đức)
...
Giờ em muốn tách các mã code ra thì làm thế nào ạ? (N-13650-250MG, N-11459-250MG, DRE-C11601000, DRE-C12192000, B-MYC0305-1)
Em cám ơn Anh/Chị nhiều ạ
 
Anh/Chị giúp em với ạ. Em có dữ liệu sau:
A1: Tributyltin chloride, code: N-13650-250MG, 250mg/lọ, Chemservice (Mỹ)
A2: Chất chuẩn Chlorpyrifos, 250mg/lọ, code: N-11459-250MG, Chemservice (Mỹ)
A3: Chlorpyrifos-methyl, 250mg/lọ, code: DRE-C11601000, LGC (Đức)
A4: Chuẩn 2,4-Diaminoanisole dihydrochloride, 0.1g/lọ, code: DRE-C12192000 - LGC (Đức)
A5: Mycotoxin Mix 5 (Aflatoxins), 1ml/lọ, code: B-MYC0305-1, LGC (Đức)
...
Giờ em muốn tách các mã code ra thì làm thế nào ạ? (N-13650-250MG, N-11459-250MG, DRE-C11601000, DRE-C12192000, B-MYC0305-1)
Em cám ơn Anh/Chị nhiều ạ
Công thức:
PHP:
B1=TRIM(LEFT(SUBSTITUTE(TRIM(MID(SUBSTITUTE(A1;":";REPT(" ";200));200;200));",";REPT(" ";200));200))
Dòng nào không giống "trật tự" như A1 thì tự chỉnh lại cho đúng (ví dụ: A4)
 
Anh/Chị giúp em với ạ. Em có dữ liệu sau:
A1: Tributyltin chloride, code: N-13650-250MG, 250mg/lọ, Chemservice (Mỹ)
A2: Chất chuẩn Chlorpyrifos, 250mg/lọ, code: N-11459-250MG, Chemservice (Mỹ)
A3: Chlorpyrifos-methyl, 250mg/lọ, code: DRE-C11601000, LGC (Đức)
A4: Chuẩn 2,4-Diaminoanisole dihydrochloride, 0.1g/lọ, code: DRE-C12192000 - LGC (Đức)
A5: Mycotoxin Mix 5 (Aflatoxins), 1ml/lọ, code: B-MYC0305-1, LGC (Đức)
...
Giờ em muốn tách các mã code ra thì làm thế nào ạ? (N-13650-250MG, N-11459-250MG, DRE-C11601000, DRE-C12192000, B-MYC0305-1)
Em cám ơn Anh/Chị nhiều ạ
 

File đính kèm

  • Quálười!com..xlsx
    9.4 KB · Đọc: 15
Web KT
Back
Top Bottom