I have a few recommendataions for you. ---------------------------------------- First: You didn't mention which version of Excel you are using. If it's Excel 97 (2003) then you have 65,536 rows. If it's Excel2007, then you have 1,048,576 rows.
Range("n:n") tells your macro to process ALL rows. so really, evaluting 65,000 or over a million rows in 3 minutes is pretty good! But, since you probably don't have that much data, you need to break it out of the loop when you're done. You have several ways of doing this depending on your specific data. If your column "N" ALWAYS has a value, then you could break it when it does NOT: if (Cell.Value = "") then Exit For If there are sometimes blank cells in column "N" but you have another column that always has a value (i.e. column "A"), you could use it instead. Range("A:A").Select then use: If Cells(Cell.Row,Cell.Column).Value > .02 and ... Or you can count the rows and use a loop counter: Nrows = Application.WorksheetFunction.CountA(Range("N:N")) For I = 2 to Nrows Or: Nrows = ActiveCell.SpecialCells(xlLastCell).Row ------------------------------------------------- Next: I recommend NOT using an Excel "keyword" as a variable. "Cell" is used by Excel to refer to a Cell. If, at some point in your future programming you need to use that "property". Then things like Cell.Cell can be confusing. I recommend, first of all, ALWAYS declaring your variables. Use "Option Explicit" at the beginning of each module so that it forces you to ALWAYS define your variables. It also helps to ensure you don't mis-type a variable and accidently create a new one! Also, name your variables something unique. In this case, you could use "tCell" ------------------------------------------------- Next: If you have 1000-2000 rows, this isn't going to do much for you, but if you're evaluating 10,000 or 20,000 , it makes a difference. You're testing 7 "conditions". If the first condition is "true", you're STILL testing the other 6. Instead, only evaluate them until one is true by using "ElseIf". ------------------------------------------------- Next: Clear your color settings at the beginning of your macro. Otherwise, when testing, you can't tell if you're doing anything! (unless you're clearing it manually) ------------------------------------------------- Using these recommendations, I end up with: (I added a timer to calculate the processing time. I ran 70000 records in 5.6 seconds) ------------------------------------------------- Now that I think I've helped, I think I can be forgiven for a little "rant". Normally, I simply delete any message where the person couldn't take the time to write a subject line that describes the problem. EVERYONE who posts needs "help". That doesn't help direct your question that can provide help. For instance, I maintain over 140,000 lines of VBA code. But I do NOT (currently) use VBA to retrieve data from or update Web pages. Any questions relating to that topic, I'll leave for someone else. And pivot tables? I'm no expert. I can use them, but I'll leave troubleshooting to others with more experience. But retrieving data from Oracle, text files, or other Excel sources? I'm all over that. But "Help" didn't necessarily entice me to have a look. But I guess this time it worked.. guess I was bored... (lol) ------------------------------------------------- Hope this helps, Paul ------------------------------------------------- Option Explicit Sub UseColorz() Dim tCell, tStart tStart = Timer Range("N:P").Interior.Color = RGB(255, 255, 255) Range("N:N").Select For Each tCell In Selection If tCell.Value = "" Then Exit For ElseIf tCell.Value > 0.02 And tCell.Value <= 0.03 Then tCell.Interior.Color = RGB(255, 255, 0) Range("o16").Interior.Color = RGB(255, 255, 0) Range("p16").Value = " 0.02 to 0.03" ElseIf tCell.Value > 0.03 And tCell.Value <= 0.04 Then tCell.Interior.Color = RGB(255, 0, 255) Range("o17").Interior.Color = RGB(255, 0, 255) Range("p17").Value = " 0.03 to 0.04" ElseIf tCell.Value > 0.04 And tCell.Value <= 0.05 Then tCell.Interior.Color = RGB(0, 255, 255) Range("o18").Interior.Color = RGB(0, 255, 255) Range("p18").Value = " 0.04 to 0.05" ElseIf tCell.Value > 0.05 And tCell.Value <= 0.06 Then tCell.Interior.Color = RGB(128, 0, 0) Range("o19").Interior.Color = RGB(128, 0, 0) Range("p19").Value = " 0.05 to 0.06" ElseIf tCell.Value < 0.01 And tCell.Value <= 0.02 Then tCell.Interior.Color = RGB(192, 192, 192) Range("o21").Interior.Color = RGB(192, 192, 192) Range("p21").Value = " 0.059 to 0.066" ElseIf tCell.Value > 0.06 And tCell.Value <= 0.07 Then tCell.Interior.Color = RGB(153, 153, 255) Range("o22").Interior.Color = RGB(153, 153, 255) Range("p22").Value = " 0.066 to 0.073" ElseIf tCell.Value > 0.07 And tCell.Value <= 0.08 Then tCell.Interior.Color = RGB(128, 128, 0) Range("o23").Interior.Color = RGB(128, 128, 0) Range("p23").Value = " Greater Than 0.073" End If Next MsgBox Timer - tStart & " seconds " End Sub ________________________________ From: janet dickson <janetdicks...@gmail.com> To: excel-macros@googlegroups.com Sent: Mon, November 30, 2009 3:11:27 AM Subject: $$Excel-Macros$$ Help Hello Guys I have created a useful code for my work, see below. but the problem: This code takes almost 3minutes to complete running. can anyone help me tweaking this to work much better. Sub UseColorz() Range("n:n").Select For Each Cell In Selection If Cell.Value > 0.02 And Cell.Value <= 0.03 Then Cell.Interior.Color = RGB(255, 255, 0) Range("o16").Interior.Color = RGB(255, 255, 0) Range("p16").Value = " 0.02 to 0.03" End If If Cell.Value > 0.03 And Cell.Value <= 0.04 Then Cell.Interior.Color = RGB(255, 0, 255) Range("o17").Interior.Color = RGB(255, 0, 255) Range("p17").Value = " 0.03 to 0.04" End If If Cell.Value > 0.04 And Cell.Value <= 0.05 Then Cell.Interior.Color = RGB(0, 255, 255) Range("o18").Interior.Color = RGB(0, 255, 255) Range("p18").Value = " 0.04 to 0.05" End If If Cell.Value > 0.05 And Cell.Value <= 0.06 Then Cell.Interior.Color = RGB(128, 0, 0) Range("o19").Interior.Color = RGB(128, 0, 0) Range("p19").Value = " 0.05 to 0.06" End If If Cell.Value < 0.01 And Cell.Value <= 0.02 Then Cell.Interior.Color = RGB(192, 192, 192) Range("o21").Interior.Color = RGB(192, 192, 192) Range("p21").Value = " 0.059 to 0.066" End If If Cell.Value > 0.06 And Cell.Value <= 0.07 Then Cell.Interior.Color = RGB(153, 153, 255) Range("o22").Interior.Color = RGB(153, 153, 255) Range("p22").Value = " 0.066 to 0.073" End If If Cell.Value > 0.07 And Cell.Value <= 0.08 Then Cell.Interior.Color = RGB(128, 128, 0) Range("o23").Interior.Color = RGB(128, 128, 0) Range("p23").Value = " Greater Than 0.073" End If Next End Sub -- ---------------------------------------------------------------------------------- Some important links for excel users: 1. Excel and VBA Tutorials(Video and Text), Free add-ins downloads at http://www.excelitems.com 2. Excel tutorials at http://www.excel-macros.blogspot.com 3. Learn VBA Macros at http://www.vbamacros.blogspot.com 4. Excel Tips and Tricks at http://exceldailytip.blogspot.com To post to this group, send email to excel-macros@googlegroups.com If you find any spam message in the group, please send an email to: Ayush Jain @ jainayus...@gmail.com or Ashish Jain @ 26may.1...@gmail.com <><><><><><><><><><><><><><><><><><><><><><> HELP US GROW !! We reach over 6,500 subscribers worldwide and receive many nice notes about the learning and support from the group. Our goal is to have 10,000 subscribers by the end of 2009. Let friends and co-workers know they can subscribe to group at http://groups.google.com/group/excel-macros/subscribe -- ---------------------------------------------------------------------------------- Some important links for excel users: 1. Excel and VBA Tutorials(Video and Text), Free add-ins downloads at http://www.excelitems.com 2. Excel tutorials at http://www.excel-macros.blogspot.com 3. Learn VBA Macros at http://www.vbamacros.blogspot.com 4. Excel Tips and Tricks at http://exceldailytip.blogspot.com To post to this group, send email to excel-macros@googlegroups.com If you find any spam message in the group, please send an email to: Ayush Jain @ jainayus...@gmail.com or Ashish Jain @ 26may.1...@gmail.com <><><><><><><><><><><><><><><><><><><><><><> HELP US GROW !! We reach over 6,500 subscribers worldwide and receive many nice notes about the learning and support from the group. Our goal is to have 10,000 subscribers by the end of 2009. Let friends and co-workers know they can subscribe to group at http://groups.google.com/group/excel-macros/subscribe