Viết macro đánh dấu các Cell có giá trị như nhau???Help!!!

  • Thread starter Thread starter tornado
  • Ngày gửi Ngày gửi
Liên hệ QC

tornado

Thành viên mới
Tham gia
22/9/09
Bài viết
7
Được thích
0
Em muốn viết 1 macro để tô màu các cell có cùng giá trị ví dụ như tô màu xanh cho các ô có giá trị là "Hà Nội".Các bác giúp em với, em đang làm quen với macro nên gà quá**~**
 
Bài toán của bạn quá ư là vĩ đại đó nha!

Nhiệm vụ đề ra là tô màu các trị trùng trong 1 vùng; Nhưng bạn chưa khoanh vùng ấy lại, thì có nghĩa là tìm trên cả triệu ô trên trang tính luôn!

Mình hướng đẫn cách làm trong 2 trường hợp sau:

(1) Tìm trùng trong 1 cột dữ liệu
Ta lập danh sách duy nhất (DSDN) của cột dữ liệu (CTim) cần tìm đó & tiếp theo là tạo 2 vòng lặp
duyệt theo CTim & DSDN, nếu anh này bằng trị với anh bên vòng lặp kia thì tô màu.
Có thể cải tiến tốc độ, nếu áp dụng fương thức FIND() hay hàm MATCH(). . .

(2) Tìm trùng trong 1 vùng dữ liệu của vài cột & vài chục dòng:
Ta fải thêm các bước thực hiện sao để đưa về trường hợp (1)

Nếu tìm trong toàn bộ trang tính thì là chuyện lớn à nha.
 
Upvote 0
Em muốn viết 1 macro để tô màu các cell có cùng giá trị ví dụ như tô màu xanh cho các ô có giá trị là "Hà Nội".Các bác giúp em với, em đang làm quen với macro nên gà quá**~**
Chưa biết dữ liệu của bạn thế nào, tuy nhiên hãy thí nghiệm với code này nhé:
PHP:
Sub Test()
  Dim SrcRng As Range, Clls As Range, iColor As Long
  Set SrcRng = Range("A1").CurrentRegion
  iColor = 9
  With CreateObject("Scripting.Dictionary")
    For Each Clls In SrcRng
      If Clls.Value <> "" Then
        If Not .Exists(Clls.Value) Then
          iColor = iColor + 1
          .Add Clls.Value, iColor
          Clls.Interior.ColorIndex = iColor Mod 56
          Clls.Font.ColorIndex = (iColor + 22) Mod 56
        Else
          Clls.Interior.ColorIndex = .Item(Clls.Value) Mod 56
          Clls.Font.ColorIndex = (.Item(Clls.Value) + 22) Mod 56
        End If
      End If
    Next
  End With
End Sub
Cell nào có giá trị giống nhau sẽ cùng màu Font và màu nền:
Giới hạn: Chỉ tô được tối đa 56 màu mà thôi
 

File đính kèm

Upvote 0
Cám ơn hai bác nhé!Em chỉ tìm trong 1 vùng nhỏ thôi.

Sub Macro1()

Range("rrrr").Select
If Cells.Text = "Hà Nội" Then
Cells.Interior.ColorIndex = 65

End If

End Sub
Đoạn code trên của em có gì sai mà khi em chạy chả thấy gì cả???
 
Upvote 0
Cám ơn hai bác nhé!Em chỉ tìm trong 1 vùng nhỏ thôi.

Sub Macro1()

Range("rrrr").Select
If Cells.Text = "Hà Nội" Then
Cells.Interior.ColorIndex = 65

End If

End Sub
Đoạn code trên của em có gì sai mà khi em chạy chả thấy gì cả???
sao mà được chứ! Ít ra phải vầy:
PHP:
Sub Macro1()
  Dim Clls As Range
  For Each Clls In Range("rrrr")
    If Clls.Text = "Hà N" & ChrW(7897) & "i" Then Clls.Interior.ColorIndex = 65
  Next
