Wie wird der Zellbezug in der Funktion anhand numerischer Werte basierend auf der bekannten Anzahl von Zeilen erhöht?

619
mehmetic

Dies bezieht sich auf die Formel, die ich für Zelle F2 in der folgenden Abbildung benötige.
F2 zeigt das Ergebnis, das ich will :

Tabelle mit Beispieldaten

Ich brauche: Die Concat-Formel zur Verkettung der Daten in Spalte B für jede Variante von Spalte A. Wenn wir also wissen, dass es X- Versionen des Elements gibt (basierend auf der Funktion in C2), muss die Verkettung X verstärken -1 mal, um die Zeichenfolge aus Spalte A zu zeichnen.

Kann nicht herausfinden, wie man das am besten macht! Ich bin auch in Ordnung mit dem Erstellen neuer Funktionen, wenn auf sie verwiesen werden muss (wie CONCATs in F zusammenfassen, da ich dann einfach eine IF-Anweisung schreiben kann, um nach "BASE" zu suchen ...)

  • Ich kenne die Zahl in C2: Es ist die Anzahl, wie oft der Text in Spalte A auftaucht
  • Ich kenne die Nummer in E2: Es ist die Zeilennummer
  • Ich kenne das Ergebnis von D: Wenn der Text in A zum ersten Mal angezeigt wird, ist er "Basis", sonst "Variant".
  • Ich weiß, dass der Text in Spalte A immer sortiert ist
0
Es ist nicht notwendig, eine Spalte zu haben, nur um die Zeilennummer aufzunehmen. Sie können das immer mit `ROW ()` bekommen. Scott vor 5 Jahren 0
Danke, Scott. Ich habe mir Freemans Antwort in dieser Frage angesehen, die Sie verlinkt haben. Das funktioniert nicht ... aber ich werde Ihre Antwort versuchen müssen, wenn ich in der Tabelle bin. Ich weiß, was ROW ist, ich habe es einfach als Referenz eingefügt, falls jemand der Meinung wäre, dass das Differential der ROW #s helfen würde. mehmetic vor 5 Jahren 0
Haben Sie Office 365 oder 2016 oder 2019? Wenn ja, können Sie die integrierte Funktion TEXTJOIN verwenden. pat2015 vor 5 Jahren 1

2 Antworten auf die Frage

1
p._phidot_

Verwenden Sie eine zusätzliche Spalte .. dann verstecken Sie sie. (:

F2 ----> =IF(A2="","",IF(A1=A2,"",G3&", "&B2)) G2 ----> =IF(A2="","",IF(A2=A3,A2&", "&G3,B2)) 

und nach unten ziehen ... bitte teilen, wenn es funktioniert (oder nicht) (:

Hi @ p._phidot_, ja ​​es funktioniert mit einer kleinen Änderung ..
= IF (A2 = "", "", IF (A2 = A3, ** B2 ** & "," & G3, B2)) mehmetic vor 5 Jahren 1
Alles Lob an Gott .. froh, dass es löst. (: p._phidot_ vor 5 Jahren 0
1
Scott

Wenn Sie meine Antwort an bedingte verkettete Zelleninhalte über Zeilen anpassen, geben Sie die folgenden Formeln ein:

  • F2=IF(AND(A1<>A2,A2<>""), G2, "")
  • G2=IF(A2<>A3, B2, B2 & ", " & G3)

(vorausgesetzt, Ihre Daten beginnen in Zeile 2, wie in der Frage gezeigt). Wenn Sie keine Spalte verwenden möchten  G, können Sie eine beliebige verfügbare Spalte verwenden (z. B. Zoder AG) und die Verweise entsprechend ändern. Ziehen / füllen Sie nach unten, um alle Ihre Daten zu erfassen. 

Die Formel in der zweiten Spalte (ich nehme an, dass es sich um Column handelt  G) erstellt die durch Kommas getrennte Liste der Größen für die aktuelle Sache in Column  A von unten nach oben. Genauer gesagt, Zelle  enthält die Liste für Zeilen  n und darunter. (Vielleicht hilft es Ihnen, jetzt einen Blick auf die Illustration zu werfen.) Sie sagt:Gn

  • Wenn die nächste Zeile in Column einen anderen Wert  Aals die aktuelle Zeile ( A2<>A3) hat, ist dies die letzte Zeile für diesen Wert. Daher ist die Liste für diese Zeile und darunter nur der Wert für diese Zeile.
  • Andernfalls ist dies nicht die letzte Zeile für diesen Wert, und die Zeile darunter hat die Liste für diese Zeile und darunter. Daher möchte ich den Wert aus dieser Zeile übernehmen und der Liste aus der darunter liegenden Zeile voranstellen.

Dann zeigt die Formel in Spalte  Fdie vollständige Liste für ein Objekt in der ersten Zeile für dieses Objekt und an anderer Stelle leer. Lassen Sie sich auch leer anzeigen, wenn der Spaltenwert  Ain dieser Zeile leer ist.

illustration of spreadsheet

Sie können die Spalte ausblenden,  Gsobald Sie diese Funktion aktiviert haben.

Beeindruckend. Das ist eine schöne Lösung. Danke, Scott. Es funktioniert wie ein Zauber ... Sie haben auch IF (<>) zu meinem Arsenal hinzugefügt - danke! mehmetic vor 5 Jahren 0