Hàm lấy text theo yêu cầu (1 người xem)

Liên hệ QC

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

beray3088

Thành viên mới
Tham gia
13/10/09
Bài viết
24
Được thích
2
Thân chào tất cả các bạn!

Mình có một khó khăn và rất mong được giúp đỡ.
Hiện tại mình có một mảng dữ liệu tô đậm và mình muốn tạo một hàm mà sau khi hoàn tất chúng ta kéo xuống thì được kết quả như cột màu đỏ và cột màu xanh.
và hàm mình muốn tạo cho ô màu đỏ và ô màu xanh lần lượt như sau:
=name(A2) => HIGH WIRE
=des(A2) => LEATHER/SHARK/S
Những dòng kế tiếp đều hoàn tất với kết quả như mảng dữ liệu dưới.
Chân thành cảm ơn!

View attachment 48475
Full description
HIGH WIRE LEATHER/SHARK/S HIGH WIRE LEATHER/SHARK/S CL EVRA WIDE D CL EVRA WIDE D no description
HIGH WIRE LEATHER/SHARK/S HIGH WIRE LEATHER/SHARK/S HIGH WIRE XWIDE 4E LEATHE HIGH WIRE XWIDE 4E LEATHE no description CL NYLON OU/LIGHT GREY/WH CL NYLON OU/LIGHT GREY/WH CL NYLON OU/LIGHT GREY/WH CL NYLON OU/LIGHT GREY/WH REE FLY WHITE/STEEL/ROSE REE FLY WHITE/STEEL/ROSE CLASSIC LEATHER BLK MENS CLASSIC LEATHER BLK MENS no description
 
Lần chỉnh sửa cuối:
Thân chào tất cả các bạn!

Mình có một khó khăn và rất mong được giúp đỡ.
Hiện tại mình có một mảng dữ liệu tô đậm và mình muốn tạo một hàm mà sau khi hoàn tất chúng ta kéo xuống thì được kết quả như cột màu đỏ và cột màu xanh.
và hàm mình muốn tạo cho ô màu đỏ và ô màu xanh lần lượt như sau:
=name(A2) => HIGH WIRE
=des(A2) => LEATHER/SHARK/S
Những dòng kế tiếp đều hoàn tất với kết quả như mảng dữ liệu dưới.
Chân thành cảm ơn!

Full description
HIGH WIRE LEATHER/SHARK/S HIGH WIRE LEATHER/SHARK/S CL EVRA WIDE D CL EVRA WIDE D no description
HIGH WIRE LEATHER/SHARK/S HIGH WIRE LEATHER/SHARK/S HIGH WIRE XWIDE 4E LEATHE HIGH WIRE XWIDE 4E LEATHE no description CL NYLON OU/LIGHT GREY/WH CL NYLON OU/LIGHT GREY/WH CL NYLON OU/LIGHT GREY/WH CL NYLON OU/LIGHT GREY/WH REE FLY WHITE/STEEL/ROSE REE FLY WHITE/STEEL/ROSE CLASSIC LEATHER BLK MENS CLASSIC LEATHER BLK MENS no description

Bó tay mi tà
Ẹc.. Ẹc...
 
Upvote 0
Cảm ơn sự nhiệt tình của anh. Anh trả lời nhanh thật!
Mong mọi người còn lại có thể giúp.
 
Upvote 0
Cảm ơn sự nhiệt tình của anh. Anh trả lời nhanh thật!
Mong mọi người còn lại có thể giúp.

Bạn gửi file excel lên đi, may ra còn có khí thế để làm đúng &đầy đủ
Nếu chỉ có hình như vậy thì xem cái này có được không?
Ô C2 dùng thử: =IF(LEN(B2)>=LEN(A2),"No description",SUBSTITUTE(A2,B2,"")) rồi fill xuống !
 
Upvote 0
trước tiên phải tính B2 đã chứ?

B2 =IF(ISERROR(FIND("/";A1;1));A1;LEFT(A1;FIND(" ";A1;FIND("/";A1;1)-8)-1))

