How to match terms from multiple columns to one column using VBA - excel

I have Sheet1 of User ID's associated with multiple terms. The terms are listed in separate columns. There are up to 30 terms for each user. The sheet is organized as User ID in column A and Terms in Columns B,C,D, etc.
I then have a series of Terms associated with a unique Categories in Sheet2 (Term in column A, Category in Column B). The goal is to match up users with categories. So, I need to perform a Vlookup of epic proportions or run a VBA program that compares the terms in columns B,C,D, etc in Sheet1 to the Terms in Column A in Sheet2.
If found in Sheet2 it would be great if the formula replaced the term with the associated category in Sheet1.

Create a sheet3
paste the following into sheet3, cell A1:
=iferror(vlookup(sheet1!A1,sheet2!:$A:$B,2,0),sheet1!A1)
Then drag down and to the right for as many rows / columns that were in sheet1.
Essentially, the formula will lookup whatever is in each sheet1 cell in the sheet2 list. if it's found it returns the value and if it isn't it just shows what was on sheet1.
Update
If you have an older version of excel that doesnt have iferror you can use iserror like this:
=if(iserror(vlookup(sheet1!A1,sheet2!:$A:$B,2,0)),sheet1!A1,vlookup(sheet1!A1,sheet2!:$A:$B,2,0))

Related

Match check cells from two sheets to match then copy column to another sheet

