Apple Event: May 7th at 7 am PT

Looks like no one’s replied in a while. To start the conversation again, simply ask a new question.

Search sheet and return associated values for multiple matches

Preface: I'm a total Formulas n00b.


I have a file with two sheets:

Sheet 1 contains columns of numeric values which I would like to use as search words. Importantly, these "go together" in rows - There's a relationship between all the entries in each given row which must be preserved. Note that not all columns will have data for all rows. The actual file has several more columns, but for simplicity's sake I've brought it down to 4.

attribute 1attribute 2attribute 3attribute 4
A-1A-2A-3A-4
B-1B-2
C-1C-2C-3
D-1D-2D-3D-4


Sheet 2 contains only 2 columns. Column A contains names, and column B contains values which will match up with the values in Sheet 1.

nameattribute
GeorgeA-1
MaryC-1
PeteA-1
GeorgeC-2
JoeB-1
MaryC-2
GeorgeA-2
PaulaB-2
AmyC-1
JoeB-2
PeteC-2
MaryA-1
[...][...]


I want a way to display ALL names associated with a given attribute. Ideally, this would ultimately be displayed in the same cell, as below, but since I may need to do downstream manipulation, I will probably need to create an intermediate table regardless.

attribute 1namesattribute 2names attribute 3namesattribute 4names
A-1George, Pete, MaryA-2GeorgeA-3[...]A-4[...]
B-1JoeB2Paula, Joe
C-1Mary, AmyC-2George, Mary, PeteC-3[...]
D-1[...]D-2[...]D-3[...]D-4[...]


Thanks in advance for any help you're able to offer!

MacBook Pro with Retina display, OS X Mavericks (10.9.5)

Posted on Feb 20, 2015 11:10 AM

Reply
Question marked as Best reply

Posted on Feb 20, 2015 8:53 PM

Hello


It would be easier to build an intermediate work table to retrieve names for each attribute and extract data from the work table into final summary table.


E.g.,


The following Work table works as follows:


- Work::I:N are calculating row indices of Data::B that matches the attribute in Work::A.


- Work::C:H are retrieving name of Data::A whose row index is calculated in corresponding Work::I:N.


- Work::B is composing comma delimited string from Work::C:H.




User uploaded file