Con số 8 đó, gia giảm theo thực tế dữ liệu, thì dụ trong dữ liệu mẫu:
1.
- chữ ngắn nhất trước dấu / đầu tiên OU 2 ký tự
- chữ ngắn nhất trước khoảng trắng cuối cùng là WIDE 4 ký tự.
- thêm 1 khoảng trắng 1 ký tự, cộng bản thân ký tự / nữa
- cộng là 8
2.
- chữ dài nhất trước dấu / đầu tiên LEATHER = 6 ký tự
- thêm 1 khoảng trắng 1 ký tự và bản thân ký tự /
- cộng cũng là 8

2 cái bằng nhau, dễ xử


Rồi cột C làm theo datbutmuc
 
Lần chỉnh sửa cuối:
Upvote 0
trước tiên phải tính B2 đã chứ?

B2 =IF(ISERROR(FIND("/";A1;1));A1;LEFT(A1;FIND(" ";A1;FIND("/";A1;1)-7)-1))

Con số 7 đó, gia giảm theo thực tế dữ liệu, thì dụ trong dữ liệu mẫu:
1.
- chữ ngắn nhất trước dấu / đầu tiên OU 2 ký tự
- chữ ngắn nhất trước khoảng trắng cuối cùng là WIDE 4 ký tự.
- thêm 1 khoảng trắng 1 ký tự
- cộng là 7
2.
- chữ dài nhất trước dấu / đầu tiên LEATHER = 6 ký tự
- thêm 1 khoảng trắng 1 ký tự
- cộng cũng là 7

2 cái bằng nhau, dễ xử


Rồi cột C làm theo datbutmuc
Thầy thử test cái này xem sao Thầy, vì chưa nắm chắc quy luật lấy text của chủ topic, nhìn dữ liệu tạm thời hiểu thế này:
- Nếu có "/" thì tách dữ liệu làm 2 cell
- Quy tắc tách: từ "/" đầu tiên, lui lại đụng khoảng trắng thì ngừng, lấy bên trái dữ liệu tới trước khoảng trắng 1 ký tự
Còn màu mè (làm sau) và cell kế bạn Datbutmuc làm rồi
Cứ phải chờ ý kiến của chủ topic may ra mới biết đường mà làm
Híc
Mã:
Public Function ten(cll As String)
  Dim i, j As Integer
    i = InStr(1, cll, "/")
      If i = 0 Then ten = cll: Exit Function
        j = InStrRev(cll, " ", i)
        ten = Left(cll, j - 1)
End Function
 
Upvote 0
đúng gòy Cò ơi. Quy luật tách có lẽ vậy đó. Dùng VBA có vụ Inverse chứ hàm Excel hông có, phải làm tà đạo.
 
Upvote 0
trước tiên phải tính B2 đã chứ?

B2 =IF(ISERROR(FIND("/";A1;1));A1;LEFT(A1;FIND(" ";A1;FIND("/";A1;1)-8)-1))

Con số 8 đó, gia giảm theo thực tế dữ liệu, thì dụ trong dữ liệu mẫu:
1.
- chữ ngắn nhất trước dấu / đầu tiên OU 2 ký tự
- chữ ngắn nhất trước khoảng trắng cuối cùng là WIDE 4 ký tự.
- thêm 1 khoảng trắng 1 ký tự, cộng bản thân ký tự / nữa
- cộng là 8
2.
- chữ dài nhất trước dấu / đầu tiên LEATHER = 6 ký tự
- thêm 1 khoảng trắng 1 ký tự và bản thân ký tự /
- cộng cũng là 8

2 cái bằng nhau, dễ xử


Rồi cột C làm theo datbutmuc
Trường hợp này có thể sử dụng thuật toán tách tên, khỏi phải tính toán số ký tư. Việc nhẩm tính số ký tự đôi khi không cho kết quả chính xác.
Sử dụng thuật toán tách tên, lấy phần đuôi trước. Sau khi có phần đuôi sẽ lấy phần còn lại là phần đầu
Mã:
C1=IF(ISERROR(FIND("/",A1)),"no description",TRIM(RIGHT(SUBSTITUTE(A1," ",REPT(" ",100)),100)))
Mã:
B1=SUBSTITUTE(A1,C1,"")
 
Upvote 0
Tìm dấu "/" đầu tiên thì la ra rồi! Và dữ liệu của bạn phải theo một quy tắc nhất định thì hàm mới hoạt động nhé!
 
