Wie liste ich alle Werte in 3 verschiedenen Spalten in einer neuen Spalte auf?

0

Ich habe drei separate Spalten mit Werten in einer Excel-Tabelle. Jetzt möchte ich eine neue Spalte erstellen, die alle Werte aus diesen Spalten verkettet. Wenn ich einer dieser drei Spalten neue Werte hinzufüge, soll die zusammengefasste Spalte automatisch aktualisiert werden. Wie mache ich das?

Table1

ColumnA  ColumnB  ColumnC
VALUE1   VALUE4   VALUE7
VALUE2   VALUE5   VALUE8
VALUE3   VALUE6   VALUE9
         VALUE10

Generiertes Ergebnis:

Table2

VALUE1
VALUE2
VALUE3
VALUE4
VALUE5
VALUE6
VALUE10
VALUE7
VALUE8
VALUE9
Benedikt Buchert
quelle
Wie können wir das beantworten? Ich habe keine Ahnung, wie Sie die Werte zusammenfassen möchten ... nach Vorkommen? Von denen mit einem Wert größer oder kleiner als etwas? Welche Art von neuem Wert möchten Sie hinzufügen?
Dave
Ich möchte nur eine langweilige Liste der Werte in den drei Spalten. Nichts Außergewöhnliches. Mein Problem ist, wie es erkannt wird, wenn ich der ersten Spalte einen Wert hinzufüge, sodass alle Werte aus der zweiten Spalte nach unten verschoben werden, sodass ich keine Formel ändern oder hinzufügen muss.
Benedikt Buchert
ich denken Sie möchten verwenden INDIRECT
Dave
1
Es tut uns leid. Beispiel hinzugefügt, hoffe, es ist jetzt klarer.
Benedikt Buchert

Antworten:

2

Gebe folgendes ein Ereignismakro im Arbeitsblattcodebereich:

Private Sub Worksheet_Change(ByVal Target As Range)
    Dim inpt As Range, i As Long, K As Long, N As Long
    Dim j As Long

    Set inpt = Range("A:C")
    If Intersect(Target, inpt) Is Nothing Then Exit Sub
    Application.EnableEvents = False
        Range("D:D").Clear
        K = 1
        For i = 1 To 3
            N = Cells(Rows.Count, i).End(xlUp).Row
            For j = 1 To N
                Cells(K, 4).Value = Cells(j, i).Value
                K = K + 1
            Next j
        Next i
    Application.EnableEvents = True
End Sub

Änderungen an Spalten werden überwacht EIN durch C und Spalte aktualisieren D entsprechend.

enter image description here

Da es sich um Arbeitsblattcode handelt, ist die Installation sehr einfach und die Verwendung automatisch:

  1. Klicken Sie mit der rechten Maustaste auf den Registerkartennamen am unteren Rand des Excel-Fensters
  2. Wählen Sie Code anzeigen. Dadurch wird ein VBE-Fenster geöffnet
  3. Fügen Sie das Material ein und schließen Sie das VBE-Fenster

Wenn Sie Bedenken haben, versuchen Sie es zunächst auf einem Testarbeitsblatt.

Wenn Sie die Arbeitsmappe speichern, wird das Makro mit dieser gespeichert. Wenn Sie eine Excel-Version später als 2003 verwenden, müssen Sie diese speichern die Datei als .xlsm anstatt als .xlsx

So entfernen Sie das Makro:

  1. Öffnen Sie die VBE-Fenster wie oben
  2. Löschen Sie den Code
  3. Schließen Sie das VBE-Fenster

Weitere Informationen zu Makros im Allgemeinen finden Sie unter:

http://www.mvps.org/dmcritchie/excel/getstarted.htm

und

http://msdn.microsoft.com/en-us/library/ee814735(v=office.14).aspx

Weitere Informationen zu Ereignismakros (Arbeitsblattcode) finden Sie unter:

http://www.mvps.org/dmcritchie/excel/event.htm

Makros müssen aktiviert sein, damit dies funktioniert!

Gary's Student
quelle
Großartig! Wie muss ich den Code ändern, um auf Tabellen in anderen Arbeitsblättern zugreifen zu können?
Benedikt Buchert
@BenediktDichgans Du würdest einen platzieren ähnlich Makro in jedem Arbeitsblatt, (Anpassung an die Details dieses Arbeitsblatts)
Gary's Student
Hm ich habe auf eine Lösung ohne Codierung gehofft. Vielen Dank für Ihre Hilfe.
Benedikt Buchert
2

