Lọc lấy các chữ sau dấu "/" (1 người xem)

Liên hệ QC

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

Duong gia

Thành viên thường trực
Tham gia
15/1/07
Bài viết
352
Được thích
118
Chào các bạn, mình muốn tạo 1 button dùng Code lọc lấy chữ "thùng hay xô " sau dấu "/" thì làm sao, mong các bạn chỉ giúp. VD mặt hàng (quy cách) TÔM 1080 - ( 200g x 40 gói/thùng)----> lấy thùng CÁ 2010 - ( 200g x 40 bao/xô)----> lấy
 
Lần chỉnh sửa cuối:
Hàm của bạn đây : =RIGHT(A1;LEN(A1)-FIND("/";A1;1))

Nice day !!
 
Lần chỉnh sửa cuối:
Upvote 0
Chào các bạn, mình muốn tạo 1 button dùng Code lọc lấy chữ "thùng hay xô " sau dấu "/" thì làm sao, mong các bạn chỉ giúp.
VD mặt hàng (quy cách)
TÔM 1080 - ( 200g x 40 gói/thùng)----> lấy thùng
CÁ 2010 - ( 200g x 40 bao/xô)----> lấy
Nếu bạn không chuẩn hóa mặt hàng thì rất khó đạt được kết quả.
Mình tìm ký tự "/" sau đó dùng hàm mid trích ra từ chuỗi này.
Ví dụ trường hợp chuỗi s ở trên dùng hàm: =Mid(s, find("/", s) + 1, len(s) - find("/", s) -1)
Còn nếu code thì bạn cũng thao tác như trên hoặc dùng một vòng lặp tìm "/", khi tìm thấy thì bắt đầu lấy kết quả. Mong rằng giúp được bạn ít nhiều
 
Upvote 0
Hàm của bạn đây : =RIGHT(A1,LEN(A1)-(FIND("/",A1,1)-2))

Nice day !!

Công thức của bạn chưa chính xác đâu nhé, với giá trị 200g x 40 bao/xô , kết quả là o/xô

Công thức đúng phải như vầy:

=RIGHT(A1,LEN(A1)-FIND("/",A1))

Nhưng không biết quy cách của bạn có 2 dấu ngoặc ở ngoài nữa hay không, như vầy nè: (200g x 40 bao/xô) , nếu vậy bạn phải dùm hàm khác:

=TRIM(SUBSTITUTE(RIGHT(A1,LEN(A1)-FIND("/",A1)),")",""))

Lưu ý: Với bài này chỉ dùng công thức, không cần vào box Lập trình với Excel đâu!
 
Lần chỉnh sửa cuối:
Upvote 0
Lần chỉnh sửa cuối:
Upvote 0
Công thức của bạn chưa chính xác đâu nhé, với giá trị 200g x 40 bao/xô , kết quả là o/xô

Công thức đúng phải như vầy:

=RIGHT(A1,LEN(A1)-FIND("/",A1))

Nhưng không biết quy cách của bạn có 2 dấu ngoặc ở ngoài nữa hay không, như vầy nè: (200g x 40 bao/xô) , nếu vậy bạn phải dùm hàm MID

Hi Quên cái vụ dấu ()
Công thức chính xác phải là : =LEFT(RIGHT(A1;LEN(A1)-FIND("/";A1));LEN(RIGHT(A1;LEN(A1)-FIND("/";A1)))-2)

có tính luôn dấu () và khoảng trắng ở hai đầu.

Nice day !!
 
Upvote 0
Công thức của bạn chưa chính xác đâu nhé, với giá trị 200g x 40 bao/xô , kết quả là o/xô Công thức đúng phải như vầy: =RIGHT(A1,LEN(A1)-FIND("/",A1)) Nhưng không biết quy cách của bạn có 2 dấu ngoặc ở ngoài nữa hay không, như vầy nè: (200g x 40 bao/xô) , nếu vậy bạn phải dùm hàm khác: =SUBSTITUTE(RIGHT(A1,LEN(A1)-FIND("/",A1)),")","")
Hàm của bạn lọc vẫn chưa chuẩn, còn dính dấu ")" ở đằng sau. Bạn xem lại giúp
 