Work (excerpt) A1 attribute A2 A-1 A3 B-1 B1 names B2 =C2&IF(LEN(C2)*COUNTIF(D2:H2,"<>")>0,", ","") &D2&IF(LEN(D2)*COUNTIF(E2:H2,"<>")>0,", ","") &E2&IF(LEN(E2)*COUNTIF(F2:H2,"<>")>0,", ","") &F2&IF(LEN(F2)*COUNTIF(G2:H2,"<>")>0,", ","") &G2&IF(LEN(G2)*COUNTIF(H2:H2,"<>")>0,", ","") &H2 B3 =C3&IF(LEN(C3)*COUNTIF(D3:H3,"<>")>0,", ","") &D3&IF(LEN(D3)*COUNTIF(E3:H3,"<>")>0,", ","") &E3&IF(LEN(E3)*COUNTIF(F3:H3,"<>")>0,", ","") &F3&IF(LEN(F3)*COUNTIF(G3:H3,"<>")>0,", ","") &G3&IF(LEN(G3)*COUNTIF(H3:H3,"<>")>0,", ","") &H3 C1 n1 C2 =IFERROR(INDEX(Data::$A,I2,1),"") C3 =IFERROR(INDEX(Data::$A,I3,1),"") D1 n2 D2 =IFERROR(INDEX(Data::$A,J2,1),"") D3 =IFERROR(INDEX(Data::$A,J3,1),"") E1 n3 E2 =IFERROR(INDEX(Data::$A,K2,1),"") E3 =IFERROR(INDEX(Data::$A,K3,1),"") F1 n4 F2 =IFERROR(INDEX(Data::$A,L2,1),"") F3 =IFERROR(INDEX(Data::$A,L3,1),"") G1 n5 G2 =IFERROR(INDEX(Data::$A,M2,1),"") G3 =IFERROR(INDEX(Data::$A,M3,1),"") H1 n6 H2 =IFERROR(INDEX(Data::$A,N2,1),"") H3 =IFERROR(INDEX(Data::$A,N3,1),"") I1 i1 I2 =IFERROR(MATCH($A2,Data::$B,0),"") I3 =IFERROR(MATCH($A3,Data::$B,0),"") J1 i2 J2 =IFERROR(MATCH($A2,OFFSET(Data::$B,I2,0,ROWS(Data::$B)-I2,1),0)+I2,"") J3 =IFERROR(MATCH($A3,OFFSET(Data::$B,I3,0,ROWS(Data::$B)-I3,1),0)+I3,"") K1 i3 K2 =IFERROR(MATCH($A2,OFFSET(Data::$B,J2,0,ROWS(Data::$B)-J2,1),0)+J2,"") K3 =IFERROR(MATCH($A3,OFFSET(Data::$B,J3,0,ROWS(Data::$B)-J3,1),0)+J3,"") L1 i4 L2 =IFERROR(MATCH($A2,OFFSET(Data::$B,K2,0,ROWS(Data::$B)-K2,1),0)+K2,"") L3 =IFERROR(MATCH($A3,OFFSET(Data::$B,K3,0,ROWS(Data::$B)-K3,1),0)+K3,"") M1 i5 M2 =IFERROR(MATCH($A2,OFFSET(Data::$B,L2,0,ROWS(Data::$B)-L2,1),0)+L2,"") M3 =IFERROR(MATCH($A3,OFFSET(Data::$B,L3,0,ROWS(Data::$B)-L3,1),0)+L3,"") N1 i6 N2 =IFERROR(MATCH($A2,OFFSET(Data::$B,M2,0,ROWS(Data::$B)-M2,1),0)+M2,"") N3 =IFERROR(MATCH($A3,OFFSET(Data::$B,M3,0,ROWS(Data::$B)-M3,1),0)+M3,"")



Summary A1 attribute 1 A2 A-1 A3 B-1 A4 C-1 A5 D-1 B1 names B2 =IF(LEN(A2)>0,VLOOKUP(A2,Work::$A:$B,2,0),"") B3 =IF(LEN(A3)>0,VLOOKUP(A3,Work::$A:$B,2,0),"") B4 =IF(LEN(A4)>0,VLOOKUP(A4,Work::$A:$B,2,0),"") B5 =IF(LEN(A5)>0,VLOOKUP(A5,Work::$A:$B,2,0),"") C1 attribute 2 C2 A-2 C3 B-2 C4 C-2 C5 D-2 D1 names D2 =IF(LEN(C2)>0,VLOOKUP(C2,Work::$A:$B,2,0),"") D3 =IF(LEN(C3)>0,VLOOKUP(C3,Work::$A:$B,2,0),"") D4 =IF(LEN(C4)>0,VLOOKUP(C4,Work::$A:$B,2,0),"") D5 =IF(LEN(C5)>0,VLOOKUP(C5,Work::$A:$B,2,0),"") E1 attribute 3 E2 A-3 E3 E4 C-3 E5 D-3 F1 names F2 =IF(LEN(E2)>0,VLOOKUP(E2,Work::$A:$B,2,0),"") F3 =IF(LEN(E3)>0,VLOOKUP(E3,Work::$A:$B,2,0),"") F4 =IF(LEN(E4)>0,VLOOKUP(E4,Work::$A:$B,2,0),"") F5 =IF(LEN(E5)>0,VLOOKUP(E5,Work::$A:$B,2,0),"") G1 attribute 4 G2 A-4 G3 G4 G5 D-4 H1 names H2 =IF(LEN(G2)>0,VLOOKUP(G2,Work::$A:$B,2,0),"") H3 =IF(LEN(G3)>0,VLOOKUP(G3,Work::$A:$B,2,0),"") H4 =IF(LEN(G4)>0,VLOOKUP(G4,Work::$A:$B,2,0),"") H5 =IF(LEN(G5)>0,VLOOKUP(G5,Work::$A:$B,2,0),"")




