partial cell match in Excel 2007 - excel-formula

I am trying to do a partial match within a column. I am using the formula =MATCH("*"&LEFT(B2,5)&"*",B:B,0). and then dragging the formula all the way to the bottom. So it is taking the first 5 letters from left of a field of Column B and trying to do a match. Is there a way that it can take the letters after the first two characters of the Col B fields and then do a match?

If you want to ignore the first two characters in column B for a match, you may want to use a helper column with a formula like
=mid(B2,3,99)
and then perform the Match on the helper column.

Related

Excel - How can I locate a pattern(s) of matching rows within a large set of numerical data?

I have a large set of data in one column (K), containing random values of 1, 2, 3, and 4. Within that, I would like to locate and highlight sets of rows that match the values from a much smaller column (G) of data.
I tried using Conditional Formatting but was only able to set rules for single rows of data, not matching groups.
Within one Column (K), I expect to locate and highlight all instances of the data I put into another Column (G) (example 1, 2, 1, 1, 2).
In order to do this, you need two helper columns.
A has the pattern you are looking for (=randbetween(1|4)).
B has the random numbers 1 through 4 (=randbetween(1|4)) but is a longer list.
The first helper column D has =IF(AND(B3=$A$2|B2=$A$1)|"match"|"no") which will put "match" on the last row of the pattern.
Then, helper column E has =IF(D3="match"|"match"|"no") to put a "match" in the cell if the one below it has it.
Then, in the conditional formatting for the column is =OR($D1="match"|$E1="match").
This can be expanded to a pattern of 3.
The first helper column K has =IF(AND(I2=$H$2|I1=$H$1|I3=$H$3)|"match"|"no").
The second helper column L has =IF(OR(K3="match"|K4="match")|"match"|"no").
The conditional formatting formula is the same, just transposed over a few rows.
If your pattern is a fixed size, this works great. If your pattern varies in length, you'll have to find a way to generalize these formulas.

Excel multi column search, custom text display

Is it possible to return a given custom value while performing a multi-column search in excel?
I have 2 sheets,
In the first sheet I have 3 columns, and each column have several rows with unique numbers.
In the second sheet I have 2 columns, the 1st column in this sheet2 has a unique number that can be found in sheet 1 columns 1,2 or 3.
In column 2 in this sheet2 I want to display a custom text if the value in column 1 is found in any of the 3 columns in sheet 1.
For example if the value in sheet2/column1 is found in sheet1/Column3, the text should be = "Value Found in Column1", if the value is found in sheet1/Column2, the text should be = "Value Found in Column2", if the value is found in sheet1/Column1, the text should be = "Value Found in Column1".
Is this possible, can you give an example of this?
Thank you.
Yes this can be done. I could write the function for you but I think you would be better off trying to write it yourself. Here is how I would go about it. Write a vlookup() in columns B, C, and D of sheet2 corresponding to the columns A, B, and C of sheet1. If vlookup() returns a match in any of these columns, then that value exists in one of the three sheet1 columns.
The next step is to use isna() to return a boolean value of whether vlookup() returned a match. Again, you'll need one of these for each vlookup() (three total).
Lastly you can use and() on the isna() columns to check if all three are #N/A. Based on that boolean value, you can you if() to return your custom text.
Obviously the process I described splits the problem up into many columns. These functions can be combined to fit into one horribly nested function and put into one cell if you really want, but that's up to you. Let me know if you have any trouble.

Find the ROW number in excel with multiple matching criteria

I need to be able to find the row number of the row where matching criteria from A1 is equal or greater than values in column C and lesser or equal than values in column D
I can use INDEX and MATCH combo but not sure if this is something I should use for multiple criteria matching.
Any help or suggestions are highly appreciated.
I would not use MATCH to get the row number since you have multiple criteria. I would still use INDEX however to get the value of the row in E once the proper row number was discovered.
So instead of MATCH I would use an array formula using an IF statement that contained multiple criteria. Now note that array formulas need to be entered using ctrl + shift + enter. The IF statement would look like this:
=IF((A1>=C:C)*(A1<=D:D),ROW(A:A),"")
Note: I did not use the AND formula here because that cannot take in arrays. But since booleans are just 1's or 0's in Excel, multiplying the criteria works just fine.
This now gives us an array containing only blanks and valid row numbers. Such that if rows 5 and 7 were both valid the array would look like:
{"","","","",5,"",7,"",...}
Now if we encapsulate that IF statement with a SMALL we can get whatever valid row we want. In this case since we just want the first valid row we can use:
=SMALL(IF((A1>=C:C)*(A1<=D:D),ROW(A:A),""),1)
Which if the first valid row is 5 then that will return 5. Incrementing the K value of the SMALL formula will allow you to grab the 2nd, 3rd, etc valid row.
Now of course since we have the row number a simple INDEX will get us the value in column E:
=INDEX(E:E,SMALL(IF((A1>=C:C)*(A1<=D:D),ROW(A:A),""),1))
If you need to match more than one column value to retrieve a row number, that is, if two or more columns together create a unique ID you can use an array formula with MATCH as below:
MATCH(1,(A:A=J1)*(B:B=K1)*(C:C=L1),0)
where A, B, C contain the column array to be matched to retrieve the unique row number corresponding to the value in J1, K1, L1 respectively.
For a step-by-step guide, Christian Pedersen's Explainer