Ich habe eine Antwort, für die keine Codierung erforderlich ist.

  • Ich gehe davon aus, dass Sie die kombinierte (verkettete) Liste einfügen möchten in der Spalte D desselben Blattes. Wenn Sie es woanders wollen, ist das eine triviale Änderung.
  • Meine Lösung erfordert zwei "Hilfsspalten"; Zum Beispiel Spalten E und F auf dem gleichen Blatt. Wenn Sie sie woanders haben möchten, ist das eine triviale Änderung.
  • Ich gehe davon aus, dass Sie keine Leerzeichen setzen werden in den ersten drei Spalten (d. h. im die Daten vor dem letzten Wert), und dass Sie möchten, dass diese Spalten einfach verkettet und nicht sortiert oder dedupiert werden. Wenn ich das falsch verstehe, ist das eine große Änderung.
  • Ich gehe davon aus, dass jede Spalte mindestens einen Wert hat. d.h. A1, B1 und C1 sind nicht leer. Wenn diese Annahme nicht gültig ist, diese lösung kann (wahrscheinlich) dafür angepasst werden.

Lösung:

  • Eingeben =IF(E1<0, "", OFFSET($A$1, F1, E1)) in die Zelle D1.
  • Zelle ziehen / füllen D1 runter in D2.
  • Eingeben 0 in Zellen E1 und F1.
  • Eingeben =IF(E1<0, E1, IF(OFFSET($A$1, F1+1, E1)<>"", E1, IF(E1<2, E1+1, -1))) in die Zelle E2.
  • Eingeben =IF(E1<0, 0, IF(OFFSET($A$1, F1+1, E1)<>"", F1+1, 0)) in die Zelle F2.
  • Zellen auswählen D2:F2 und so weit ziehen / füllen wie Sie es von der kombinierten Liste erwarten. (Natürlich können Sie es später jederzeit erweitern.)

Säulen E und F enthalten Die (0-basierte) Spalten- und Zeilennummer des Werts in Spalte D. Zum Beispiel, 0,0 ist A1, 0,2 ist A3, 1,3 ist B4, usw. Ein negativer Wert in Spalte E weist darauf hin, dass Sie sind über das Ende der Daten hinaus. Die Formel in Spalte D wird als leer ausgewertet, wenn E Wert ist negativ; Andernfalls wird der OFFSET() Funktion zum Abrufen der durch den indexierte Wert E und F zahlen.

Die Formeln in Spalten E und F prüfe ob der Vorherige E Wert ist negativ, und, falls ja, setzen Sie die nächste Zeile auf -1,0 - Sobald Sie das Ende der Liste erreicht haben, haben Sie es hinter sich gelassen. und du fängst nicht an, dich in Knoten zu binden. Ansonsten, wenn es einen nächsten Wert in der aktuellen Spalte gibt, wir rücken auf diesen Wert vor ( E1,F1+1 ). Ansonsten gehen wir zum Anfang der nächsten Spalte - außer wenn die aktuelle Spalte # 2 ist ( C ), Wir gehen zu Spalte # -1, weil wir am Ende sind.

screenshot of spreadsheet

Sie können jetzt Werte in Spalten hinzufügen und löschen A, B und C, und die Liste in Spalte D wird automatisch aktualisiert. Sobald dies funktioniert, können Sie die Hilfsspalten ausblenden.

Scott
quelle
Ich mag Ihre Lösung, das einzige Problem ist die Sortierbarkeit.
Benedikt Buchert
Nun, meine Güte, (1) das Beispiel in Ihrer Frage ist nicht sortiert, und (2) Garys Schülerantwort bietet auch keine Sortierung. Wenn das Sortieren ein Problem ist, warum hast du das nicht gesagt
Scott
Es tut mir Leid! Ich wusste nicht, dass dies für die Lösung relevant ist ...
Benedikt Buchert
Ein Kind geht in einen Süßwarenladen und bittet um Schokolade. Der Ladenbesitzer zeigt ihm eine Schachtel Pralinen, und das Kind sagt: „Das sieht gut aus.“ Dann sagt der Ladenbesitzer: „Schade, dass Erdbeeren außerhalb der Saison sind, also habe ich keine Erdbeeren mit Schokoladenüberzug.“ Das Kind ( deutet auf die Pralinenschachtel) und sagt: „Nun, diese sind nicht gut; Ich wollte unbedingt Erdbeeren mit Schokoladenüberzug. “…………… Verstehst du das? Sie wollten ein Feature erst, nachdem Ihnen gesagt wurde, dass es schwer zu bekommen ist.
Scott