Hoàng Nhật Phương
Thành viên gắn bó



- Tham gia
- 5/11/15
- Bài viết
- 1,895
- Được thích
- 1,219
Sub TimGanDung()
Dim Rng As Range, sRng As Range, Cls As Range
Dim MyAdd As String: Dim MyColor As Byte
Set Rng = Range([m6], [m6].End(xlDown))
With Range([F7], [F7].End(xlDown))
.Offset(, 1).ClearContents: Randomize
.Interior.ColorIndex = 2: MyColor = 34 + 4 * Rnd() \ 1
End With
For Each Cls In Range([F7], [F7].End(xlDown))
Set sRng = Rng.Find(Trim$(Cls.Value), , xlFormulas, xlWhole)
If Not sRng Is Nothing Then
Cls.Offset(, 1).Value = sRng.Offset(, 1).Value
End If
Next Cls
For Each Cls In Range([F7], [F7].End(xlDown))
If Cls.Offset(, 1).Value = "" Then
Set sRng = Rng.Find(Cls.Value, , , xlPart)
If Not sRng Is Nothing Then
Cls.Offset(, 1).Value = sRng.Offset(, 1).Value
Cls.Interior.ColorIndex = MyColor
Else
Set sRng = Rng.Find(Left(Cls.Value, 9))
If Not sRng Is Nothing Then
Cls.Offset(, 1).Value = sRng.Offset(, 1).Value
Cls.Interior.ColorIndex = 3 + MyColor
End If
End If
End If
Next Cls
End Sub
Thêm cách dùng công thức:Xin chào các bạn,
Nhờ các xem giúp tôi có cách nào xử lý được vấn đề mong muốn nêu trong tập tin gửi kèm không ạ?
Xin cảm ơn rất nhiều,
Oanh Thơ
G7=OFFSET($N$6,MOD(AGGREGATE(14,6,MMULT(N(ISNUMBER(FIND(MID(F7,FIND("|",SUBSTITUTE(F7,"-","|",2))+1,COLUMN($A:$D)),MID($M$7:$M$23,FIND("|",SUBSTITUTE($M$7:$M$23,"-","|",2))+1,4)))),ROW($1:$4)^0)/(LEFT(F7,5)=LEFT($M$7:$M$23,5))*10^3+ROW($1:$50),1),10^3),)
G7=OFFSET($N$6,MOD(AGGREGATE(14,6,MMULT(N(ISNUMBER(FIND(MID(F7,FIND("|",SUBSTITUTE(F7,"-","|",2))+1,COLUMN($A:$D)),REPLACE($M$7:$M$23,1,9,"")))),ROW($1:$4)^0)/(LEFT(F7,9)=LEFT($M$7:$M$23,9))*10^3+ROW($1:$50),1),10^3),)
=VLOOKUP(LOOKUP(2,1/COUNTIF(M$7:M$23,MID(F7,1,ROW(INDIRECT("1:"&LEN(F7))))&"*"),MID(F7,1,ROW(INDIRECT("1:"&LEN(F7))))&"*"),M$7:N$23,2,0)
Theo đề bài 9 kí tự đầu tiên không đổi , có thể dùng công thức này :Xin chào các bạn,
Nhờ các xem giúp tôi có cách nào xử lý được vấn đề mong muốn nêu trong tập tin gửi kèm không ạ?
Xin cảm ơn rất nhiều,
Oanh Thơ
G7=INDEX($N$7:$N$23,LOOKUP(10^6,MATCH(LEFT(F7,9)&MID(F7,FIND("-",F7,9),ROW($1:$20))&"*",$M$7:$M$23,)))
Lưu ý cho Chủ thớt phải là: 9 ký tự đầu tiên của bảng 2 không đổi, đồng thời ký tự thứ 10 phải là "-" thì công thức Index(....) trên bài #5 mới hoạt động chính xác.Theo đề bài 9 kí tự đầu tiên không đổi
=LOOKUP(2,SEARCH(LOOKUP(2,1/COUNTIF(M$7:M$23,MID(F7,1,ROW(INDIRECT("1:"&LEN(F7))))&"*"),MID(F7,1,ROW(INDIRECT("1:"&LEN(F7))))&"*"),M$7:M$23),N$7:N$23)
Chưa có qui tắc rõ, thì làm khó nhau rồi, các công thức và code trên sẽ khó đáp ứng được tất cả trường hợp xảy ra (gần đúng)Kính chào Bác batman1 và toàn thể anh chị,
Xin cảm ơn tất cả mọi người đã giúp đỡ cho Oanh Thơ ạ.
Thực sự bài toán này Oanh Thơ đưa ra, nó không có một qui tắc rõ ràng nào ạ (cũng có thể nó có nhưng tại thời điểm này đến bản thân Oanh Thơ chưa cũng chưa lý giải được ạ).
vì vậy mà cứ nhắm mắt nhắm mũi để đưa lên thôi ạ. Mục đ làm sao để có thể nhận được sự góp ý/lời khuyên của tất cả mọi người ạ. Thật khâm phục và ngưỡng mộ tất cả mọi người.
Oanh Thơ sẽ thử nghiệm thêm một số trường hợp khác nữa, nếu có chỗ nào còn vướng mắc rất mong lại nhận được sự hỗ trợ của tất cả mọi người, để có thể giải quyết trường hợp tổng quát nhất ạ.
Chân thành cảm ơn.
Oanh Thơ
Vì thế khi đưa ra công thức tôi ghi rõ nó được viết cho qui tắc giả thiết nào. Muốn kiểm tra tính đúng đắn thì chỉ cần nhập các dữ liệu khác nhau thì nhìn thấy ngay.Chưa có qui tắc rõ, thì làm khó nhau rồi, các công thức và code trên sẽ khó đáp ứng được tất cả trường hợp xảy ra (gần đúng)