Excel Conditional Formatting - Containing Multiple Matches - excel

Trying to avoid VBA and use one Conditional Formatting rule.
I want to apply a format to cells that contain one or more possible phrases.
| A |
---+--------+---
1 | foo |
2 | bar |
3 | foobar |
4 | baz |
5 | foobaz |
6 | qux |
7 | barqux |
Goal: apply conditional format to 'foo' and 'baz' (rows 1,3,4,5)
Something like the following should work, however I think the problem is in identifying the current cell to compare, in this case the A1:A7 needs to be the current cell reference:
=OR( IFERROR(FIND("foo",A1:A7),0) > 0, IFERROR(FIND("baz",A1:A7),0) > 0 )
Any ideas?

I found the answer.
Even though the conditional format was being applied to the range $A$1:$A$7, all you need to do is refer to the first cell in the function.
=OR( IFERROR(FIND("foo",A1),0) > 0, IFERROR(FIND("baz",A1),0) > 0 )
It'll automatically increment so long as you don't use the lock operator ($). - Sorry if this is common knowledge. I'm going to keep this here for educational purpose, if no one has a problem.

You're perfectly right. You have to enter the reference to the "selected" cell. E.g. if you click into cell A1 and then drag and select cells A1..A7 you will see that A1 has different background than the other cells. This is your current cell for the conditional formula. I.e.
=OR( IFERROR(FIND("foo",A1),0) > 0, IFERROR(FIND("baz",A1),0) > 0 )
would be correct in this case. For the other cells the formula will then be adjusted accordingly.

Related

How to fetch cell value through user-defined header name