Lần chỉnh sửa cuối:
Upvote 0
Hi Quên cái vụ dấu ()
Công thức chính xác phải là : =LEFT(RIGHT(A1;LEN(A1)-FIND("/";A1));LEN(RIGHT(A1;LEN(A1)-FIND("/";A1)))-2)

có tính luôn dấu () và khoảng trắng ở hai đầu.

Nice day !!

Làm công thức ngắn gọn thôi, muốn loại bỏ khoảng trắng chỉ cần dùng hàm TRIM và muốn loại bỏ dấu ")" ta dùng hàm SUBSTITUTE cho công thức ngắn gọn lại.

=TRIM(SUBSTITUTE(RIGHT(A1,LEN(A1)-FIND("/",A1)),")",""))


Hàm của bạn lọc vẫn chưa chuẩn, còn dính dấu ")" ở đằng sau. Bạn xem lại giúp

Bạn xem kỹ lại chưa vậy? Tôi đã check nhiều lần rồi đấy!
 

File đính kèm

Lần chỉnh sửa cuối:
Upvote 0
Cảm ơn bạn Minhthien321 hàm : =TRIM(SUBSTITUTE(RIGHT(A1,LEN(A1)-FIND("/",A1)),")","")) rất ok. Thanks
 
Lần chỉnh sửa cuối:
Upvote 0
Còn cái này sao bác ?
Mình test cũng ok mà hi :
=LEFT(RIGHT(A1;LEN(A1)-FIND("/";A1));LEN(RIGHT(A1;LEN(A1)-FIND("/";A1)))-2)
Công thức của Bạn nếu A1 = TÔM 1080 - ( 200g x 40 gói/thùng ), kết quả là thùng, nếu A1 = TÔM 1080 - ( 200g x 40 gói/thùng) kết quả là thùn, nếu sau dấu đóng ngoặc có thêm vài dấu cách thì kết quả là thùng) ,do đó không thể xem là OK được.
 
Upvote 0
Chào các bạn, mình muốn tạo 1 button dùng Code lọc lấy chữ "thùng hay xô " sau dấu "/" thì làm sao, mong các bạn chỉ giúp.
VD mặt hàng (quy cách)
TÔM 1080 - ( 200g x 40 gói/thùng)----> lấy thùng
CÁ 2010 - ( 200g x 40 bao/xô)----> lấy

Bạn thử code này.
Mã:
Sub Macro1()
On Error Resume Next
    Range([b1], [b65536].End(3)).Copy [c1]
    With Range([c1], [c65536].End(3))
        .Replace "*/", ""
        .Replace ")", ""
    End With
End Sub
 

File đính kèm

Upvote 0
Bạn thử code này.
Mã:
Sub Macro1()
On Error Resume Next
    Range([b1], [b65536].End(3)).Copy [c1]
    With Range([c1], [c65536].End(3))
        .Replace "*/", ""
        .Replace ")", ""
    End With
End Sub

Bác TrungChinhs thật là nhiệt tình! Giết gà đâu phải dùng dao mổ trâu!? sax ... sax ...

Bác phải lồng thêm cái hàm TRIM nữa đấy nhé! (.Replace " ", "")
 
Lần chỉnh sửa cuối:
Upvote 0
Bác TrungChinhs thật là nhiệt tình! Giết gà đâu phải dùng dao mỗ trâu!? sax ... sax ...

Bác phải lồng thêm cái hàm TRIM nữa đấy nhé! (.Replace " ", "")

Bạn ấy nhờ viết code mà. Code "mổ gà" thì mình lại không biết viết. Còn muốn Trim thì phải Trim dữ liệu nguồn mới là việc cần làm.
 
Upvote 0
Bạn thử code này.
Mã:
Sub Macro1()
On Error Resume Next
    Range([b1], [b65536].End(3)).Copy [c1]
    With Range([c1], [c65536].End(3))
        .Replace "*/", ""
        .Replace ")", ""
    End With