I am puzzled how to achieve the following items in Excel VBA. I saw a lot of tutorials but everyone is talking about move the entire row of a pre-defined text/number in the VBA, which isn't what I hoped to do.
My objective is to:
first, I need to use ID cell on Sheet1 as a master, I need to compare each of those ID cells with entire column of ID cells on Sheet2 to find a match repeatedly
If there is a match, copy a selective number of columns on the same row of ID cell (that matched with Sheet1's ID cell) on the Sheet2 to Sheet1 next to Sheet1's ID cell, then the process repeated for all ID cells
Vlookup can only do it for the first cells, but because there are many cells with cell value but the content on the selective column I am trying to copy to the Sheet1 from Sheet2 is different.
Please help for come up ideas how to achieve it on VBA. Thanks.

select the same rows from a column between two spreadsheets or two columns

I have thousands of entries for the same site names taken between different days. However not all row labels are identical. I just want to select all row labels that are shared among both spreadsheets based on the names contained in column A for example and copy them to a new sheet. Filtering and selecting wont work, theres thousands and different entries between the two. I just want to delete entries that are not shared among both spreadsheets.
I looked through other forums using vlookup but I am not sure i understand the syntax:
e.g. i looked at this forum: Matching two columns from two spreadsheets and grabbing data from one of the spreadsheets
it proposed this solution: =index(sheet2!B1:B3;match(sheet1!G1;sheet2!A1:A3;0)). So this solution join row from 2nd sheet to row first sheet. If column G 1st sheet and column A 2nd sheet are the same then you can use this to match. Place formula in column H 1st sheet. With this formula you will fetch data from column B 2nd sheet to column H 1st sheet.
I dont think this is the case since the positions of similar row values in both columns differ. I just want to know what labels are shared among both and delete entries that dont share those names
example of output
Yes vlookup is the key because if you lookup something in spreadsheet1:colA to see if it is in spreadsheet2:colA if it is not present you will get a null value. Then you can filter out these nulls to get only the list of rows which share the column A value in spreadsheet2. You will also need to repeat this in spreadsheet2.
For context, assuming the image you posted covers cells A1:C6, and your highlighted cells are A4:C5 then:
In sheet1 cell D3 put =VLOOKUP(A3, Sheet2!A:A, 1,0) and copy down for the rest of column D, and in sheet2 cell D3: =VLOOKUP(A3, Sheet1!A:A, 1,0)
IF the vlookup finds a match, this will give the exact same value in columnD which is present in both spreadsheets, otherwise it will give #N/A. Then you can filter those out.
(By the way the syntax for the sheet name depends on whether you have spaces in the name so Sheet1!A:A but 'Sheet 1'!A:A, I usually get these by highlighting them so excel does the work of naming the worksheet).
A side note, I would drag both worksheets into one file, you certainly can perform vlookups between different files, but this then relies on the exact file path so if you ever move either file, the vlookups will break and give you errors. I only ever vlookup within the same file.

Function in VBA for multiple filter

Can someone help me write VBA function to get data from another worksheet using multiple filter?
Data looks something like this.
I want to write a function that extract the A1 or A2 or A3 value based on the dropdown I select. If I select A3 it should pick data from A3 column. My Filter criteria on other columns are Item, id and location. Column for Item, id and location are static. While column for A1, A2, A3 are dynamic. I want to put criteria on Ite, id and location. These are the three criteria and result should be from the fourth column. i.e. either A1 or A2 or A3 based on what I select.
I tried but couldn't figure out. Can someone help me on this, please?
You don't need VBA for this but you do need to make a few preparations. I will show here what I did. There are other ways and you can choose the way you prefer.
I created a table exactly as you posted. Instead of a table you can just create a named range or you can replace the names of either in the formulas with the range's coordinates. I didn't name the table but recommend that you do if you use a table. In my example the table's name is Table1.
Within the table I created a named range comprising the cells D1:F1. I called this range "Data" but any other name will do as well. You may also move the named range entirely elsewhere if you want different captions for the columns for one reason or another. As you will see, the names are insignificant they are used to create the numbers 1, 2 and 3 from the location where they are within the named range Data.
Now I created a validation drop-down referring to a List of =Data. The effect is that I have a drop-down with A1, A2 and A3 in it. I created this drop-down in A10 of a different sheet from the one on which I have Table1.
Now I used the following formulas to extract data from row 2 of the table.
=INDEX(Table1[Item],2)
=INDEX(Table1[Location],2) or =INDEX(Table1,2,3) and
=INDEX(Table1,2,3+MATCH(A10,Data,0))
Observe that every "2" in the above formulas refers to the 2nd row in the named range Table1. I didn't set up a range of that name but that is something Excel threw in when I created the table. However, you would like to pull data from other rows as well.
For that purpose you can use the ROW() function. This function returns the number of the row in which it resides. If it's in row 10 it will return 10, in row 11 it returns 11 etc. It's a counter. Therefore, if you entered my formulas in row 10 you can replace all the "2"s with Row()-8 and as you copy up or down you will get data from different rows, same columns.
=INDEX(Table1[Item],Row()-8)
=INDEX(Table1[Location],Row()-8) or =INDEX(Table1,Row()-8,3) and
=INDEX(Table1,Row()-8,3+MATCH(A10,Data,0))
If your first formula isn't in row 10 you must adjust the number to be deducted according to where your formula was entered.

Excel VLOOKUP and getting data from another sheet

I work in office Excel online at it seems it is different than "regular" office. I have a standard case of two excel sheets that contain two matching columns both A columns (starting with 2 row, first is title of row). In first sheet I need to add second column value from second sheet where values from A match. This seems easy but, for some reason in online office this simple formula does not work:
=VLOOKUP(A2,Sheet2!$A$2:$B$4170,2,0)
this gives just N/A result although matching value in Sheet2 exists.
Column is in both sheets A, with title sku in row 1. Second sheet contains additional data in column 2 (B) which I want to put in F column of Sheet1 using this formula.
Can you tell me why this doesn't work? IS office.com different in term of formulas?
Also, when I pull down this formula this A starting number in "Sheet2!$A$THISNUMBER" gets bigger, like
=VLOOKUP(A3,Sheet2!$A$3:$B$4170,2,0)

How to input two arrays in VLOOKUP?

I have a worksheet in Excel 2013 with two sheets: Sheet 1 and Sheet 2. I am applying a formula in both the sheets in the same column (G). The data is in more than 100,000 rows that's why I can't put it in one sheet only.
The problem is that I want to use VLOOKUP in both sheets in a way that the function looks up in both sheets in the same columns (arrays) i.e. A and B columns in sheet 1 and sheet 2 and get the value from column B i.e. column 2 within VLOOKUP function.
How can I add reference to the other sheet?
I doubt a complete solution is possible with VLOOKUP because, for instance, the corresponding ColumnB values may differ even where a ColumnA value is the same on both sheets. So without VBA (or possibly merging your sheets) you may have to compromise, so I offer only a partial solution, based on Excel 2007.
This 'looks up' in the 'other' sheet and only defaults to the 'same' sheet where the first attempt is unsuccessful. It uses INDEX and MATCH because likely quicker than VLOOKUP for high volumes. The formula I have applied for Sheet1 (in G1 and to be copied down) is:
=IFERROR(INDEX(Sheet2!B$1:B$6,MATCH(E1,TwoArray,0)),INDEX(B$1:B$7,MATCH(E1,OneArray,0)))
where the OneArray and TwoArray are named ranges for parts of ColumnA for the two sheets and the link values are expected in ColumnE (the formula in Sheet2 is similar):

Resources