gamegamegamegame
Thành viên hoạt động



- Tham gia
- 5/6/15
- Bài viết
- 144
- Được thích
- 5
Cái này hơi đuối đây, giả sử dữ liệu không phải chỉ có 2 tên trùng nhau (tô 2 màu khác nhau) mà là 100, 1000 tên trùng nhau thì tô màu thế nào đây?file của em có 2 bảng
bảng 1 là bảng chưa tô màu , em muống code tự động tô màu bảng 1 giống như bảng 2 thì nên viết vba như thế nào ạ
mong được góp ý
cái này hơi đuối đây, giả sử dữ liệu không phải chỉ có 2 tên trùng nhau (tô 2 màu khác nhau) mà là 100, 1000 tên trùng nhau thì tô màu thế nào đây?
Option Explicit
Sub Macro2()
Dim Rws As Long, MyColor As Byte, J As Byte
Dim MyAdd As String
Dim Rng As Range, Cls As Range, sRng As Range, Rg0 As Range
1 'Tao Danh Sách Duy Nhát:'
Sheet1.Select
Rws = [d3].CurrentRegion.Rows.Count
[d3].Resize(Rws).AdvancedFilter Action:=xlFilterCopy, CopyToRange:=Range( _
"Z1"), Unique:=True
[D4].Resize(Rws).Interior.ColorIndex = 2
Set Rng = [d3].Resize(Rws)
MyColor = 34
2 'Tìm Trùng Theo Danh Sách Duy Nhát:'
For Each Cls In [z2].CurrentRegion.Offset(1)
If Cls.Value = "" Then Exit For
Set sRng = Rng.Find(Cls.Value, , xlFormulas, xlWhole)
If Not sRng Is Nothing Then
MyAdd = sRng.Address
Do
If Rg0 Is Nothing Then
Set Rg0 = sRng
Else
Set Rg0 = Union(Rg0, sRng)
End If
Set sRng = Rng.FindNext(sRng)
Loop While Not sRng Is Nothing And sRng.Address <> MyAdd
End If
3 'To Màu:'
If Rg0.Cells.Count > 1 Then
MyColor = MyColor + 1
If MyColor > 55 Then MyColor = 30
Rg0.Interior.ColorIndex = MyColor
End If
Set Rg0 = Nothing
Next Cls
End Sub
Hình như tôi nói bạn chưa hiểu!vd neu co 100 ong nguyen van a trung nhau thi to 100 ong A mau hong
và có 200 ông nguyễn văn b trùng nhau thì tô 200 ông B màu xanh nhạt vậy có đc ko
PHP:option explicit sub macro2() dim rws as long, mycolor as byte, j as byte dim myadd as string dim rng as range, cls as range, srng as range, rg0 as range 1 'tao danh sách duy nhát:' sheet1.select rws = [d3].currentregion.rows.count [d3].resize(rws).advancedfilter action:=xlfiltercopy, copytorange:=range( _ "z1"), unique:=true [d4].resize(rws).interior.colorindex = 2 set rng = [d3].resize(rws) mycolor = 34 2 'tìm trùng theo danh sách duy nhát:' for each cls in [z2].currentregion.offset(1) if cls.value = "" then exit for set srng = rng.find(cls.value, , xlformulas, xlwhole) if not srng is nothing then myadd = srng.address do if rg0 is nothing then set rg0 = srng else set rg0 = union(rg0, srng) end if set srng = rng.findnext(srng) loop while not srng is nothing and srng.address <> myadd end if 3 'to màu:' if rg0.cells.count > 1 then mycolor = mycolor + 1 if mycolor > 55 then mycolor = 30 rg0.interior.colorindex = mycolor end if set rg0 = nothing next cls end sub
Cái này mình đã thử nhưng nếu dữ liệu trùng nhiều hơn 56 thì code bị lỗi và những chỗ trùng nhau sau không được tô. Ở đây mỗi dạng trùng nhau mình cho một màu khác nhau nên thực sự nếu trùng nhau ít hẵng dùngfile của em có 2 bảng
bảng 1 là bảng chưa tô màu , em muống code tự động tô màu bảng 1 giống như bảng 2 thì nên viết vba như thế nào ạ
mong được góp ý
Bạn tham khảo Code sau:file của em có 2 bảng
bảng 1 là bảng chưa tô màu , em muống code tự động tô màu bảng 1 giống như bảng 2 thì nên viết vba như thế nào ạ
mong được góp ý
Sub TOMAU()
Dim Cll As Range
Dim Vung As Range
Dim clr As Long
Set Vung = Sheets(1).Range("D4:D" & Range("E65536").End(xlUp).Row)
Vung.Interior.ColorIndex = 2
clr = 6
For Each Cll In Vung
If Application.WorksheetFunction.CountIf(Vung, Cll) > 1 Then
If WorksheetFunction.CountIf(Range("D4:D" & Cll.Row), Cll) = 1 Then
Cll.Interior.ColorIndex = clr
clr = clr + 1
Else
Cll.Interior.ColorIndex = Vung.Cells(WorksheetFunction.Match(Cll.Value, Vung, False), 1).Interior.ColorIndex
End If
End If
Next
Set Vung = Nothing
End Sub
Cái này mình đã thử nhưng nếu dữ liệu trùng nhiều hơn 56 thì code bị lỗi và những chỗ trùng nhau sau không được tô. Ở đây mỗi dạng trùng nhau mình cho một màu khác nhau nên thực sự nếu trùng nhau ít hẵng dùng
đúng ý em rồi nhưng anh ơi nếu muống tÔ THÊM quá cột e nữa thì mình chỉnh code ở phần nào vậy anh
[COLOR=#ee82ee] [FONT=Courier New]if [/FONT][/COLOR][FONT=Courier New][COLOR=#ee82ee]rg0 is nothing then
[/COLOR][COLOR=#0000bb] [B] set rg0 [/B][/COLOR][B][COLOR=#007700]= [/COLOR][/B][/FONT][COLOR=#0000bb][FONT=Courier New][B]srng.Reize(,2)
[/B] [/FONT][/COLOR][FONT=Courier New][COLOR=#ee82ee] else
[/COLOR][COLOR=#007700] [/COLOR][B][COLOR=#0000bb]set rg0 [/COLOR][COLOR=#007700]= [/COLOR][COLOR=#0000bb]union[/COLOR][COLOR=#007700]([/COLOR][COLOR=#0000bb]rg0[/COLOR][COLOR=#007700], [/COLOR][COLOR=#0000bb]srng,Reize(,2)[/COLOR][/B][/FONT][FONT=Courier New][COLOR=#007700][B])
[/B] [/COLOR][COLOR=#ee82ee] end if[/COLOR][/FONT][COLOR=#ee82ee]
[/COLOR]
/(hông hẵn đâu chú em!
Nếu cho fép áp dụng mẹo:
* (chì tô các màu nền từ chỉ số 30-55) nhưng số ô mỗi lần đạt 55 lại tăng lên về fía fải!
Ví dụ 25 loạt người trùng ban đầu ta chỉ tô 1 ô đã tìm thấy;
25 loạt trùng êế tiếp ta lại tô 2 ô liền kề, kể cả bên fải của ô tìm thấy & cú thế tiếp tục,
nếu cần mình sẽ chứng minh trên thực địa ngay thôi!
- - - - - - - - - - - - - - - - - - - - - - - - - - - - -- - - - - - -
xài fương thức .resize(,n) trong 2 câu lệnh:
Mã:[color=#ee82ee] [font=courier new]if [/font][/color][font=courier new][color=#ee82ee]rg0 is nothing then [/color][color=#0000bb] [b] set rg0 [/b][/color][b][color=#007700]= [/color][/b][/font][color=#0000bb][font=courier new][b]srng.reize(,2) [/b] [/font][/color][font=courier new][color=#ee82ee] else [/color][b][color=#0000bb]set rg0 [/color][color=#007700]= [/color][color=#0000bb]union[/color][color=#007700]([/color][color=#0000bb]rg0[/color][color=#007700], [/color][color=#0000bb]srng,reize(,2)[/color][/b][/font][font=courier new][color=#007700][b]) [/b] [/color][color=#ee82ee] end if[/color][/font][color=#ee82ee] [/color]
Cảm ơn bạn. Mình sẽ thử tìm hiểu về những điều bạn nói./(hông hẵn đâu chú em!
Nếu cho fép áp dụng mẹo:
* (Chì tô các màu nền từ chỉ số 30-55) nhưng số ô mỗi lần đạt 55 lại tăng lên về fía fải!
Ví dụ 25 loạt người trùng ban đầu ta chỉ tô 1 ô đã tìm thấy;
25 loạt trùng êế tiếp ta lại tô 2 ô liền kề, kể cả bên fải của ô tìm thấy & cú thế tiếp tục,
Nếu cần mình sẽ chứng minh trên thực địa ngay thôi!
- - - - - - - - - - - - - - - - - - - - - - - - - - - - -- - - - - - -
Xài fương thức .Resize(,N) trong 2 câu lệnh:
Mã:[COLOR=#ee82ee] [FONT=Courier New]if [/FONT][/COLOR][FONT=Courier New][COLOR=#ee82ee]rg0 is nothing then [/COLOR][COLOR=#0000bb] [B] set rg0 [/B][/COLOR][B][COLOR=#007700]= [/COLOR][/B][/FONT][COLOR=#0000bb][FONT=Courier New][B]srng.Reize(,2) [/B] [/FONT][/COLOR][FONT=Courier New][COLOR=#ee82ee] else [/COLOR][B][COLOR=#0000bb]set rg0 [/COLOR][COLOR=#007700]= [/COLOR][COLOR=#0000bb]union[/COLOR][COLOR=#007700]([/COLOR][COLOR=#0000bb]rg0[/COLOR][COLOR=#007700], [/COLOR][COLOR=#0000bb]srng,Reize(,2)[/COLOR][/B][/FONT][FONT=Courier New][COLOR=#007700][B]) [/B] [/COLOR][COLOR=#ee82ee] end if[/COLOR][/FONT][COLOR=#ee82ee] [/COLOR]
cho xin xem thực địa thế nào đi bác. đọc mà chưa tưởng tượng ra @@/(hông hẵn đâu chú em!
Nếu cho fép áp dụng mẹo:
* (Chì tô các màu nền từ chỉ số 30-55) nhưng số ô mỗi lần đạt 55 lại tăng lên về fía fải!
Ví dụ 25 loạt người trùng ban đầu ta chỉ tô 1 ô đã tìm thấy;
25 loạt trùng êế tiếp ta lại tô 2 ô liền kề, kể cả bên fải của ô tìm thấy & cú thế tiếp tục,
Nếu cần mình sẽ chứng minh trên thực địa ngay thôi!
- - - - - - - - - - - - - - - - - - - - - - - - - - - - -- - - - - - -
Xài fương thức .Resize(,N) trong 2 câu lệnh:
Mã:[COLOR=#ee82ee] [FONT=Courier New]if [/FONT][/COLOR][FONT=Courier New][COLOR=#ee82ee]rg0 is nothing then [/COLOR][COLOR=#0000bb] [B] set rg0 [/B][/COLOR][B][COLOR=#007700]= [/COLOR][/B][/FONT][COLOR=#0000bb][FONT=Courier New][B]srng.Reize(,2) [/B] [/FONT][/COLOR][FONT=Courier New][COLOR=#ee82ee] else [/COLOR][B][COLOR=#0000bb]set rg0 [/COLOR][COLOR=#007700]= [/COLOR][COLOR=#0000bb]union[/COLOR][COLOR=#007700]([/COLOR][COLOR=#0000bb]rg0[/COLOR][COLOR=#007700], [/COLOR][COLOR=#0000bb]srng,Reize(,2)[/COLOR][/B][/FONT][FONT=Courier New][COLOR=#007700][B]) [/B] [/COLOR][COLOR=#ee82ee] end if[/COLOR][/FONT][COLOR=#ee82ee] [/COLOR]
cho xin xem thực địa thế nào đi bác. đọc mà chưa tưởng tượng ra @@
em cảm ơn thầy nhiều. mà sao thao tác trên mảng là code chạy chậm thế thầy, có phải là do tô màu nên chậm phải hum thầySẵn lòng thôi:
Với 2.400 người thì bạn cần chờ 3''