How to use vlookup if lookup value contains multiple values in single cell - excel

Suppose Sheet1 has the following table ( data range Cell A1 to B4)
Fruits | Colors
======= | =======
Apple | Red
Mango | Green
Banana | Yellow
Suppose in sheet2, Cell A1 has following values ( Apple Mango Banana) separated based on space.
How to use VLookup in Cell B2 based on A1 value which can give you the results in the same order ( Red Green Yellow)

This formula in Sheet2!B2 does it:
=INDEX(sheet1!B:B,MATCH(TRIM(LEFT(SUBSTITUTE(A1, " ", REPT(" ", 100)),25)),sheet1!A:A,0)) & " " &
INDEX(sheet1!B:B,MATCH(TRIM(MID(SUBSTITUTE(A1," ",REPT(" ",100)),100,25)),sheet1!A:A,0)) & " " &
INDEX(sheet1!B:B,MATCH(TRIM(RIGHT(SUBSTITUTE(A1, " ", REPT(" ", 100)),25)),sheet1!A:A,0))
This formula works fine when you have 3 values to match (in case there are 2 only, the second one will be repeated). It can be further complicated to treat any number of values.
Of course it can be simpler in VBA using the Split function, and it would take into account any number of keys, yielding the joined values. You can use this in a macro:
Sheet2.Range("B1").value = Join(Application.index(Sheet1.Columns("B"), _
Application.match(Split(Sheet2.Range("A1")), Sheet1.Columns("A"), 0)), " ")
Of course you can adjust it to any cell in column B, using Range("B" & i) and Range("A" & i)...

Related

Find matches of 2 items in 2 different columns

Hello good afternoon community. I have an Excel question
I have this table
enter image description here
I can't find a way to determine which is the combination that is repeated the most but in both directions.
I mean, with the function count.si.set I can count how many Italy vs Portugal there were (12) but it doesn't give me how many Italy vs Portugal + Portugal vs Italy there were (14)
What is the step that I am missing?
You can use the greater than operator to check which word comes first alphabetically. Eg, IF(A1>A2,1,0) will return a 1 if the word in Cell A2 is alphabetically Earlier than the word in Cell A1.
Use this in the "Enfrentamientos" column with the following formula:
IF(A1 < B1, A1 & " " & " " B1, B1 & " " & A1)
This cells output will be the words in A1 and B1 concatenated in alphabetical order, so your Argentina & Germany pairs will come out the same as your Germany & Argentina Pairs.
Copy that formula down to the lower rows so it applies to each pair
Hope this helped!

Excel formula for author names conversion

does anyone know how to write TWO excel formulas that would change (A) and (B) respectively into (C)? I have hundreds of rolls of author names like (A) and (B). There are different numbers of author names in each string.
(A) Smith, John; Green, Yennis; Black, Eva; Brown, Robyn
(B) J. Smith; Y. Green. Black; R. Brown
(C) Smith J, Green Y, Black E & Brown R
(A) Smith, John; Green, Yennis
(B) J. Smith; Y. Green
(C) Smith J & Green Y
(A) Smith, John
(B) J. Smith
(C) Smith J
One way to approach this using formulas would be to split the data using the "Text to columns" on ";" delimiter. This will give 1 name per cell.
To convert "Smith, John" in cell A1 to "Smith J" you could use the formula
LEFT(REPLACE(A1,FIND(",",A1),1,""), FIND(" ",A1,1) )
To convert "J. Smith" in cell A1 to "Smith J" you could use the formula
MID(A1,FIND(".",A1) + 1, LEN(A1)-FIND(".", A1)) & " " & LEFT(A1,1)
Depending on how much the length varies, you could filter the data to remove empty cells and create formulas based on length.
B2 & ", " & D2 & " & " & E2 for 3 names, assuming you inserted a column to apply formulas to the right of each name. Or replace the cell reference with formulas if you don't want to insert columns.

repeating rows of data based on specific data in a given group of cells

I have a row of data that contains 40 possible cells of specific data that I need to separate and repeat that row of data with the cell that contains the specific data out the 40 possibilities and then continue to repeat this process until there are no more cells with the specific data.
EqType1 and EqSerial1 would need to be selected together but are in separate cells. this example should return 2 rows of data the first with the FirstName LastName EqType1 EqSerial1 and the second row with FirstName LastName EqType2 EqSerial2 and then stop if there are no more Eq and move on to the next row of data and perform the same function over again.
Sample Row of Data:
FirstName LastName EqType1 EqSerial1 EqType2 EqSerial2
MORGAN TURNBULL ARPCXDT PAX501037020 TG1682G 7823AE179414
"this example should return 2 rows of data the first with the FirstName LastName EqType1 EqSerial1 and the second row with FirstName LastName EqType2 EqSerial2"
A disclaimer: The following will only work if you put your 2 new combined indexes into columns and not rows
If I understand your question correctly, you could try this:
Insert two extra columns at the end of your data: Eq1 and Eq2
So your data would be laid out like this:
A B C D E F G H
1 FirstName LastName EqType1 EqSerial1 EqType2 EqSerial2 Eq1 Eq2
2 MORGAN TURNBULL ARPCXDT PAX501037020 TG1682G 7823AE179414
In cell G2 insert the formula: = A2 & " " & B2 & " " & C2 & " " & D2
In cell H2 insert the formula: = A2 & " " & B2 & " " & E2 & " " & F2

Check for string in text column A, return another string in column B - Excel

I am trying to lookup one of 3 strings (Blue, Red, Green) in column A. In column A I have:
row1: "Robert has Blue shorts"
row2: "Maria has a Red dress"
row3: "John has a Green car"
Whenever I find one of those 3 words in column A, I want to populate column B with the found instance (Green, Red, Blue).
There will always be one of these 3 words in column A, never more than one and the position of the words can be anywhere in the string.
I know how to put this in Python or SQL but I am struggling with Excel.
Can anyone share a solution if they used this in past?
You can use this array formula:
=INDEX({"Red","Blue","Green"},MATCH(TRUE,ISNUMBER(SEARCH({" Red "," Blue "," Green "}," " & A1 & " ")),0))
Being an array formula it must be confirmed with Ctrl-Shift-Enter when exiting edit mode. If done correctly then Excel will put {} around the formula.
As a note:
You can also replace the {"Red","Blue","Green"} with a range reference. So if the three words were in D1:D3 the formula would be:
=INDEX($D$1:$D$3,MATCH(TRUE,ISNUMBER(SEARCH(" " & $D$1:$D$3 & " "," " & A1 & " ")),0))

I would like to prepend an ascending set of numbers to a row of text cells in Excel

So I have a row of cells that have questions
Blah | blah2 | blah3 ||| blah73
I'd like to make it so it looks like this
Q1: Blah | Q2: Blah2 |||| Q73: blah73
How do I do this in excel without having to do it manually?
In an empty row:
="Q" & Column(A:A) & " " & A1
Where A1 is the first cell in the row with Blah. You only need to change the A1 to the first cell and drag across

Resources