Cách tách ký tự trong excel (1 người xem)

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

salemden110

Thành viên mới
Tham gia
28/9/11
Bài viết
45
Được thích
15
Nghề nghiệp
Sản xuất
Đã 2 lần bị phạm quy nên hy vọng lần này e sẽ k bị admin spam nữa :(


Em có 1 số chuỗi mã hàng với kiểu ký tự khác nhau (cột A), em phải gộp chúng lại thành nhóm như cột B.
Em đã thử dùng công thức if nhưng có vẻ k ổn, các cao thủ chỉ giáo giùm em được không ạ?

Chân thành cảm ơn
 

File đính kèm

Dùng công thức mảng này nhé:
Mã:
=LEFT(A2,COUNT(1/ISNUMBER(--MID(A2,ROW(INDIRECT("1:"&LEN(A2))),1))))
Kết thúc bằng Ctrl-Shift-Enter
 
Dùng công thức mảng này nhé:
Mã:
=LEFT(A2,COUNT(1/ISNUMBER(--MID(A2,ROW(INDIRECT("1:"&LEN(A2))),1))))
Kết thúc bằng Ctrl-Shift-Enter

Để ý dữ liệu tại cell A2403 nhé
Thật sự cũng chưa biết ý tác giả muốn gì? Liệu có phải là: So sách các chuổi với nhau xem chúng giống nhau đên đâu (tính từ trái sang)... Nếu có giống nhau thì lấy phần giống nhau ấy làm Group. Không giống nhau để nguyên
Ví dụ:
ABCD11 và ABCD22
thì Group sẽ = ABCD
123ABC và 123EFG
thì Group sẽ = 123
 
Lần chỉnh sửa cuối:
Cảm ơn các bác đã ra tay
File đầu có 1 chút sai sót, làm ơn xem qua file sau này giúp em ạ.

Đây là những mã hàng của các loại sản phẩm khác nhau.
Những loại có đuôi: XS, XXS, M,L,XL,XXL đều phải lấy các ký tự đầu: 1234 hoặc 12345 hoặc M12345
Những loại có đuôi V1,2, vv: chuyển về dạng 1234V1,1234V2, vv
Những loại có chữ đằng cuối như: A, SH, -23, -AB thì giữ nguyên theo cột A
Những loại k có đuôi gì thì cũng giữ nguyên theo cột A

K biết em đã giải thích rõ ràng chưa ạ
 

File đính kèm

Cảm ơn các bác đã ra tay
File đầu có 1 chút sai sót, làm ơn xem qua file sau này giúp em ạ.

Đây là những mã hàng của các loại sản phẩm khác nhau.
Những loại có đuôi: XS, XXS, M,L,XL,XXL đều phải lấy các ký tự đầu: 1234 hoặc 12345 hoặc M12345
Những loại có đuôi V1,2, vv: chuyển về dạng 1234V1,1234V2, vv
Những loại có chữ đằng cuối như: A, SH, -23, -AB thì giữ nguyên theo cột A
Những loại k có đuôi gì thì cũng giữ nguyên theo cột A

K biết em đã giải thích rõ ràng chưa ạ

Đọc yêu cầu và nhìn kết quả mẫu của bạn thì còn quá nhiều điều chưa rõ, chưa tìm thấy quy luật chung nào cả, ví dụ nhé:
- Dòng 255: 2292V2A --> 2292V2 : Có chữ A sau cuối mà bạn vẫn muốn bỏ A
- Dòng 275: 2294B --> Hổng thấy điều kiện chữ B sau cuối này, tương tự dòng 281 với chữ C
- Dòng 999-1008: trớt quớt với các điều kiện.
- Còn MA, MB, LETTER.... "điếc luôn".
 
Đúng là bây giờ bác đặt ra câu hỏi này e mới thấy cái bảng mã hàng này có vấn đề thật và k theo logic thật :(
Em cứ mân mê bao nhiêu ngày nay mà k tìm ra cách. Mà 1 khi đã k logic thì ai giải được chứ!

Cảm ơn bác đã chỉ ra cái "ngu" của em +-+-+-+
 
Đúng là bây giờ bác đặt ra câu hỏi này e mới thấy cái bảng mã hàng này có vấn đề thật và k theo logic thật :(
Em cứ mân mê bao nhiêu ngày nay mà k tìm ra cách. Mà 1 khi đã k logic thì ai giải được chứ!

Cảm ơn bác đã chỉ ra cái "ngu" của em +-+-+-+
Ở đây không có chuyện "ngu" hay không.
Nếu cái nào có quy luật thì chỉ ra quy luật, cái nào không có trong quy luật chung thì nêu hết ra tất cả các trường hợp có thể xảy ra để mình "IF" thôi.
Dữ liệu do mình tạo ra, chắc chắn mình sẽ biết có bao nhiêu trường hợp có thể xảy ra mà. Nhiều khi nêu hết ra ta lại tìm thấy quy luật chung hổng chừng.
 
Ở đây không có chuyện "ngu" hay không.
Nếu cái nào có quy luật thì chỉ ra quy luật, cái nào không có trong quy luật chung thì nêu hết ra tất cả các trường hợp có thể xảy ra để mình "IF" thôi.
Dữ liệu do mình tạo ra, chắc chắn mình sẽ biết có bao nhiêu trường hợp có thể xảy ra mà. Nhiều khi nêu hết ra ta lại tìm thấy quy luật chung hổng chừng.

Cảm ơn bác Ba Tê, thực ra sau khi đọc cmt của bác thì e mới phát hiện ra 1 số cái thuộc dạng đặc biệt và chính vì dùng công thức cũ mà e đã vô hình chung k tính đến nó (kiểu như k thể kiểm tra được là đã nhập sai mã hàng). Em đã kiểm tra lại và nêu lại quy luật trong file đính kèm dưới đây, hy vọng lần này các bác đã có đủ dữ liệu để có thể giúp em. Thực tế e đang dùng IF nhưng công thức thì quá cồng kềnh mà tính hiệu quả k cao. Căn bản cái vốn excel của em cũng có giới hạn nên nhiều lúc thấy mình "ngu" thật bác ạ.
 

File đính kèm

Cảm ơn bác Ba Tê, thực ra sau khi đọc cmt của bác thì e mới phát hiện ra 1 số cái thuộc dạng đặc biệt và chính vì dùng công thức cũ mà e đã vô hình chung k tính đến nó (kiểu như k thể kiểm tra được là đã nhập sai mã hàng). Em đã kiểm tra lại và nêu lại quy luật trong file đính kèm dưới đây, hy vọng lần này các bác đã có đủ dữ liệu để có thể giúp em. Thực tế e đang dùng IF nhưng công thức thì quá cồng kềnh mà tính hiệu quả k cao. Căn bản cái vốn excel của em cũng có giới hạn nên nhiều lúc thấy mình "ngu" thật bác ạ.
Thử với Sub này xem, kiểm tra lại dòng 140-151, 2 cột B và C tôi chẳng biết cái nào là đúng với điều kiện của bạn cả.
PHP:
Public Sub GPE()
Dim Rng(), Rng2(), Arr(), I As Long, Tem As String, Sty As String, D As String, Ch As String
    Rng = Range([A2], [A65000].End(xlUp)).Value
ReDim Rng2(1 To UBound(Rng, 1), 1 To 1)
ReDim Arr(1 To UBound(Rng, 1), 1 To 1)
    For I = 1 To UBound(Rng, 1)
            Ch = Rng(I, 1)
        If Right(Ch, 2) = "SH" Then
            Arr(I, 1) = Ch
        Else
            With CreateObject("VBScript.RegExp")
                .Global = True
                If Mid(Ch, 2, 5) = "77400" Then
                    .Pattern = "[M]"
                    Arr(I, 1) = Left(Ch, 1) & .Replace(Mid(Ch, 2, 100), "")
                Else
                    Sty = Mid(Ch, 5, 100): D = Left(Ch, 4)
                        .Pattern = "[SMLX]"
                        Rng2(I, 1) = D & .Replace(Sty, "")
                    Tem = Mid(Rng2(I, 1), 7, 100): D = Left(Rng2(I, 1), 6)
                    .Pattern = "[ABC]"
                    Arr(I, 1) = D & .Replace(Tem, "")
                End If
            End With
        End If
     Next I
    [D2].Resize(I - 1, 1).Value = Arr
End Sub
 

File đính kèm

Lần chỉnh sửa cuối:
Thử với Sub này xem, kiểm tra lại dòng 140-151, 2 cột B và C tôi chẳng biết cái nào là đúng với điều kiện của bạn cả.

Cột C là đúng bác ạ. Cột B chỉ là chỉ cho bác thấy công thức hiện tại em dùng là như vậy và vẫn thấy có nhiều điểm thiếu xót như bác nói ở trên.
Em chưa biết dùng PHP code nên phải mất thời gian để check file của bác.
Một lần nữa cảm ơn bác đã giúp đỡ.
 
Cột C là đúng bác ạ. Cột B chỉ là chỉ cho bác thấy công thức hiện tại em dùng là như vậy và vẫn thấy có nhiều điểm thiếu xót như bác nói ở trên.
Em chưa biết dùng PHP code nên phải mất thời gian để check file của bác.
Một lần nữa cảm ơn bác đã giúp đỡ.
Cái vụ nầy lại trớt quớt nữa:
Nếu có chứa V1, V2, vv thì sẽ lấy hết các ký tự đến V1, V2, vv. Ví dụ: 1234AV1 thì để là 1234AV2 nhưng 1234V1A thì chỉ lấy 1234V1
Rồi bảng kết quả bạn muốn như cột C là sao?
|
A​
|
B​
|
C​
|
140​
|
2308V1A​
|
2308V1​
|
2308V1A​
|
141​
|2308V1B|2308V1|2308V1B|
142​
|2308V2A|2308V2|2308V2A|
143​
|2308V2B|2308V2|2308V2B|
144​
|2310A|2310A|2310A|
145​
|2313V1A|2313V1|2313V1A|
146​
|2313V1B|2313V1|2313V1B|
147​
|2313V2A|2313V2|2313V2A|
148​
|2313V2B|2313V2|2313V2B|
149​
|2314V2|2314V2|2314V2|
150​
|2315V1A|2315V1|2315V1A|
151​
|2315V2A|2315V2|2315V2A|
Híc! Chắc "dong" quá!
 
Lần chỉnh sửa cuối:
Cái vụ nầy lại trớt quớt nữa:
........
Híc! Chắc "dong" quá!
Đừng chạy Ba Tê, bài này hay đó, làm bài tập chơi Reg cho quen
Theo mình Ba Tê nên chuyển thành Function cho bạn í dễ kiểm tra
Chỉ cần bạn í đưa tất cả kiểu dữ liệu, mỗi kiểu 1 cell thôi, dùng hàm kiểm tra thử, chỗ nào còn chưa đúng thì....chơi tiếp, cóc sợ @$@!^%
Đừng chạy, đừng chạy
 
Xem coi file nay thế nào, nhìn dữ liệu ghê quá nên chơi đường tà đạo luôn coi sao, hên xui

Trước mắt thì thấy đúng với cột C rồi đấy
 

File đính kèm

Lần chỉnh sửa cuối:
Cái vụ nầy lại trớt quớt nữa:

Rồi bảng kết quả bạn muốn như cột C là sao?
|
A​
|
B​
|
C​
|
140​
|
2308V1A​
|
2308V1​
|
2308V1A​
|
141​
|2308V1B|2308V1|2308V1B|
142​
|2308V2A|2308V2|2308V2A|
143​
|2308V2B|2308V2|2308V2B|
144​
|2310A|2310A|2310A|
145​
|2313V1A|2313V1|2313V1A|
146​
|2313V1B|2313V1|2313V1B|
147​
|2313V2A|2313V2|2313V2A|
148​
|2313V2B|2313V2|2313V2B|
149​
|2314V2|2314V2|2314V2|
150​
|2315V1A|2315V1|2315V1A|
151​
|2315V2A|2315V2|2315V2A|
Híc! Chắc "dong" quá!

Chết, em bị loạn ngôn mất rồi :( Chắc tẩu hỏa nhập ma mấy hôm mà hồn vía có vấn đề :(
Chính xác là theo cột B bác ạ.
E thật tình xin lỗi vì đã làm bác "phát hỏa" nhé.
Cho e hỏi tại sao ở cell D245 lại báo lỗi ạ?
 
Chết, em bị loạn ngôn mất rồi :( Chắc tẩu hỏa nhập ma mấy hôm mà hồn vía có vấn đề :(
Chính xác là theo cột B bác ạ.
E thật tình xin lỗi vì đã làm bác "phát hỏa" nhé.
Cho e hỏi tại sao ở cell D245 lại báo lỗi ạ?
Có báo lỗi gì đâu, nó chỉ ra kết quả không đúng theo yêu cầu vì dữ liệu ở cell đó (71111xs) có ký tự "x" & "s" không viết in hoa & bác Ba Tê lúc đó chắc cũng thành bác Bốn Tê hay Năm Tê gì rồi nên không để ý rào chắn cái dzụ này
Híc
 
Có báo lỗi gì đâu, nó chỉ ra kết quả không đúng theo yêu cầu vì dữ liệu ở cell đó (71111xs) có ký tự "x" & "s" không viết in hoa & bác Ba Tê lúc đó chắc cũng thành bác Bốn Tê hay Năm Tê gì rồi nên không để ý rào chắn cái dzụ này
Híc
Đúng là quá 3 nhưng hổng biết 4,5 hay 6 tê. Tui đã thấy và đã tô màu vàng cho bạn ấy thấy dòng đó, để bạn ấy tự hiểu tại sao tui tô và cần phải làm gì với nó.
Tui đã viết :
PHP:
Ch = UCase(Rng(I, 1))
Nhưng khi gởi bài lại bỏ Ucase để có dòng màu vàng cho "đẹp" mà.
(Bạn ấy yêu cầu S,H,... mà đâu có nói hoa thường gì đâu, giỡn chút cho bạn ấy biết khi muốn nêu rõ yêu cầu)
Cảm ơn "Cò" đã động viên với cái "tui mới học" này.
Đừng chạy Ba Tê, bài này hay đó, làm bài tập chơi Reg cho quen.
.............................
a20.gif

Đừng chạy, đừng chạy
 
Lần chỉnh sửa cuối:
Đúng là quá 3 nhưng hổng biết 4,5 hay 6 tê. Tui đã thấy và đã tô màu vàng cho bạn ấy thấy dòng đó, để bạn ấy tự hiểu tại sao tui tô và cần phải làm gì với nó.
Tui đã viết :
PHP:
Ch = UCase(Rng(I, 1))
Nhưng khi gởi bài lại bỏ Ucase để có dòng màu vàng cho "đẹp" mà.
(Bạn ấy yêu cầu S,H,... mà đâu có nói hoa thường gì đâu, giỡn chút cho bạn ấy biết khi muốn nêu rõ yêu cầu)
Cảm ơn "Cò" đã động viên với cái "tui mới học" này.
Trong Reg có cái thằng này
Nếu Ba Tê không khai báo thì mặc định là Fasle ==> nó sẽ phân biệt chữ thường & hoa
Đã chơi Reg thì xài luôn của Reg cho nó "com- pờ- lê"
Híc
 

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

Back
Top Bottom