Solved

Problem with Conditional Formatting Macro

Posted on 2013-11-28
8
300 Views
Last Modified: 2013-11-29
Folks,
When you open the attached workbook and on the first tab click display data I'm trying to display the lowest value in the table excluding zero. I call a macro that executes the data to be displayed with Conditional Formatting. I cannot find anything wrong with the code, yet it highlights zero values which is incorrect. In the table the lowest nonzero value is 2, not zero.
NonZero.xlsm
0
Comment
Question by:Frank Freese
  • 3
  • 3
  • 2
8 Comments
 
LVL 22

Expert Comment

by:Flyster
ID: 39684614
This should take care of the zeros:
Sub LowestNonZero()
'
' LowestNonZero Macro
'

'
    Range("A2:D10").Select
    Selection.FormatConditions.Add Type:=xlExpression, Formula1:= _
       "=A2=MIN(IF($A$2:$D$10<>0,$A$2:$D$10))"
    Selection.FormatConditions(Selection.FormatConditions.Count).SetFirstPriority
    With Selection.FormatConditions(1).Font
        .Bold = True
        .Italic = False
        .Color = -16711681
        .TintAndShade = 0
    End With
    With Selection.FormatConditions(1).Interior
        .PatternColorIndex = xlAutomatic
        .ThemeColor = xlThemeColorLight2
        .TintAndShade = -0.249946592608417
    End With
    Selection.FormatConditions(1).StopIfTrue = False
End Sub

Open in new window

Flyster
0
 
LVL 50

Accepted Solution

by:
barry houdini earned 500 total points
ID: 39685154
HelloFlyster - isn't that the same formula that's already there?

I think this is caused by a bug in conditional formatting in Excel 2007 - array formulas used in conditional formatting need to be "refreshed" before they work. When I opened the file I saw the zeroes formatted, if I go into conditional formatting > Edit > without changing the formula but hitting OK it then works and formats 2 as required.

If you can use a non-array formula for conditional formatting that will work without fail. For that you can use this formula:

=AND(A2<>0,COUNTIFS($A$2:$D$10,"<"&A2,$A$2:$D$10,"<>0")=0)

that will highlight the lowest value if it's not zero. Just put that in quotes in your macro in place of the current formula, with quotes doubled-up, i.e.

"=AND(A2<>0,COUNTIFS($A$2:$D$10,""<""&A2,$A$2:$D$10,""<>0"")=0)"

regards, barry
0
 

Author Comment

by:Frank Freese
ID: 39685548
barry,
You correct in that Flyster's fromula was the same as I had submitted.
Your first suggestion was rejected with a Compiled error: Expression expected.
However, the second alternative worked.
What is confusing is when I use the code I provided in a macro it does not give the expected results. However, if I do not use a macro, it worked just fine.
Any thoughts on that before I award you points?
0
 
LVL 50

Expert Comment

by:barry houdini
ID: 39685620
Do you mean if you set up the conditional formatting manually (with the original formula) it works OK?

When I have seen this problem in the past the conditional formatting works OK when initially applied ......but then it either does nothing or gives wrong results when the workbook is closed and re-opened - the CF formula remains there and if you go in to CF as if to edit, but leave the formula the same, it then works OK again.

I tried searching for more details but I can't find a good link

regards, barry
0
What Should I Do With This Threat Intelligence?

Are you wondering if you actually need threat intelligence? The answer is yes. We explain the basics for creating useful threat intelligence.

 
LVL 22

Expert Comment

by:Flyster
ID: 39685648
@ Barry,

You're right. I don't know what happened but it is the same. The one I ran prior to submitting was highlighting the 2 in B5. I'll have to check it when I get back to the office. My apologies to fh_freese!

Paul
0
 
LVL 50

Expert Comment

by:barry houdini
ID: 39685709
There's nothing intrinsicly wrong with that formula, Paul. It's an excel bug that stops it working as it should - I don't think that bug exists outside 2007 so if you tested in another version it may have worked perfectly.

regards, barry
0
 

Author Comment

by:Frank Freese
ID: 39685710
Barry,
When I set up the Conditional Format manually no problem. When I duplicated the same thing to create the macro I got the wrong results.
Paul, I do appreciate you work, however, I'll need to accept the solution Barry offered.
I do appreciate everyone's help.
0
 

Author Closing Comment

by:Frank Freese
ID: 39685713
thank you very much
0

Featured Post

Find Ransomware Secrets With All-Source Analysis

Ransomware has become a major concern for organizations; its prevalence has grown due to past successes achieved by threat actors. While each ransomware variant is different, we’ve seen some common tactics and trends used among the authors of the malware.

Join & Write a Comment

A little background as to how I came to I design this code: Around 5 years ago I designed an add-in that formatted Excel files to a corporate standard, applying different cell colours and font type depending on whether the cells contained inputs,…
This tutorial explains how to create a series of drop-down lists that are dependent upon prior selections to guide (“force”) the user to make the correct selection and reduce data errors within Microsoft Excel. Excel 2010 was used for this tutorial;…
The viewer will learn how to simulate a series of coin tosses with the rand() function and learn how to make these “tosses” depend on a predetermined probability. Flipping Coins in Excel: Enter =RAND() into cell A2: Recalculate the random variable…
This Micro Tutorial will demonstrate how to use longer labels with horizontal bar charts instead of the vertical column chart.

758 members asked questions and received personalized solutions in the past 7 days.

Join the community of 500,000 technology professionals and ask your questions.

Join & Ask a Question

Need Help in Real-Time?

Connect with top rated Experts

24 Experts available now in Live!

Get 1:1 Help Now