Notes.


The formula in Work::C2 can be filled down and right across Work::C2:H17.


The formula in Work::I2 can be filled down across Work::I2:I17.


The formula in Work::J2 can be filled down and right across Work::J2:N17.


The formula in Summary::B2 can be copied and pasted across Summary::B2:B5, Summary::D2:D5, Summary::F2:F5 and Summary::H2:H5.


You may extend Work::C:H and the corresponding Work:I:N as is needed to cover the names and modify the joining formula in Work::B accordingly.



Tables are built in Numbers v2.


Good luck,

H

3 replies
Question marked as Best reply

Feb 20, 2015 8:53 PM in response to tehpetisacat

Hello


It would be easier to build an intermediate work table to retrieve names for each attribute and extract data from the work table into final summary table.


E.g.,


The following Work table works as follows:


- Work::I:N are calculating row indices of Data::B that matches the attribute in Work::A.


- Work::C:H are retrieving name of Data::A whose row index is calculated in corresponding Work::I:N.


- Work::B is composing comma delimited string from Work::C:H.




User uploaded file




Work (excerpt) A1 attribute A2 A-1 A3 B-1 B1 names B2 =C2&IF(LEN(C2)*COUNTIF(D2:H2,"<>")>0,", ","") &D2&IF(LEN(D2)*COUNTIF(E2:H2,"<>")>0,", ","") &E2&IF(LEN(E2)*COUNTIF(F2:H2,"<>")>0,", ","") &F2&IF(LEN(F2)*COUNTIF(G2:H2,"<>")>0,", ","") &G2&IF(LEN(G2)*COUNTIF(H2:H2,"<>")>0,", ","") &H2 B3 =C3&IF(LEN(C3)*COUNTIF(D3:H3,"<>")>0,", ","") &D3&IF(LEN(D3)*COUNTIF(E3:H3,"<>")>0,", ","") &E3&IF(LEN(E3)*COUNTIF(F3:H3,"<>")>0,", ","") &F3&IF(LEN(F3)*COUNTIF(G3:H3,"<>")>0,", ","") &G3&IF(LEN(G3)*COUNTIF(H3:H3,"<>")>0,", ","") &H3 C1 n1 C2 =IFERROR(INDEX(Data::$A,I2,1),"") C3 =IFERROR(INDEX(Data::$A,I3,1),"") D1 n2 D2 =IFERROR(INDEX(Data::$A,J2,1),"") D3 =IFERROR(INDEX(Data::$A,J3,1),"") E1 n3 E2 =IFERROR(INDEX(Data::$A,K2,1),"") E3 =IFERROR(INDEX(Data::$A,K3,1),"") F1 n4 F2 =IFERROR(INDEX(Data::$A,L2,1),"") F3 =IFERROR(INDEX(Data::$A,L3,1),"") G1 n5 G2 =IFERROR(INDEX(Data::$A,M2,1),"") G3 =IFERROR(INDEX(Data::$A,M3,1),"") H1 n6 H2 =IFERROR(INDEX(Data::$A,N2,1),"") H3 =IFERROR(INDEX(Data::$A,N3,1),"") I1 i1 I2 =IFERROR(MATCH($A2,Data::$B,0),"") I3 =IFERROR(MATCH($A3,Data::$B,0),"") J1 i2 J2 =IFERROR(MATCH($A2,OFFSET(Data::$B,I2,0,ROWS(Data::$B)-I2,1),0)+I2,"") J3 =IFERROR(MATCH($A3,OFFSET(Data::$B,I3,0,ROWS(Data::$B)-I3,1),0)+I3,"") K1 i3 K2 =IFERROR(MATCH($A2,OFFSET(Data::$B,J2,0,ROWS(Data::$B)-J2,1),0)+J2,"") K3 =IFERROR(MATCH($A3,OFFSET(Data::$B,J3,0,ROWS(Data::$B)-J3,1),0)+J3,"") L1 i4 L2 =IFERROR(MATCH($A2,OFFSET(Data::$B,K2,0,ROWS(Data::$B)-K2,1),0)+K2,"") L3 =IFERROR(MATCH($A3,OFFSET(Data::$B,K3,0,ROWS(Data::$B)-K3,1),0)+K3,"") M1 i5 M2 =IFERROR(MATCH($A2,OFFSET(Data::$B,L2,0,ROWS(Data::$B)-L2,1),0)+L2,"") M3 =IFERROR(MATCH($A3,OFFSET(Data::$B,L3,0,ROWS(Data::$B)-L3,1),0)+L3,"") N1 i6 N2 =IFERROR(MATCH($A2,OFFSET(Data::$B,M2,0,ROWS(Data::$B)-M2,1),0)+M2,"") N3 =IFERROR(MATCH($A3,OFFSET(Data::$B,M3,0,ROWS(Data::$B)-M3,1),0)+M3,"")