I have an excel table, like this
| DOG | CAT | COW | CHICKEN ...
------+-----+------+------+------
FARM1 | 2 | 0 | 4 | 80
------+-----+------+------+-------
FARM2 | 0 | 3 | 12 | 125
------+-----+------+------+-------
......
Is it possible to get the value through the customer headers instead of A2, B2?
I want to be able to fetch the value like so
=FARM1DOG
Is it possible to do that?
What you are describing could be done a few ways. I would prefer index(match(...
Assuming your table above is in the top-left corner of the spreadsheet and continues to J10 you could use:
=INDEX($B$2:$J$10,MATCH("FARM1",$A$2:$A$10,0),MATCH("DOG",$B$1:$J$1,0))
On the other hand, you could do it with named ranges as well, but the names would need to be changed if the column headers changed. Just name each entire column after it's header. So select column B and create a name for the range called "Dog", then the same for all the other columns. Then for the rows name row 2 "Farm1", etc...
Then you can use:
=FARM1 DOG
(the space between them is the intersect operator)
Under presumption that your data is small you can also name the Range manually:
Select the cell you want to name
Formulas -> Define Name [ CTRL + SHIFT + F3 ]
Call it whatever you want
Now you can refer to the cell by the given name:
EDIT:
Alternatively, you could also name the headers only and refer to it via =OFFSET.
=OFFSET(<VERTICAL NAME>,,COLUMN(<HORIZONTAL NAME>) - COLUMN(<VERTICAL NAME>))
In a practical example
=OFFSET(farm1,,COLUMN(dog) - COLUMN(farm1))

Alternate row colour by data in fields in a spreadsheet

Good Afternoon all,
I've had a search but can't find the answer - please direct me if there is one!
I'm looking to make my spreadsheet have better readability to the user. It requires a lot of manual work outside of the sheet, so the less time strain the spreadsheet is, the better.
I know to to use =mod() in Conditional Formatting but this isn't what I'm looking for
I also know about opening the filter drop down, and clicking one cell, pressing down twice and pressing space bar (rinse and repeat) - but I'm not going to do this over 1000 rows...
Is there a way to alternate the colours from a filtered name in excel?
For example:
+---------------+---------------+--------------+
| Site Code | Site Name | Changed Date |
+---------------+---------------+--------------+
| 000020 | Bobs site | 28/11/18 | <-- colour 1
| 000020 | Bobs site | 26/11/18 | <-- colour 1
| 059201 | Julian's | date | <-- colour 2
| 059201 | Julian's | date | <-- colour 2
| 002237 | etc. 1 | date | <-- colour 1
| 523878 | etc. 2 | date | <-- colour 2
| 523878 | etc. 3 | date | <-- colour 2
+---------------+---------------+--------------+
So rather than by line number, it would be by the name "bobs site" would be one colour, the next in the list would be another colour etc
I would love for this to apply to site code and site name, so when filtering by either, the rows are highlighted correctly.
I can't do this in the =mod() kind of way, as some sites have just one entry, most have 2 and a few can have up to 10
EDIT: Proof of the answer working for future references
Doable with a helper column and Conditional Formatting with COUNTIF and MOD.
In the helper column:
=OR(A2<>A1,B2<>B1)
which returns TRUE or FALSE if the site code or site name has changed (or not) compared to the previous row.
Then 2 conditional formatting rules:
=MOD(COUNTIF($D$2:$D2,TRUE),2)=0
=MOD(COUNTIF($D$2:$D2,TRUE),2)=1
The mixed reference ($D$2:$D2) in the COUNTIF will allow for each separate section to be coloured alternately as the instances of TRUE are successively added up.
One solution; get all uniq values in a seperate column, copy column you want to refer to, paste to new column, remove duplicates.
Then select area with data and start refering those values you want to have that color i conditional formatting.
Edit
With more options use "AND" or "OR"

Conditional Formatting using dates and weekends

I have data in a spreadsheet like this
Name | 9/1/2016 | 9/2/2016 | .... | 6/8/2017
Abe | | | |
Jonas | | | |
I want to highlight every column where the date is either a weekend or a user defined date (for instance, a holiday....does excel already know federal holidays?).
The conditional format I have is:
Applies to
=$b$2:$KI$62
Format values where the following formula is true
#1 =WEEKDAY($B$1:$KI$1,1)=1
#2 =WEEKDAY($B$1:$KI$1,1)=7
Yet nothing shows up. At the best I've been able to only make the bottom row show up through playing with the function. Why?
With Name in A1, select B2 to the extents of your data and use the following to create a conditional formatting rule.
=WORKDAY(B$1-1, 1, $L$2:$L$4)<>B$1

Return values, based on value of an intersection of a row and column

I want to return a label(s) based on an intersection of a Row and Column equal to "Yes".
| Location |
ID | Tool | Wall | Bin | Toolbox | Count
---+--------+------+-----+---------+-------
1. | Axe | YES | | | 1
2. | Hammer | | | YES | 5
3. | Pliers | | | YES | 2
4. | Nails | | YES | | 500
5. | Hoe | YES | | | 2
6. | Screws | | YES | | 200
7. | Saw | YES | | | 3
What's in Toolbox? (Results wanted)
Axe,Wall, 1
Hammer, Toolbox, 5
Pliers,Toolbox, 2
Nails,Bin, 500
Hoe, Wall, 2
Screws, Bin, 200
Saw, Wall, 3
I also want to be able add Tools and Locations?
Without using VBA, this is going to be a bit of a pain, but workable if you don't mind helper columns. I don't advise trying to do this in a single Array Formula, because text strings are hard to work with in Array formulas. That is - if you have an array of numbers, you can turn that into a single result a lot of ways (MIN, MAX, AVERAGE, SUM, etc.). However with an array of strings, it's harder to work with. Particularly, there's no easy way to concatenate an array of strings.
So instead, use a helper column. Assume column A = toolname, column B = a check for being on the wall, column C = a check for being in the bin, column D for being in the toolbox, and column E for the number available.
FORMATTING SIDE NOTE
First, I will say that I recommend you use TRUE/FALSE instead of "yes"/"no". This is because it is easier to use TRUE / FALSE within Excel formulas. For example, if you want to add A1 + A2 when A3 = "yes", you can do so like this:
=IF(A3="yes",A1+A2)
But if you want to check whether A3 = TRUE, this is simplified:
=IF(A3,A1+A2)
Here, we didn't need to hardcode "yes", because A3 itself will either be TRUE or FALSE. Also consider if you want to make a cell "yes" if A3 > 5, and otherwise be "no". You could do it like this:
=IF(A3>5,"yes","no)
Or, if you used TRUE/FALSE, you could simply use:
=A3>5
However, I'll assume that you keep the formatting you currently have (I would also recommend you just have a single cell that says either "toolbox"/"bin" etc., instead of 4 columns where 1 says "yes", but we'll also assume that this needs to be this way).
BACK TO YOUR QUESTION
Put this in column F, in F2 for the first cell:
=Concatenate(A2," ",INDEX($B$1:$D$1,MATCH("yes",B2:D2,0))," ",E2)
Concatenate combines strings of text into a new single text string. You could also use &; like: A2 & " " etc., but with this many terms, this is likely easier to read. Index looks at your header row 1, and returns the item from the first column which matches "yes" in the current row.
Then put the following in F3 and drag down:
=Concatenate(F2," ", A2," ",INDEX($B$1:$D$1,MATCH("yes",B2:D2,0))," ",E2)
This puts a space in between the line above and the current line. If instead you want to make each row appear after a line-break, use this:
=Concatenate(F2,CHAR(10), A2," ",INDEX($B$1:$D$1,MATCH("yes",B2:D2,0))," ",E2)

Using CountIf Function to highlight cell

I have 2 lists, i want to find if the values from list 1 included in list 2.
List 1
laci | TRUE
Ask? Gm?d | FALSE
d* luis | TRUE
luis d* | FALSE
List 2
Apolonia Fier |
Atletico Clube De Portugal |
Bregalnica Stip |
Costuleni |
don, luis |
I managed to do that with this formula and wildcards
=COUNTIF(A5:A104,"*"&F6&"*")>0
My question now is, how can i highlight the "matched" cell in list 2 ?
It looks so easy but i think its not.
Thanks for your time.
Assuming your list are on col A & B
Select A1:A10 or B1:B10, which ever list you like to highlight
Go to
Home > Conditional Formatting > New Rule > Use a formula to determine which cells to format
insert this formula
=COUNTIF($A$1:A1,A1)<=COUNTIF(B:B,A1)
Click on Format button
Fill --> what ever color you like

Resources