Lần chỉnh sửa cuối:
Upvote 0
Trường hợp này có thể sử dụng thuật toán tách tên, khỏi phải tính toán số ký tư. Việc nhẩm tính số ký tự đôi khi không cho kết quả chính xác.
Sử dụng thuật toán tách tên, lấy phần đuôi trước. Sau khi có phần đuôi sẽ lấy phần còn lại là phần đầu
Mã:
C1=IF(ISERROR(FIND("/",A1)),"no description",TRIM(RIGHT(SUBSTITUTE(A1," ",REPT(" ",100)),100)))

Công thức trên không cho kết quả đúng với "cl nylon ou/light grey/wh" - ô A6 & A7 (trường hợp chuỗi có >= 2 dấu "/" và cách nhau bởi khoảng trắng)
Nên đúng ra C1 phải như thế này:
=IF(ISERROR(FIND("/",A1)),"no description",TRIM(RIGHT(SUBSTITUTE(A1," ",REPT(" ",100)),FIND("/",SUBSTITUTE(A1," ",REPT(" ",100))))))
Hoặc tổng quát hơn:
=IF(ISERROR(FIND("/",A1)),"no description",TRIM(RIGHT(SUBSTITUTE(A1," ",REPT(" ",100)),LEN(SUBSTITUTE(A1," ",REPT(" ",100)))+100-FIND("/",SUBSTITUTE(A1," ",REPT(" ",100))))))
 
Upvote 0
Rất cảm ơn mọi ngươi đã tích cực hưởng ứng.
Qua quá trỉnh kt thì code VB của Mr. concogia hoạt động rất tốt. Tuy vẫn còn thiếu hàm để lọc description; có thể kết hợp với hàm của Mr. huuthang. Đồng thời cũng cảm ơn mọi người còn lại đều có những ý kiến rất hay tuy chưa xử lý được triệt để vấn đề.
 
Upvote 0
Thật là tuyệt nếu mr. concogia có thể phát minh thêm một đoạn code cho description luôn.
 
Upvote 0
Thật là tuyệt nếu mr. concogia có thể phát minh thêm một đoạn code cho description luôn.
Híc, bạn beray3088 vui tính thật, mình mà PHÁT MINH ra được cái code í chắc Việt Nam vô địch "Quơ cấp" quá
Thôi thì nếu cái lấy tên mà đúng ý bạn thì tiếp cái này theo yêu cầu nhé:
Nếu chắc chắn là cái "thằng" descrip... nằm kế bên phải của "tên" thì dùng "em" này
Mã:
Public Function beray1(cll As Range)
  If cll = cll.Offset(0, 1) Then
    beray1 = "No description"
  Else
    beray1 = Right(cll, Len(cll) - Len(cll.Offset(0, 1)) - 1)
  End If
End Function
còn nếu nó năm "búa xua" thì dùng "chú" này:
Mã:
Public Function beray(cll, ten As Range)
  If cll = ten Then
    beray = "No description"
  Else
    beray = Right(cll, Len(cll) - Len(ten) - 1)
  End If
End Function
Thật ra khi lọc được tên rồi thì bạn đặt công thức cho cái "thằng" descripption cũng được mà chẳng cần "kốt, kiếc" gì cả
 
Upvote 0
Thật là tuyệt nếu mr. concogia có thể phát minh thêm một đoạn code cho description luôn.
Hai trong một luôn cho nó gọn.
PHP:
Public Function Tach(Str As String, Optional Op As Byte = 1)
    Tach = Left(Str, InStrRev(Str & " /", " ", InStr(Str & " /", "/")) - 1)
    If Op <> 1 Then Tach = IIf(Tach = Str, "No description", Right(Str, Abs(Len(Str) - Len(Tach) - 1)))
End Function
 

File đính kèm

Upvote 0
2 anh thân,

Một thắc mắc nho nhỏ là; trong trường hợp mình muốn lấy test triệt để ko cỏn chữ BLACK,BLUE,WHIT thì thế nào. Đa số sau khi =tach(A1,1) xong thì kết quả như bên dưới.