Summary A1 attribute 1 A2 A-1 A3 B-1 A4 C-1 A5 D-1 B1 names B2 =IF(LEN(A2)>0,VLOOKUP(A2,Work::$A:$B,2,0),"") B3 =IF(LEN(A3)>0,VLOOKUP(A3,Work::$A:$B,2,0),"") B4 =IF(LEN(A4)>0,VLOOKUP(A4,Work::$A:$B,2,0),"") B5 =IF(LEN(A5)>0,VLOOKUP(A5,Work::$A:$B,2,0),"") C1 attribute 2 C2 A-2 C3 B-2 C4 C-2 C5 D-2 D1 names D2 =IF(LEN(C2)>0,VLOOKUP(C2,Work::$A:$B,2,0),"") D3 =IF(LEN(C3)>0,VLOOKUP(C3,Work::$A:$B,2,0),"") D4 =IF(LEN(C4)>0,VLOOKUP(C4,Work::$A:$B,2,0),"") D5 =IF(LEN(C5)>0,VLOOKUP(C5,Work::$A:$B,2,0),"") E1 attribute 3 E2 A-3 E3 E4 C-3 E5 D-3 F1 names F2 =IF(LEN(E2)>0,VLOOKUP(E2,Work::$A:$B,2,0),"") F3 =IF(LEN(E3)>0,VLOOKUP(E3,Work::$A:$B,2,0),"") F4 =IF(LEN(E4)>0,VLOOKUP(E4,Work::$A:$B,2,0),"") F5 =IF(LEN(E5)>0,VLOOKUP(E5,Work::$A:$B,2,0),"") G1 attribute 4 G2 A-4 G3 G4 G5 D-4 H1 names H2 =IF(LEN(G2)>0,VLOOKUP(G2,Work::$A:$B,2,0),"") H3 =IF(LEN(G3)>0,VLOOKUP(G3,Work::$A:$B,2,0),"") H4 =IF(LEN(G4)>0,VLOOKUP(G4,Work::$A:$B,2,0),"") H5 =IF(LEN(G5)>0,VLOOKUP(G5,Work::$A:$B,2,0),"")




Notes.


The formula in Work::C2 can be filled down and right across Work::C2:H17.


The formula in Work::I2 can be filled down across Work::I2:I17.


The formula in Work::J2 can be filled down and right across Work::J2:N17.


The formula in Summary::B2 can be copied and pasted across Summary::B2:B5, Summary::D2:D5, Summary::F2:F5 and Summary::H2:H5.


You may extend Work::C:H and the corresponding Work:I:N as is needed to cover the names and modify the joining formula in Work::B accordingly.



Tables are built in Numbers v2.


Good luck,

H

Search sheet and return associated values for multiple matches

Welcome to Apple Support Community
A forum where Apple customers help each other with their products. Get started with your Apple ID.