End Sub
Ngoài ra xin nói thêm:
- Ta không thể gõ chữ "Hà Nội" trong VBA nên buộc phải ghi theo kiểu "Hà N" & ChrW(7897) & "i"
- Chẳng có màu nền nào có Index = 65 đâu bạn à ---> Tối đa = 56 mà thôi
- Nếu đây là bài tập để "dợt" thì chẳng nói làm gì, còn để xài thì chả ai làm thế cho mệt ---> Conditional Formating cho nó khỏe
 
Lần chỉnh sửa cuối:
Upvote 0
Upvote 0
Mình muốn viết giá trị 0 vào những ô trống trong 1 cột thì phải làm thế nào? mong mọi nguời chỉ giúp
 
Upvote 0
Mình muốn viết giá trị 0 vào những ô trống trong 1 cột thì phải làm thế nào? mong mọi nguời chỉ giúp
Bạn nói rõ hơn nữa đi, kèm theo File nữa.
Ô trống trong cột là sao? Cột đó chứa dữ liệu hay công thức?
Đây là chuyên mục Lập trình với Excel, Bạn muốn một Macro phải không?
 
Upvote 0
Bạn nói rõ hơn nữa đi, kèm theo File nữa.
Ô trống trong cột là sao? Cột đó chứa dữ liệu hay công thức?
Đây là chuyên mục Lập trình với Excel, Bạn muốn một Macro phải không?
Mình không biết nữa. Mình có 1 cột chứa dữ liệu số nhưng trong đó có những ô không có dữ liệu và mình muốn điền số 0 vào đấy
 

File đính kèm

Lần chỉnh sửa cuối:
Upvote 0
Mình không biết nữa. Mình có 1 cột chứa dữ liệu số nhưng trong đó có những ô không có dữ liệu và mình muốn điền số 0 vào đấy
Trong file bạn đã có code rồi đấy thôi, giờ sửa nó lại thành vầy:
PHP:
Sub AddZero()
  On Error Resume Next
  Columns("B:B").SpecialCells(xlCellTypeBlanks) = 0
End Sub
Ở ngoài bảng tính, bạn chỉ cần bấm Alt + F8, chọn tên macro rồi bấm nút Run là xong
 

File đính kèm

Upvote 0
Trong file bạn đã có code rồi đấy thôi, giờ sửa nó lại thành vầy:
PHP:
Sub AddZero()
  On Error Resume Next
  Columns("B:B").SpecialCells(xlCellTypeBlanks) = 0
End Sub
Ở ngoài bảng tính, bạn chỉ cần bấm Alt + F8, chọn tên macro rồi bấm nút Run là xong
Thanks nhìu nhìu. Hic vậy mừ cả sáng nay mình ngồi làm thủ công.
Mình hỏi lạc đề một chút được không? Mình có 1 bảng số liệu muốn chuyển thành cột như đính kèm bên dưới. Có cách nào nhanh hơn là mình phải copy paste thủ công không? Vì mình cần phải chuyển rất nhiều số liệu
 

File đính kèm

Upvote 0
Thanks nhìu nhìu. Hic vậy mừ cả sáng nay mình ngồi làm thủ công.
Mình hỏi lạc đề một chút được không? Mình có 1 bảng số liệu muốn chuyển thành cột như đính kèm bên dưới. Có cách nào nhanh hơn là mình phải copy paste thủ công không? Vì mình cần phải chuyển rất nhiều số liệu
Cái này dùng VLOOKUP là được rồi
- Gõ ngày 1/1 vào cell O6
- Kéo fill xuống đến 31/12
- Tại P6, gõ công thức: =VLOOKUP(DAY($O6),$A$6:$M$36,MONTH($O6)+1,0)
- Kéo fill xuống
Thế thôi
 
Upvote 0
Web KT

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

Back
Top Bottom