View attachment 48621
NPC RAD II JACQUARD BLACK NPC RAD II JACQUARD BLACK ULTRA VERSAFLEX LOW BLACK ULTRA VERSAFLEX LOW BLUE
SET ROYALE SLIM MONO WHIT SET ROYALE SLIM MONO WHIT SET ROYALE SLIM MONO WHIT
 
Lần chỉnh sửa cuối:
Upvote 0
2 anh thân,

Một thắc mắc nho nhỏ là; trong trường hợp mình muốn lấy test triệt để ko cỏn chữ BLACK,BLUE,WHIT thì thế nào. Đa số sau khi =tach(A1,1) xong thì kết quả như bên dưới.

View attachment 48621
NPC RAD II JACQUARD BLACK NPC RAD II JACQUARD BLACK ULTRA VERSAFLEX LOW BLACK ULTRA VERSAFLEX LOW BLUE
SET ROYALE SLIM MONO WHIT SET ROYALE SLIM MONO WHIT SET ROYALE SLIM MONO WHIT
Lấy text triệt để là như thế nào. Cái nào cũng phải có quy tắc thì mới làm được. Bạn phải nêu ra một quy tắc cụ thể chứ ngoài BLACK, BLUE, WHITE ra thì còn GREEN hay YELLOW... nào nữa.
 
Upvote 0
Thật sự hiện tại vẫn còn tồn tại trường hợp có thêm MEN, WO, KID ở đằng sau nữa đó anh. Và quy luật của chúng ta là đôi khi chỉ là màu thôi, đôi khi có thêm MEN, WO, KID.
Nhờ anh xem lại giúp.
 
Upvote 0
Thật sự hiện tại vẫn còn tồn tại trường hợp có thêm MEN, WO, KID ở đằng sau nữa đó anh. Và quy luật của chúng ta là đôi khi chỉ là màu thôi, đôi khi có thêm MEN, WO, KID.
Nhờ anh xem lại giúp.
Đã là quy luật thì không thể nào là đôi khi thế này đôi khi thế khác được. Phải rõ ràng, cụ thể. Nếu như bạn không thể rút ra được quy luật thì hãy tạo một file giải lập bao gồm dữ liệu và kết quả mong muốn. Trong file này bạn hãy cho ví dụ cho tất cả các trường hợp có thể xảy ra.
 
Upvote 0
Anh vui lòng xem hình dưới đây:

View attachment 48684

Ngoài quy luật mà anh em đã thảo luận quy luật mới phát sinh lả những text tô màu đỏ.
 
Upvote 0
Thân chào tất cả các bạn!

Mình có một khó khăn và rất mong được giúp đỡ.
Hiện tại mình có một mảng dữ liệu tô đậm và mình muốn tạo một hàm mà sau khi hoàn tất chúng ta kéo xuống thì được kết quả như cột màu đỏ và cột màu xanh.
và hàm mình muốn tạo cho ô màu đỏ và ô màu xanh lần lượt như sau:
=name(A2) => HIGH WIRE
=des(A2) => LEATHER/SHARK/S
Những dòng kế tiếp đều hoàn tất với kết quả như mảng dữ liệu dưới.
Chân thành cảm ơn!

View attachment 48475
Full description
HIGH WIRE LEATHER/SHARK/S HIGH WIRE LEATHER/SHARK/S CL EVRA WIDE D CL EVRA WIDE D no description
HIGH WIRE LEATHER/SHARK/S HIGH WIRE LEATHER/SHARK/S HIGH WIRE XWIDE 4E LEATHE HIGH WIRE XWIDE 4E LEATHE no description CL NYLON OU/LIGHT GREY/WH CL NYLON OU/LIGHT GREY/WH CL NYLON OU/LIGHT GREY/WH CL NYLON OU/LIGHT GREY/WH REE FLY WHITE/STEEL/ROSE REE FLY WHITE/STEEL/ROSE CLASSIC LEATHER BLK MENS CLASSIC LEATHER BLK MENS no description

Thường để xử lý việc tách chuỗi text, cần phải có một qui luật nhất định thì mới giải quyết được, ở mẫu dữ liệu của bạn mình không tìm thấy 1 qui luật chung cho các dòng dữ liệu đó. Bạn hãy nêu qui luật tách chuỗi mà bạn đang làm, mình sẽ viết hàm xử lý giúp bạn. Thanks
 
