Building dependent picklist by finding associated rows - excel

I have a need for a dependent picklists. The outputted workbook is actually created programmatically which does restrict the way this needs to be built (I'm trying to create everything in Excel first and then finish the programmatic output of the sheet).
I have rows that need dropdowns representing Objects and Fields in a database. So dropdown1 would contain a list of Objects and dropdown2 depends on that to display a list of Fields based on that object.
I have a Ledger sheet containing the data that needs to be represented. Something like this:
| A | B | C |
|--------|--------|---------------|
| People | People | First Name |
| Places | People | Last Name |
| Things | People | Phone Number |
| | People | Email Address |
| | Places | Longitude |
| | Places | Latitude |
| | Things | Color |
| | Things | Shape |
The A column contains all the Objects (People, Places, Things) and is used to populate all the dropdown1's. The B & C columns are used to represent the fields - B being the Object the field belongs to and C being the FieldName. So if I choose People in dropdown1 I want dropdown 2 to contain only values from C that apply to People (First Name, Last Name, Phone Number, Email Address)
I'm struggling to make this work. In another sheet I have succeeded in listing out the values that I would want in dropdown2 using the following formula (where A2 refers to dropdown1) - =IFERROR(INDEX(Ledger!C2:C1000,SMALL(IF(A2=Ledger!B2:B1000, ROW(Ledger!C2:C1000)-1,""), ROW()-1)), "") - but I haven't been able to actually make this work when creating a dropdown (via Data Validation button in excel). How can I get this into a dropdown in excel?

Related

Excel Consolidate Data not working - Data does not merge

For some reason I cannot get the Excel consolidation function to work. My data refuses to merge.
All of the numbers in my column are formatted as dollar amounts.
My original data set looks like this:
__________________
|NAME |DOLLARS |
|Andrew | $10.00|
|Michael | $10.00|
|Emma | $10.00|
|Andrew | $10.00|
|Michael | $10.00|
|Emma | $10.00|
-------------------
But after I run it through the Consolidate Data function, where I made sure to select all of the data + the headers, and selected "sum", my results look like this:
__________________
|NAME |DOLLARS |
| | $10.00|
| | $10.00|
| | $10.00|
| | $10.00|
| | $10.00|
| | $10.00|
-------------------
I have no idea why it's not working. I tried following several tutorials to the letter, as well as scouring the internet for solutions, but everything I tried did not work.
That's because you can't consolidate letters by 'summing' them. So it leaves them blank as this would error.
You have to specify that the first column isn't to be summed, but rather to be used as row labels. This is done by ticking
Use labels in > Left column
You have already selected Top row. it is the option underneath:
This does result in no column name for the first column, but you could easily type that back in afterwards in the destination range.
But I have a feeling you might not actually want to use the consolidate tool. This is for consolidating multiple ranges of data into one. Your dataset only includes one range of values so would be pointless consolidating it.
More on consolidating can be ready here: https://support.microsoft.com/en-us/office/consolidate-data-in-multiple-worksheets-007ce8f4-2fae-4fea-9ee5-a0b2c9e36d9b

How can I write an Excel formula that will match two columns of data against another table, and only return true if both columns match?

I want to be able to tell if a row in my working table matches another table. Specifically, I only want to know if both values from two columns match.
For example, if james#abc.com has a source of leadgen in both tables, that's a match. Here are some example tables to illustrate that.
My working table
| Email | Source |
|---------------|---------|
| james#abc.com | leadgen | Matched!
| mike#abc.com | leadgen | No Match
| billy#abc.com | leadgen | No Match
| amy#abc.com | leadgen | No Match
Table I want to match against
| Email | Source |
|---------------|---------|
| james#abc.com | leadgen |
| mike#abc.com | popup |
| amy#abc.com | banner |
Here is the formula I tried using.
IF(AND(
MATCH([Email],'secondTable[Email],0),
MATCH([Source],'secondTable[Source],0)),
"Matched!","No Match"
Unfortunately, this returns a match for mike#abc.com because even though his source is popup in the second table, the source value leadgen appears elsewhere. At least that's what I'm interpreting here.
You can simply use COUNTIFS:
=IF(COUNTIFS(secondTable[Source],[Source], secondTable[Email], [Email]),"Matched!","No Match")
=IF(ISNUMERIC(MATCH([Email]&[Source],secondTable[Email]&secondTable[Source],0)),"Matched!","No Match")
Confirm with Ctrl-Shift-Enter instead of Enter when leaving edit mode.

How do I reference cell dynamically in Microsoft Excel

I need to combine string values from (fixed column, variable row) + (fixed column, fixed row) how do I do this?
for example:
| ONE | TWO | THREE
ONE | ONE-ONE | TWO-ONE | THREE-ONE
TWO | ONE-TWO | TWO-TWO | THREE-TWO
THREE | ONE-THREE | TWO-THREE | THREE-THREE*
Any help would be appreciated, thank you!
Assuming top is row one and left is column A for your example, put the following in B2 drag across and down to fill the array.
=CONCATENATE(B$1,"-",$A2)

Can't return multiple values of same input using VLOOKUP/INDEX/MATCH

I've tried searching online to solve this problem but cannot seem to find an appropriate solution to this problem I have.
I am trying to find all of the MAC addresses connected to each Switch in a network.
I am doing this in excel and have the following sample data:
+--------------+------------+--------+
| Mac Address | Switch | Port |
+--------------+------------+--------+
| 00144f601fdf | 6553DC-HA1 | Gi4/42 |
| 00144f601fdf | 6554DC-LA1 | Gi6/1 |
| 00144f601ff2 | 1123DC-MA1 | Gi8/34 |
| 00144f601ff2 | 6554DC-LA1 | Gi6/1 |
| 00144f601ff3 | 1123DC-MA1 | Gi8/35 |
| 00144f601ff3 | 6554DC-LA1 | Gi6/1 |
| 00144f685d38 | 1123DC-MA1 | Gi8/44 |
| 00144f685d38 | 6554DC-LA1 | Gi5/1 |
+--------------+------------+--------+
I have tried using VLOOKUP but obviously that only returns the first value, i've tried playing around with INDEX and MATCH but I haven't got anywhere helpful.
Ideally I'd like to see:
00144f601fdf = 6553DC-HA1
= 6554DC-LA1
00144f601ff2 = 1123DC-MA1
= 6554DC-LA1
And so on... any help on this matter or suggestions for potential solutions would be greatly appreciated!
Your example "I'd like to see" shows all of the switches for each mac address, but your request is for "all of the MAC addresses connected to each Switch."
Assuming your example is what you want to see, then you can insert a column in Excel between the "MAC Address" and "Switch" columns and use a formula in the new column to show MAC addresses only when they change.
If the rows are already sorted by MAC Address, and MAC Address is column A, the formula is
=IF(A2=A1,"",A2)
Just paste that in each cell of the new column and it will how the MAC Address entry only the first time it appears - the result will look like your example above.
fyi if you want a more compressed result, use unique() and transpose() with (optionally) concatenate(). Example at this Google sheet.
If the data is structure like in your example I recommend mike's answer.
If it is unordered you can use the following approach which will always return two results:
In D1: =VLOOKUP(A12,$A$2:$C$9,2,FALSE) (fairly obvious)
In D2:
=VLOOKUP(A12,
OFFSET($A$2,
MATCH(A12,$A$2:$A$9,0),
0,
COUNTA($A$2:$A$9) - MATCH(A12,$A$2:$A$9,0),
2),
2,
FALSE)
This offsets the range to after the first matched MAC address and resizes it to the end of the supplied range (In case you have more stuff below) and runs the VLOOKUP on that.

Looking multiple values on multiple columns in excel

I have a table where each person has several "Job" columns. I need to find all the employees who has a specific value ("Actor") in one of their "Job" columns.
I thought about doing HLookup on multiple columns, but Lookup functions only returns the first match (and I'm not sure I can use it on multiple columns). I also tried Pivot Tables, but all I got is aggregation, not the exact matches. How can I solve it?
For example, from the sample data below, when looking for "Actor", I would like to get both "John, Doe" and "Todd, Dude"
Sample data:
Id | First Name | Last Name | email | Job1 | Job2 | Job3 | Job4
-----------------------------------------------------------------------------------
1 | John | Doe | jd#i.com | Actor | Photographer | Producer |
2 | Todd | Dude | sd#i.com | Lights | Actor | |
3 | Janis | Joplin | jj#i.com | Singer | | |
Assuming the table as you give it is in A1:H4 (with headers in row 1), and that you put e.g. "Actor" in J1, this array formula** in J2:
=IFERROR(INDEX($B$2:$B$4&" "&$C$2:$C$4,SMALL(IF($E$2:$H$4=J$1,ROW($E$2:$H$4)-MIN(ROW($E$2:$H$4))+1),ROWS($1:1))),"")
Copy down until you start to get blanks. The formula may also be copied across to give results for other professions listed in K1, L1, etc.
Regards
**Array formulas are not entered in the same way as 'standard' formulas. Instead of pressing just ENTER, you first hold down CTRL and SHIFT, and only then press ENTER. If you've done it correctly, you'll notice Excel puts curly brackets {} around the formula (though do not attempt to manually insert these yourself).
I have no idea, how to it in one formula. All lookups and match returns only first reference. You could add column jobActor --- true if one of the jobs is Actor and then create pivot --- filter on jobAll, row names is person names.
Maybe advanced filter could be the way how to do it.

Resources