End Sub
Tôi lại khoái Trim() như của minhthien321, vì thế code này xin thêm 1 dòng nữa cho đẹp nhé:
Mã:
Sub Macro1()
On Error Resume Next
    Range([b1], [b65536].End(3)).Copy [c1]
    With Range([c1], [c65536].End(3))
        .Replace "*/", ""
        .Replace ")", ""
        [COLOR=#ff0000].Replace " ", ""[/COLOR]
    End With
End Sub
---------------
Xin lỗi vì khi mình viết bài này thì chưa có bài 15, 16 của 2 Bạn minhthien321TrungChinhs
 
Lần chỉnh sửa cuối:
Upvote 0
Tôi lại khoái Trim() như của minhthien321, vì thế code này xin thêm 1 dòng nữa cho đẹp nhé:
Mã:
Sub Macro1() On Error Resume Next     Range([b1], [b65536].End(3)).Copy [c1]     With Range([c1], [c65536].End(3))         .Replace "*/", ""         .Replace ")", ""         [COLOR=#ff0000].Replace " ", ""[/COLOR]     End With End Sub
--------------- Xin lỗi vì khi mình viết bài này thì chưa có bài 15, 16 của 2 Bạn minhthien321TrungChinhs
Bạn giải thích một chút, mình không hiểu. Khi click vô button nó copy toàn bộ dán sang cột C, chứ đâu thấy nó lọc gì đâu?
 
Lần chỉnh sửa cuối:
Upvote 0
Bạn giải thích một chút, mình không hiểu. Khi click vô button nó copy toàn bộ dán sang cột C, chứ đâu thấy nó lọc gì đâu?
Bạn sửa lại một chút. Thêm ,2 vào cuối những dòng có .Replace đầu dòng.
PHP:
Sub Macro1()
On Error Resume Next
    Range([b1], [b65536].End(3)).Copy [c1]
    With Range([c1], [c65536].End(3))
        .Replace "*/", "", 2
        .Replace ")", "", 2
        .Replace " ", "", 2
    End With
End Sub
 
Upvote 0
Bạn giải thích một chút, mình không hiểu. Khi click vô button nó copy toàn bộ dán sang cột C, chứ đâu thấy nó lọc gì đâu?
Bạn có tải xem bài #14 của Bạn TrungChinhs không?
Xóa nội dung trong cột C rồi Bấm vào cái vòng tròn bên cạnh để xem kết quả code đã làm.
Xem lại file này đi
 

File đính kèm

Upvote 0
Bạn có tải xem bài #14 của Bạn TrungChinhs không?
Xóa nội dung trong cột C rồi Bấm vào cái vòng tròn bên cạnh để xem kết quả code đã làm.
Xem lại file này đi
Code ở bài #14 không thiết lập cho tùy chọn Lookat khi sử dùng Replace nên Excel sẽ lấy theo lần tìm kiếm trước đó. Vì vậy, nếu trước đó Excel đã thực hiện Find hay Replace với tùy chọn Match entire cell contents thì code ở bài #14 không còn đúng nữa.

Có thể thử nghiệm bằng cách sau:
Nhấn Ctrl + F để bắt đầu tìm kiếm
Click vào nút Options >> để có thêm các tùy chọn
Đánh dấu vào mục Match entire cell contents
Click vào Findnext
Click Close

Bây giờ chạy lại code thì kết quả không còn đúng nữa.
 
Upvote 0
Mình tính dùng hàm của các bạn cho để thay thế cho đơn vị "T" (chỗ nào có chữ T bên dưới) ActiveCell.FormulaR1C1 = "=IF(AND(MOD(RC7,VLookup(RC6, TEN_HH, 3,0))>0,VLookup(RC6, TEN_HH, 3,0)>1,VLookup(RC6, TEN_HH, 3,0)1),""Xuaát ""&INT(RC7/VLookup(RC6, TEN_HH, 3,0))&""T ""&VLookup(RC6, TEN_HH, 2,0)&"" / ""&VLookup(RC12, TK_SC, 2,0),IF(OR(VLookup(RC6, TEN_HH, 3,0)=1,VLookup(RC6, TEN_HH, 3,0)>RC7),""Xuaát ""&RC7&"" ""&VLookup(RC6, TEN_HH, 4,0)&"" ""&VLookup(RC6, TEN_HH, 2, 0)&"" / ""&VLookup(RC12, TK_SC, 2,0))))" Giờ thì chịu thua, không biết làm sao để lòng ghép vào được. Nếu bác nào phát triển một hàm nào đó cho phù hợp thì tốt biết mấy. Cám ơn cả nhà
 
Lần chỉnh sửa cuối:
Upvote 0
Mình tính dùng hàm của các bạn cho để thay thế cho đơn vị "T" (chỗ nào có chữ T bên dưới)
ActiveCell.FormulaR1C1 = "=IF(AND(MOD(RC7,VLookup(RC6, TEN_HH, 3,0))>0,VLookup(RC6, TEN_HH, 3,0)>1,VLookup(RC6, TEN_HH, 3,0)<RC7),""Xuaát ""&INT(RC7/VLookup(RC6, TEN_HH, 3,0))&""T ""&ROUND((((RC7/VLookup(RC6, TEN_HH, 3, 0)-INT(RC7/VLookup(RC6, TEN_HH, 3,0)))*VLookup(RC6, TEN_HH, 3,0))),0)&"" ""&VLookup(RC6, TEN_HH, 4,0)&"" ""&VLookup(RC6, TEN_HH, 2,0)&"" / ""&VLookup(RC12, TK_SC, 2,0),IF(AND(MOD(RC7,VLookup(RC6, TEN_HH, 3,0))=0,VLookup(RC6, TEN_HH, 3,0)>1),""Xuaát ""&INT(RC7/VLookup(RC6, TEN_HH, 3,0))&""T ""&VLookup(RC6, TEN_HH, 2,0)&"" / ""&VLookup(RC12, TK_SC, 2,0),IF(OR(VLookup(RC6, TEN_HH, 3,0)=1,VLookup(RC6, TEN_HH, 3,0)>RC7),""Xuaát ""&RC7&"" ""&VLookup(RC6, TEN_HH, 4,0)&"" ""&VLookup(RC6, TEN_HH, 2, 0)&"" / ""&VLookup(RC12, TK_SC, 2,0))))"
Giờ thì chịu thua, không biết làm sao để lòng ghép vào được. Nếu bác nào phát triển một hàm nào đó cho phù hợp thì tốt biết mấy. Cám ơn cả nhà
Ít nhất Bạn cũng đưa tập tin và những yêu cầu cụ thể, kết quả mong muốn như thế nào (nhập thủ công vào), từ đó mọi người mới hiểu Bạn muốn gì mà giúp chớ nhìn cái công thức dài ngoằn lôn xộn, cái Name TEN_HH hổng biết nó ở đâu... làm sao hiểu được.
 
Upvote 0
Ít nhất Bạn cũng đưa tập tin và những yêu cầu cụ thể, kết quả mong muốn như thế nào (nhập thủ công vào), từ đó mọi người mới hiểu Bạn muốn gì mà giúp chớ nhìn cái công thức dài ngoằn lôn xộn, cái Name TEN_HH hổng biết nó ở đâu... làm sao hiểu được.
Đây Ba tê, mở file đính kèm. Mình muốn bạn lòng ghép hàm nào đó thay cho chữ "T" trong chuỗi code của mình. Cám ơn các bạn
 

File đính kèm

Lần chỉnh sửa cuối:
Upvote 0
Mọi người chạy đâu mất rồi, không ai giúp mình sao?
 
Lần chỉnh sửa cuối:
Upvote 0
Đây Ba tê, mở file đính kèm. Mình muốn bạn lòng ghép hàm nào đó thay cho chữ "T" trong chuỗi code của mình. Cám ơn các bạn
Công thức dài quá, bạn tham khảo chờ các cao thủ
Với công thức dài như thế này có vẽ dùng hàm tự tạo hay hơn??
 

File đính kèm

Upvote 0
Các bạn cố gắng rút gọn hàm của mình một tí, nó dài quá. Mình muốn click vào Button là ra kết quả. Thanks
 
Lần chỉnh sửa cuối:
Upvote 0
Chắc là phức tạp quá, không ai giải quyết được. Thôi cám ơn các bác.
 
Lần chỉnh sửa cuối:
Upvote 0
Chắc là phức tạp quá, không ai giải quyết được. Thôi cám ơn các bác.
Ái chà chà, cái bạn này sử dụng chiêu "khích tướng" đây
Không phải là phức tạp, nhưng đã "chơi" VBA thì VBA hết chứ sao lại chen một "thằng" công thức dài như con trăn Nam Mỹ, nhìn tá hỏa tam tinh, tối tăm mặt mũi thì giúp bạn "thế quái" nào được
Bi giờ nói lại: trong sheet "PHATSINH", bạn nhập dữ liệu các cột_ trừ cột D _ hình như cột J bạn đã giải quyết xong, khi nhập xong bạn "phang" cái nút một phát nó cho ra kết quả như trong ví dụ ??????
Nếu đúng như zị, bạn thử code này xem, cái nào chưa đúng ý thì nói tiếp ( không chơi khích tướng) vì mình cũng chưa hiểu rõ lắm (do nhìn cái công thức của bạn tới giờ cũng chưa hoàn hồn. Híc)
Mã:
Public Sub ToTiTe()
    Dim Vung, VungDo, DonVi, SoLuong, SoDu, Ws, I, J, Tim, d, Ma, Khach
    Set Ws = Sheets("NXTHH"): Set d = CreateObject("scripting.dictionary")
    Set Vung = Range([f12], [f1000].End(xlUp)): Set Ma = Sheets("BCD").Range(Sheets("BCD").[b10], Sheets("BCD").[b1000].End(xlUp))
    Set VungDo = Ws.Range(Ws.[a9], Ws.[a1000].End(xlUp))
        For I = 1 To Ma.Rows.Count
            If Not d.exists(Ma(I).Value) Then d.Add Ma(I).Value, Ma(I).Offset(, 1)
        Next I
            For I = 1 To Vung.Rows.Count
                For J = 1 To VungDo.Rows.Count
                    If VungDo(J) = Vung(I) Then
                        Tim = VungDo(J).Offset(, 1)
                        Khach = d.Item(Vung(I).Offset(, 6).Value)
                            If Vung(I).Offset(, 1) >= VungDo(J).Offset(, 2) Then
                                DonVi = Right(Tim, Len(Tim) - InStr(1, Tim, "/"))
                                DonVi = Left(DonVi, Len(DonVi) - 1)
                                SoLuong = Int(Vung(I).Offset(, 1) / VungDo(J).Offset(, 2))
                                SoDu = Vung(I).Offset(, 1) Mod VungDo(J).Offset(, 2)
                                    If SoDu > 0 Then
                                        Vung(I).Offset(, -2) = "Xuat " & SoLuong & " " & DonVi & " " & SoDu & " " & VungDo(J).Offset(, 3) & " " & VungDo(J).Offset(, 1) & "/ " & Khach
                                        Exit For
                                    Else
                                        Vung(I).Offset(, -2) = "Xuat " & SoLuong & " " & DonVi & " " & VungDo(J).Offset(, 1) & "/ " & Khach
                                        Exit For
                                    End If
                            Else
                                Vung(I).Offset(, -2) = "Xuat " & Vung(I).Offset(, 1) & " " & VungDo(J).Offset(, 3) & " " & VungDo(J).Offset(, 1) & "/ " & Khach
                                Exit For
                            End If
                End If
            Next J
        Next I
End Sub
Thân
 

File đính kèm

Upvote 0
Ái chà chà, cái bạn này sử dụng chiêu "khích tướng" đây Không phải là phức tạp, nhưng đã "chơi" VBA thì VBA hết chứ sao lại chen một "thằng" công thức dài như con trăn Nam Mỹ, nhìn tá hỏa tam tinh, tối tăm mặt mũi thì giúp bạn "thế quái" nào được Bi giờ nói lại: trong sheet "PHATSINH", bạn nhập dữ liệu các cột_ trừ cột D _ hình như cột J bạn đã giải quyết xong, khi nhập xong bạn "phang" cái nút một phát nó cho ra kết quả như trong ví dụ ?????? Nếu đúng như zị, bạn thử code này xem, cái nào chưa đúng ý thì nói tiếp ( không chơi khích tướng) vì mình cũng chưa hiểu rõ lắm (do nhìn cái công thức của bạn tới giờ cũng chưa hoàn hồn. Híc)
Mã:
Public Sub ToTiTe()     Dim Vung, VungDo, DonVi, SoLuong, SoDu, Ws, I, J, Tim, d, Ma, Khach     Set Ws = Sheets("NXTHH"): Set d = CreateObject("scripting.dictionary")     Set Vung = Range([f12], [f1000].End(xlUp)): Set Ma = Sheets("BCD").Range(Sheets("BCD").[b10], Sheets("BCD").[b1000].End(xlUp))     Set VungDo = Ws.Range(Ws.[a9], Ws.[a1000].End(xlUp))         For I = 1 To Ma.Rows.Count             If Not d.exists(Ma(I).Value) Then d.Add Ma(I).Value, Ma(I).Offset(, 1)         Next I             For I = 1 To Vung.Rows.Count                 For J = 1 To VungDo.Rows.Count                     If VungDo(J) = Vung(I) Then                         Tim = VungDo(J).Offset(, 1)                         Khach = d.Item(Vung(I).Offset(, 6).Value)                             If Vung(I).Offset(, 1) >= VungDo(J).Offset(, 2) Then                                 DonVi = Right(Tim, Len(Tim) - InStr(1, Tim, "/"))                                 DonVi = Left(DonVi, Len(DonVi) - 1)                                 SoLuong = Int(Vung(I).Offset(, 1) / VungDo(J).Offset(, 2))                                 SoDu = Vung(I).Offset(, 1) Mod VungDo(J).Offset(, 2)                                     If SoDu > 0 Then                                         Vung(I).Offset(, -2) = "Xuat " & SoLuong & " " & DonVi & " " & SoDu & " " & VungDo(J).Offset(, 3) & " " & VungDo(J).Offset(, 1) & "/ " & Khach                                         Exit For                                     Else                                         Vung(I).Offset(, -2) = "Xuat " & SoLuong & " " & DonVi & " " & VungDo(J).Offset(, 1) & "/ " & Khach                                         Exit For                                     End If                             Else                                 Vung(I).Offset(, -2) = "Xuat " & Vung(I).Offset(, 1) & " " & VungDo(J).Offset(, 3) & " " & VungDo(J).Offset(, 1) & "/ " & Khach                                 Exit For                             End If                 End If             Next J         Next I End Sub
Thân
Cám ơn bạn đã giúp đỡ. Xin lỗi do chờ lâu quá nóng ruột, nên .... Code của bạn hay nhưng chỉ dùng riêng cho xuất kho thôi chứ không dùng cho những cái khác như nhập kho hàng mua, hàng trả lại, xuất nguyên liệu sx và mấy cái khác nữa .vv. Do trình độ VBA của mình có hạn, mình lượm lặc từ GPE chế biến thành CT, nó hơi dài, dùng rất ổn, nay muốn cải tiến cần 1 hàm nào để lọc lấy đơn vị thùng, xô .. nằm sau dấu "/" thay cho chữ "T" có trong công thức của mình. Thanks
 
Lần chỉnh sửa cuối:
Upvote 0
Cám ơn bạn đã giúp đỡ. Xin lỗi do chờ lâu quá nóng ruột, nên .... Code của bạn hay nhưng chỉ dùng riêng cho xuất kho thôi chứ không dùng cho những cái khác như nhập kho hàng mua, hàng trả lại, xuất nguyên liệu sx và mấy cái khác nữa .vv. Do trình độ VBA của mình có hạn, mình lượm lặc từ GPE chế biến thành CT, nó hơi dài, dùng rất ổn, nay muốn cải tiến cần 1 hàm nào để lọc lấy đơn vị thùng, xô .. nằm sau dấu "/" thay cho chữ "T" có trong công thức của mình. Thanks
Hổng chịu kiểu của concogia thì coi thử cái này, Tả bín lù vừa code, vừa công thức, vừa name cho đủ màu. Chỉ nhập số liệu vào là nó "chạy". Copy hàng loạt rồi dán vào cột SL nó cũng chạy luôn, mà chạy đi "chết"
 

File đính kèm

Upvote 0

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

Back
Top Bottom