Upvote 0
Xin cám ơn anhkietvn trước.

Tôi tin rằng bạn đã theo dõi những loạt bài trước và biết được quy luật của nó.
Quy luật lần này tôi nêu ra là thường xuyên xuất hiện cuối những dòng text là text mà tôi ko dùng đến(được tô màu đỏ trong hình đính kèm).
Mong rằng các bạn có thể giúp.

View attachment 48754
 
Upvote 0
Xin cám ơn anhkietvn trước.

Tôi tin rằng bạn đã theo dõi những loạt bài trước và biết được quy luật của nó.
Quy luật lần này tôi nêu ra là thường xuyên xuất hiện cuối những dòng text là text mà tôi ko dùng đến(được tô màu đỏ trong hình đính kèm).
Mong rằng các bạn có thể giúp.

View attachment 48754

Link của bạn gửi không tồn tại, bạn xem lại dùm nhé
 
Upvote 0
View attachment 48763

mình dùng funtion add image của diễn đàn.
Bạn xem thử xem có open được ko nhé.

FILE EXCEL:

Đây là file excel, các bạn mở xem giúp thế nào nhé!
Chân thành cảm ơn.

View attachment 48767

Đây là file excel, các bạn mở xem giúp thế nào nhé!
Chân thành cảm ơn.
 

File đính kèm

Chỉnh sửa lần cuối bởi điều hành viên:
Upvote 0
View attachment 48763

mình dùng funtion add image của diễn đàn.
Bạn xem thử xem có open được ko nhé.

FILE EXCEL:

Đây là file excel, các bạn mở xem giúp thế nào nhé!
Chân thành cảm ơn.

View attachment 48767

Đây là file excel, các bạn mở xem giúp thế nào nhé!
Chân thành cảm ơn.

Cho mình hỏi bạn, dữ liệu nguồn là cột A đúng không? còn cột B và cột C là cái ta phải làm để tách chuỗi từ cột A???
Nếu đúng như suy nghĩ của mình thì bảng dữ liệu bạn đưa cho minh xem, mình thấy không có theo một qui luật nào cả, nên không thể viết hàm xử lý được
 
Upvote 0
Theo như cách làm của master concogia, huuthang thì mình thấy căn cứ vào dấu "/" để xử lý những chuỗi text ở cột A.
Lần này mình thấy "BLK MENS""MENS WHT""BLACK""WHITE"
thường xuất hiện trong chuỗi text. Theo bạn căn cứ vào đăc điểm này liệu chúng ta có thể giải quyết triệt để như mong muốn được ko?
Các bạn cho mình xin ý kiến nhé!

 
Upvote 0
Theo như cách làm của master concogia, huuthang thì mình thấy căn cứ vào dấu "/" để xử lý những chuỗi text ở cột A.
Lần này mình thấy "BLK MENS""MENS WHT""BLACK""WHITE"
thường xuất hiện trong chuỗi text. Theo bạn căn cứ vào đăc điểm này liệu chúng ta có thể giải quyết triệt để như mong muốn được ko?
Các bạn cho mình xin ý kiến nhé!


Theo giải thích của bạn thì đó không gọi là qui luật, vì nó có sự biến đổi theo ngữ cảnh. Qui luật là những gì mà bất biến, không vì trạng thái, ngữ cảnh mà thay đổi. Bởi vậy ngay từ dữ liệu nhập ban đầu bạn phải tạo lập các qui luật về nguồn dữ liệu nhập, và theo đó mới có cơ sở để xử lý nguồn dữ liệu xuất được

Gợi ý: sao ta không dùng 1 chỉ dấu đặc biệt để phân cách các thành phần dữ liệu bên trong
VD: thay vì nhập CLASSIC LEATHER BLK MENS => sao ta không thử nhập CLASSIC LEATHER|BLK MENS như vậy
Ở đậy bạn sẽ thấy có dấu "|" là dấu phân cách giữa 2 thành phần trong 1 chuỗi, sau này bạn muốn tách chuỗi ra thì thực hiện nó cực kì dễ dàng
 
