Wie kann ich in Excel auf dem Mac Zeilendaten in großen Mengen in Spalten umwandeln (Transponierung nicht geeignet)?

Wie kann ich in Excel auf dem Mac Zeilendaten in großen Mengen in Spalten umwandeln (Transponierung nicht geeignet)?

Ich habe viele Daten, die so aussehen. Sie haben zwei Spalten:

Aber ich brauche es so: Ein Name pro Zeile, wobei die E-Mails nach Bedarf als zusätzliche Spalten hinzugefügt werden. Für jeden Namen gibt es eine unbekannte Anzahl von E-Mails:

Ich muss dies für eine riesige Tabelle mit Tausenden von Zeilen tun. Ich kann also nicht jede Zeile manuell konvertieren, indem ich etwas wie „Transponieren“ verwende. Ich brauche eine Massen-/Batch-/Automatisierungslösung.

Ich weiß, dass es VBA gibt, aber ich weiß nicht, wie man es codiert. Wenn das die Lösung ist, können Sie mir bitte sagen, wie der Code aussehen soll?

Auch Nicht-VBA-Lösungen sind herzlich willkommen.

Antwort1

Verwenden vonMüllerund ausgehend von dieser CSV:

Name,Email
bob,[email protected]
bob,[email protected]
bob,[email protected]
sally,[email protected]
sally,[email protected]

Du kannst rennen:

mlr --csv nest --ivar ";" -f Email then nest --explode --values --across-fields -f Email then unsparsify input.csv >output.csv

erhalten:

Antwort2

Beginnen wir mit Ihrem Beispiel: Spalte A: Name, Spalte B: E-Mail

  1. Geben Sie diese Matrixformel =INDEX($A$2:$A$6, MATCH(0, COUNTIF($D$1:$D1, $A$2:$A$16), 0)) in eine leere Zelle ein, z. B. D2, und drücken Sie gleichzeitig die Tasten Umschalt + Strg + Eingabe, um das richtige Ergebnis zu erhalten, siehe Screenshot:

Bildbeschreibung hier eingeben

  1. Ziehen Sie die Zelle nach unten, um alle Werte in Spalte D einzufügen. Das Ergebnis ist wie im Screenshot oben.
  2. In der ZelleE2Fügen Sie diese Formel dort ein, wo Sie Ihre E-Mail haben möchten=IFERROR(INDEX($B$2:$B$16, MATCH(0,COUNTIF($D2:D2,$B$2:$B$16)+IF($A$2:$A$16<>$D2,1,0),0)),"")
  3. Ziehen Sie die Zelle 5–10 Zellen nach rechts (oder so viele, wie Sie für ausreichend halten), um sie auszufüllen, und ziehen Sie die Zeile dann nach unten, um die E-Mail-Adressen der einzelnen Personen einzutragen.

Ergebnis: Bildbeschreibung hier eingeben


QUELLE

Antwort3

Fügen Sie eine Hilfsspalte mit der Formel hinzu:

="Mail "&COUNTIF($A$2:A2,A2)

Bildbeschreibung hier eingeben

Öffnen Sie den Power Query Editor - Wählen SieSpalte1- gehe zuVerwandeln-Pivot-Spalte- wählenEmailund unterFortgeschrittene OptionwählenNicht aggregieren:

Bildbeschreibung hier eingeben

Antwort4

Wenn Sie eine neue Excel-Version haben, können Sie diese Formeln verwenden.

Dann kannst du es so machen: Bildbeschreibung hier eingeben Das BlaueTabelle heißt Table1.

Verwendete Formeln:

  • Teil 3:=UNIQUE(Table1[Name])
  • F2:N2:="Mail"&COLUMN()-COLUMN($E$2)
  • F3 (nach unten gestreckt):=INDEX(Table1[Mail];FILTER(TRANSPOSE(SORT(UNIQUE((ROW(Table1[Name])-ROW(Table1[[#Headers];[Name]]))*($E3=Table1[Name]))));TRANSPOSE(SORT(UNIQUE((ROW(Table1[Name])-ROW(Table1[[#Headers];[Name]]))*($E3=Table1[Name]))))>0;""))

Die Tabelle wird durch die SPILL-Funktion der neuen Excel-Versionen gefüllt.

Beispieldatei:https://1drv.ms/x/s!ArVkYVSHnABFiiqzBYLPmoubvdHY?e=p7wOeF

Falls Sie eine ältere Excel-Version verwenden, können die meisten Funktionen mithilfe von Array-Funktionen emuliert werden. Aber es wird viel chaotischer ...

verwandte Informationen