extracting of specific values in a cell

I'm trying to extract specific values from a specific cell where Column A is the input and Column B is the output.
Column A Column B
AB,CD,EF,GH,IJ,KL ABCDEFGH
AB,CD,MN,EF,OP,UV ABCDEF
QR,AB,ST,CD,GH,WX ABCDGH
The formula i am using in Column B is:
=CONCATENATE(MID(A2,(SEARCH("A",A2,1)),2),MID(B2,(SEARCH("CD",B2,1)),2),MID(B2,(SEARCH("EF",B2,1)),2),MID(B2,(SEARCH("GH",B2,1)),2))
However if i am to drag down the formula until the last row, it will return a #VALUE! since some of the values in the SEARCH formula did not appear Column A.
So what I need is a generic formula that will only extract the values AB,CD,EF,GH OR whatever value is available in Column A just like in my example.
Best Regards,
I would condition on whether or not something exists, and print it accordingly:
Column B's formula uses an approach that matches
IF(ISERROR(FIND(<string>,<within_string>)),"",<string>)
and concatenates these using &. ISERROR avoids error outputs, while also helping to place content (an empty string "" in this case).

Check the number of unique cells in a range

I have an excel sheet.
Under column E, I have 425 cells with data. I want to check if the same data (i.e. text inside the cell) is repeated anywhere else in any of the remaining 424 cells under column E. How do I do this?
For example, in E54 I have
Hello Jack
How would I check this value to see if it was in any other of these cells?
You could use
=SUMPRODUCT(1/COUNTIF(E1:E425,E1:E425))
to count the number of unique cells in E1:425
An answer of 425 means all the values are unique.
An answer of 421 means 4 values are duplicates of other value(s)
Use Conditional Formatting on all the cells that will highlight based on this formula:
COUNTIF(E:E,E1) <> 1
This is based on the column being E, and starting on E1, modify otherwise.
In Excel 2010 it's even easier, just go into Conditional Formatting and choose
Format only unique or duplicate values
If you have to compensate for blank cells, take the formula supplied above by #brettdj and,
Adjust the numerator of your count unique to check for non-blanks.
Add a zero-length string to the COUNTIFS's criteria arguement.
=SUMPRODUCT((E1:E425<>"")/COUNTIF(E1:E425,E1:E425&""))
Checking for non-blank cells in the numerator means that any blank cell will return a zero. Any fraction with a zero in its numerator will be zero no matter what the denominator is. The empty string appended to the criteria portion of the COUNTIF is sufficient to avoid #DIV/0! errors.
More information at Count Unique with SUMPRODUCT() Breakdown.
This formula outputs "unique" or "duplicates" depending if the column values are all unique or not:
{=IF(
SUM(IF(ISBLANK(E1:E425),0,ROW(E1:E425)))
=
SUM(IF(ISBLANK(E1:E425),0,MATCH(E1:E425,E1:E425,0)))
,"unique","duplicates")}
This is an array formula. You don't type the enclosing {} explicitly. Instead you enter the formula without {} and then press cmd-enter (or something else if not a Mac - go look it up!) If you want to split your formula over multiples lines for readability, use cmd-ctrl-return on a Mac.
The formula works by comparing two SUM() results. If they are equal, all the nonblank entries (numeric or text) are unique. If they are not equal there are some duplicates. The formula does not tell you where the duplicates are.
The first sum is what you get by adding up the row numbers of every non-blank entry.
The second sum does a lookup of each nonblank entry using MATCH(). If all entries are unique, MATCH() finds each entry at its own position, and the result is the same as the first sum. But if there are duplicate entries then a later duplicate will match an earlier duplicate and the later duplicate will contribute a different value to the sum, and the sums won't match.
You might have to adjust this formula:
if you want cells containing "" to count as blank, then use LEN(...)=0 for ISBLANK(...). I suppose you could put other tests in there if you wanted, but I have not tried that.
if you want to test an array not starting at row 1, then you should subtract a constant from ROW(...).
if you have a huge column of cells, you might get integer overflow when computing this sum. I don't have a solution to that.
It's a shame that Excel does not have an ISUNIQUE() function!
This may be a simpler solution. Assume column A contains data in question. Sort on that column. Then, starting in B2 (or first non-blank cell, use the following formula:
=IF(A2=A1,1,0).
Than sum on that column. When sum = 0, all values are unique.
highlight E and on the home tab select conditional formatting > Highlight Cell Rules > Duplicate Values...
It will then highlight everything that is repeated.

Resources