Upvote 0
Theo như cách làm của master concogia, huuthang thì mình thấy căn cứ vào dấu "/" để xử lý những chuỗi text ở cột A.
Lần này mình thấy "BLK MENS""MENS WHT""BLACK""WHITE"
thường xuất hiện trong chuỗi text. Theo bạn căn cứ vào đăc điểm này liệu chúng ta có thể giải quyết triệt để như mong muốn được ko?
Các bạn cho mình xin ý kiến nhé!
Hihi, lại vật lộn với bạn Berray lần nữa
Dữ liệu lần này khác lần đầu hả bạn?
Với dữ liệu như trong bài thì làm như thế này có thể "triệt...cái gì đó", nhưng không chắc lắm đâu. Nếu may mắn cấu trúc toàn bộ dữ liệu là như thế thì Ok còn không thì Tờ -eo- teo- huyền " tèo"
Bạn thử gán code này cho chạy toàn bộ dữ liệu, những em nào ra không đúng bạn đưa dữ liệu đó lên xem nhé
Thân
Mã:
Public Function thuxem(Cll As Range)
 Dim Bla, i As Long
    For i = 1 To Len(Cll)
        If Mid(Cll, i, 1) = " " Then Bla = Bla + 1
        If Bla = 2 And Mid(Cll, i, 3) = " 4E" Then thuxem = Left(Cll, i + 3): Exit Function
        If Bla = 2 Then thuxem = Left(Cll, i): Exit Function
        If i = Len(Cll) And Bla = 1 Then thuxem = Cll
    Next
End Function
 

File đính kèm

Upvote 0
Chúng ta đang xét trường hợp đây là chuỗi text được quy định ko thay đổi.
Theo cách riêng của bản thân mình thì như thế này but cảm thấy chưa được thuyết phục:
1. Sử dụng cách này để lọc những trường hợp này ra: =IF(RIGHT(A2,8)="BLK MENS",SUBSTITUTE(A2,"BLK MENS",""),IF(RIGHT(A2,8)="MENS WHT",SUBSTITUTE(A2,"MENS WHT",""),IF(RIGHT(A2,5)="BLACK",SUBSTITUTE(A2,"BLACK",""),IF(RIGHT(A2,5)="WHITE",SUBSTITUTE(A2,"WHITE",""),A2))))
2.Sử dụng lại cách của master concogiahuuthang tách trường hợp còn lại của text chứa "/".

Các bạn góp ý những phương pháp khác hay hơn nhé!
 
Upvote 0
Xin hỏi Master concogia, Master huuthang và những Master Bro GPE nhà mìnhcó cách nào xử bằng VBA. Theo mình VBA sẽ xử lý triệt để hơn.
Mình nhận định lệch thì các bạn "thông" giúp mình nhé!
 
Upvote 0
Chúng ta đang xét trường hợp đây là chuỗi text được quy định ko thay đổi.
Theo cách riêng của bản thân mình thì như thế này but cảm thấy chưa được thuyết phục:
1. Sử dụng cách này để lọc những trường hợp này ra: =IF(RIGHT(A2,8)="BLK MENS",SUBSTITUTE(A2,"BLK MENS",""),IF(RIGHT(A2,8)="MENS WHT",SUBSTITUTE(A2,"MENS WHT",""),IF(RIGHT(A2,5)="BLACK",SUBSTITUTE(A2,"BLACK",""),IF(RIGHT(A2,5)="WHITE",SUBSTITUTE(A2,"WHITE",""),A2))))
2.Sử dụng lại cách của master concogiahuuthang tách trường hợp còn lại của text chứa "/".

Các bạn góp ý những phương pháp khác hay hơn nhé!

Với list các text phải tách như Black, White,... không nhiều, cố định và gói gọn trong trường hợp của bạn
Trước tiên tạo một danh sách duy nhất cho list trên, rồi dùng công thức theo cách SUBSTITUTE của bạn:
PHP:
=TRIM(SUBSTITUTE(SUBSTITUTE(SUBSTITUTE(SUBSTITUTE(SUBSTITUTE(SUBSTITUTE(A2,$F$7,""),$F$6,""),$F$3,""),$F$2,""),$F$5,""),$F$4,""))
Xem thêm file
 

