2016-07-10 7 views
1

Ich habe eine Datenbank der Dinge mit den Menschen verbunden, die sie mögen, wie weiter unten exampled:Drag Formel ändern Row Referenz statt Spalte Excel

dieses Blatt NAME IS BLATT 1

Image of Current Database

In einem anderen Blatt versuche ich, die Dinge von jeder Person zu sortieren, die sie mag.

Im zweiten Blatt muss ich überprüfen, um sicherzustellen, dass die Zelle nicht leer ist (weil eine andere Benutzereingabe zusätzliche Personen hinzufügen kann). Wenn die Zelle einen Personennamen enthält, muss ich alle Elemente in der Datenbank durchlaufen, um zu sehen, ob der Name dieser Person daneben angezeigt wird.

Wenn ja, dann will ich es alle ihre Lieblings-Dinge zurückzukehren, wie unten in grün dargestellt:

dieses Blatt NAME IS BLATT 2 Image of Database After Function

Ich weiß, ich muss Verwenden Sie die OFFSET-Funktion, aber wie ich es jetzt geschrieben habe, funktioniert es nicht. Jede Hilfe wird sehr geschätzt!

Meine Funktion ist unten. Dies wäre eine Funktion für B2 in BLATT 2. Ich möchte diese Funktion nach rechts ziehen können (von B2 nach F2) und die Ausgabe wie oben im Grün angezeigt bekommen.

=IF(COUNTIF(OFFSET(sheet1!$B$2:$F$2, 0, COLUMN()-2) $A$2), OFFSET(sheet1!A2, 0, COLUMN() -2), " ") 

Ich erhalte zur Zeit eine Fehlermeldung, dass ich zu wenige Argumente habe. Aber ich glaube, dass es etwas anderes ist, die mit falsch ist, was ich ... jede Hilfe zu tun versuche, ist viel zu schätzen

BLATT 1 DATA:

Things People Who Like The Thing      
Potatoes Person 3 Person 6      
Cats Person 1 Person 4 Person 6     
Mice Person 2 Person 6      
Green Person 2 Person 6      
Wine Person 1 Person 5 Person 6     
Chicken Person 1 Person 6      
Dogs Person 1 Person 4 Person 6     
Flowers Person 2 Person 5 Person 6     
Chair Person 3 Person 6      
Shirts Person 4 Person 6 

BLATT 2 (UNSOLVED) DATA:

Favorite Things         
Person 1           
Person 2           
Person 3           
Person 4           
Person 5           
Person 6           
+0

Könnten Sie mindestens veröffentlichen das erste Blatt als Daten und nicht ein Foto, damit wir die Formel testen nicht nur die Daten neu eingeben muss? –

+0

Ich entschuldige mich, ich bin mir nicht sicher, wie Sie das Excel-Blatt als Daten – Megan

+0

kopieren Kopieren Sie dann einfügen direkt in den ursprünglichen Beitrag mit Bearbeiten. Dann markieren Sie die Daten und drücken Sie ctrl-k –

Antwort

1

Ich würde die kleine Formel (IF()) verwenden.

Wenn Sie 2010 oder höher, dann kann es leicht mit dem Aggregat() Funktion erfolgen:

=IFERROR(INDEX(Sheet1!$A$2:$A$11,AGGREGATE(15,6,(ROW(Sheet1!$B$2:$D$11)-1)/(Sheet1!$B$2:$D$11=$A2),COLUMN(A:A))),"") 

Also, was diese Formeln tun, ist sie die SMALL() Formel verwenden. Die kleine Formel ist so eingerichtet SMALL(Range,k). k ist die Instanz, wie in, wenn k 3 war, dann würde es die 3. kleinste zurückgeben.

Da wir die COLUMN(A:A) als unsere k verwenden, wird die von COLUMN(A:A) zurückgegebene Zahl jedes Mal um eins erhöht, wenn sie nach rechts gefüllt ist. Also geben Sie uns eine Liste der 1., dann die 2. dann die 3. ...

Es ist diese Nummer, die an die INDEX übergeben wird.

Wenn Sie dann nicht diese Matrixformel verwenden:

=IFERROR(INDEX(Sheet1!$A$2:$A$11,SMALL(IF(Sheet1!$B$2:$D$11=$A2,(ROW(Sheet1!$B$2:$D$11)-1)),COLUMN(A:A))),"") 

eine Matrixformel sein muss mit bestätigt werden Ctrl-Shift-Eingabe, wenn Bearbeitungsmodus zu verlassen, anstatt ein.Wenn es richtig gemacht wird, wird das Excel {} um die Formel setzen.

enter image description here

+0

Das hat perfekt funktioniert! Ich habe noch nie mit Arrays gearbeitet, also schätze ich Ihre Hilfe sehr. – Megan

+1

Sie scheinen ein Monopol auf Antworten auf Array-Formel-Fragen Scott zu haben. Könnte die FTC kontaktieren ... – MacroMarc