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
microsoft-excel
worksheet-function
microsoft-excel-2013
Benedikt Buchert
quelle
quelle
INDIRECT
Antworten:
Gebe folgendes ein Ereignismakro im Arbeitsblattcodebereich:
Änderungen an Spalten werden überwacht EIN durch C und Spalte aktualisieren D entsprechend.
Da es sich um Arbeitsblattcode handelt, ist die Installation sehr einfach und die Verwendung automatisch:
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:
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!
quelle
Ich habe eine Antwort, für die keine Codierung erforderlich ist.
D
desselben Blattes. Wenn Sie es woanders wollen, ist das eine triviale Änderung.E
undF
auf dem gleichen Blatt. Wenn Sie sie woanders haben möchten, ist das eine triviale Änderung.A1
,B1
undC1
sind nicht leer. Wenn diese Annahme nicht gültig ist, diese lösung kann (wahrscheinlich) dafür angepasst werden.Lösung:
=IF(E1<0, "", OFFSET($A$1, F1, E1))
in die ZelleD1
.D1
runter inD2
.0
in ZellenE1
undF1
.=IF(E1<0, E1, IF(OFFSET($A$1, F1+1, E1)<>"", E1, IF(E1<2, E1+1, -1)))
in die ZelleE2
.=IF(E1<0, 0, IF(OFFSET($A$1, F1+1, E1)<>"", F1+1, 0))
in die ZelleF2
.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
undF
enthalten Die (0-basierte) Spalten- und Zeilennummer des Werts in SpalteD
. Zum Beispiel,0,0
istA1
,0,2
istA3
,1,3
istB4
, usw. Ein negativer Wert in SpalteE
weist darauf hin, dass Sie sind über das Ende der Daten hinaus. Die Formel in SpalteD
wird als leer ausgewertet, wennE
Wert ist negativ; Andernfalls wird derOFFSET()
Funktion zum Abrufen der durch den indexierte WertE
undF
zahlen.Die Formeln in Spalten
E
undF
prüfe ob der VorherigeE
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.Sie können jetzt Werte in Spalten hinzufügen und löschen
A
,B
undC
, und die Liste in SpalteD
wird automatisch aktualisiert. Sobald dies funktioniert, können Sie die Hilfsspalten ausblenden.quelle