File đính kèm

Upvote 0
Xin hỏi Master concogia, Master huuthang và những Master Bro GPE nhà mìnhcó cách nào xử bằng VBA. Theo mình VBA sẽ xử lý triệt để hơn.
Mình nhận định lệch thì các bạn "thông" giúp mình nhé!
Thế bạn đọc bài #28 chưa, thật ra phải nắm đúng quy luật nó đã rồi giải quyết bằng gì thì "tình tình tứ"
Dữ liệu có nhiều và bí mật không , nếu đưa lên hết may ra tìm được quy luật
 
Upvote 0
Master concogia ơi,


Em vừa test xong, kết quả trong file đính kèm.
Nhờ bác "triệt hẳn" cho em nó phát /-*+/
Em nó vẫn còn cái lòng thòng cái đuôi bác ạ. Với lại file đính kèm la hầu hết dữ liệu hiện tại.
Để phòng hờ, bác xem giúp em nếu phát sinh các màu khác thì thế nào nhé(blue,yellow,red,grey,...etc)
 
Lần chỉnh sửa cuối:
Upvote 0
Với nhưng cách làm trên đây chỉ xử lý cho những dữ liệu cố định, nếu dữ liệu có sự thay đổi cho dù là hàm hay công thức sẽ đều vô nghĩa cả, lúc đó lại phải hì hục sửa lại mấy cái công thức, mấy hàm nữa thì rất mệt
 
Upvote 0
Đồng ý với quan điểm anhkietvn, do đó trước tiên tôi đưa ra chuỗi ký tự có quy luật chung nhất sau đó những tình huống mà chúng ta thấy sẽ phát sinh thì chúng ta nêu ra đẻ bổ sung thêm hoặc phát triển và tìm thuật toán mới để giải quyết.
Toàn bộ chuỗi text trong file lần này tập hợp tương đối đầy đủ những trường hợp thường và sẽ gặp. Tôi cũng mong những phương pháp hay của bạn sẽ được chia sẻ để mọi người có cơ hội học hỏi.
Cám ơn bạn đã góp ý.
 
Upvote 0
Master concogia ơi,


Em vừa test xong, kết quả trong file đính kèm.
Nhờ bác "triệt hẳn" cho em nó phát /-*+/
Em nó vẫn còn cái lòng thòng cái đuôi bác ạ. Với lại file đính kèm la hầu hết dữ liệu hiện tại.
Để phòng hờ, bác xem giúp em nếu phát sinh các màu khác thì thế nào nhé(blue,yellow,red,grey,...etc)
Híc, tới "bi" giờ bạn mới lòi gần hết cái dữ liệu của bạn, mình nắm được sơ sơ "zồi", mình đề nghị với bạn thế này nhé:
- "Em" nào có "/" xử theo kiểu cũ.
- Các "em" còn lại: tạo một cột để bạn nhập cho mình những ký tự nào nằm ở cuối vùng dữ liệu phải "thịt" nó, trong bài mình để ở cột I( bạn muốn để chỗ "quái" nào cũng được), mình nhập những cái trong bài thôi, bạn cứ nhập tiếp những cái bạn chưa "lòi" ra nhé (là cái ý phòng hờ phát sinh đó)
Còn vài chỗ chưa ổn, để ăn cơm đã rồi làm tiếp. Híc
Mã:
Public Function Cat(cll)
 On Error Resume Next
    Dim Vung As Range, tam, kq As String, Bla, j, i As Long
      i = InStr(1, cll, "/")
        If i > 0 Then j = InStrRev(cll, " ", i): Cat = Left(cll, j - 1): Exit Function
         Set Vung = Range([i1], [i100].End(xlUp))
            Bla = InStrRev(cll, " ")
            tam = Right(cll, Len(cll) - Bla)
                j = Application.WorksheetFunction.Match(tam, Vung, 0)
                If j > 0 Then
                 kq = Replace(cll, tam, "")
                Else
                    kq = cll
                End If
    Cat = kq
End Function
Bạn gán code này vào bài giúp mình nhé
Thân
 

File đính kèm

Lần chỉnh sửa cuối:
Upvote 0

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

Back
Top Bottom