Live-Forum - Die aktuellen Beiträge
Anzeige
Archiv - Navigation
1028to1032
Aktuelles Verzeichnis
Verzeichnis Index
Übersicht Verzeichnisse
Vorheriger Thread
Rückwärts Blättern
Nächster Thread
Vorwärts blättern
Anzeige
HERBERS
Excel-Forum (Archiv)
20+ Jahre Excel-Kompetenz: Von Anwendern, für Anwender
Inhaltsverzeichnis

Tabelle für Etikettendruck optimieren

Tabelle für Etikettendruck optimieren
27.11.2008 11:10:00
Sebastian
Hallo alle,
ich habe ein nettes Problem im Angebot: Ich habe eine große Tabelle mit der Struktur wie im Beispiel. Links Namen und Kontaktdaten, rechts Adressen zu den Namen. Es kann vorkommen, dass mehrere Personen dieselbe Adresse haben, das sieht dann so aus wie im Beispiel: Frau Mahlzahn und Jim Knopf hätten also dieselbe Adresse.
Was ich benötige, sind Briefetiketten. D.h. die Tabelle müsste irgendwie so umgebaut werden, dass der Name aus der linken Spalte zur zugehörigen Postadresse in die rechte Spalte gerückt wird. Dann sollte man das m.E. nach über den Seriendruckassistenen leicht machen können (in Word kopiert natürlich).
In der Beispieltabelle müsste also A2 unter B2 eingefügt werden (kopieren oder ausschneiden ist mir egal)
Ich habe ziemlich viele Adressen und die Alternative ist, dass ich alles von Hand abschreibe. Ich würd mich also ziemlich freuen, wenn jemand einen Geistesblitz hat ;-)
Der Link zur Tabelle: https://www.herber.de/bbs/user/57174.xls
nb: ich hab die Daten auch in Word. Wenn jemand da eine Lösung wüsste ist mir auch geholfen...
Tausend Dank für Eure Hilfe und viele Grüße
Sebastian

12
Beiträge zum Forumthread
Beiträge zu diesem Forumthread

Betreff
Datum
Anwender
Anzeige
AW: Tabelle für Etikettendruck optimieren
27.11.2008 12:15:00
David
Hallo Sebastian,
schreibe in C2:
{=INDEX($A$1:$A$16;WENN(ISTFEHLER(KKLEINSTE(WENN(LINKS($A$1:$A$16;4)="Tel.";ZEILE($A$1:$A$16);""); ZEILE(A1))-1);"";KKLEINSTE(WENN(LINKS($A$1:$A$16;4)="Tel.";ZEILE($A$1:$A$16);"");ZEILE(A1))-1)) }
runterkopieren, bis #Zahl erscheint
in D2:
{=WENN(INDEX($B$1:$B$16;KKLEINSTE(WENN(LINKS($A$1:$A$16;4)="Tel.";ZEILE($A$1:$A$16);"");ZEILE(A1)) -1+SPALTE(A1)-1)="";D1;INDEX($B$1:$B$16;KKLEINSTE(WENN(LINKS($A$1:$A$16;4)="Tel.";ZEILE($A$1:$A$16); "");ZEILE(A1))-1+SPALTE(A1)-1)) }
dann 3 Spalten nach rechts und wieder nach unten kopieren.
Ich bin davon ausgegangen, dass unter einem Namen immer "Tel." steht, ein besseres Unterscheidungsmerkmal hab ich nicht gefunden. Außerdem ist angenommen, dass der Adressblock IMMER aus 4 Zeilen besteht.
Formeln sind Matrixformeln, {} nicht eingeben, sondern Formel mit STRG-SHIFT-ENTER abschließen.
Rückmeldung wäre nett.
Gruß
David
Anzeige
AW: Tabelle für Etikettendruck optimieren
27.11.2008 13:09:45
Sebastian
Hallo David,
großes Kino! Das funktioniert in der Beispielmappe schonmal hervorragend. Vielen Dank!
aaaaber: Die Adressen sind weltweit, also leider völlig uneinheitlich. Das können auch 6 oder 7 Zeilen werden. Ist das auch noch lösbar?
So oder so - Du sparst mir unendlich viel Arbeit. Schonmal vielen Dank!!
AW: Tabelle für Etikettendruck optimieren
27.11.2008 13:23:00
David
in D2:
{=WENN(ODER(WENN(INDEX($B$1:$B$20;KKLEINSTE(WENN(LINKS($A$1:$A$20;4)="Tel.";ZEILE($A$1:$A$20);""); ZEILE(A1))-1+SPALTE(A1)-1)="";D1;INDEX($B$1:$B$20;KKLEINSTE(WENN(LINKS($A$1:$A$20;4)="Tel."; ZEILE($A$1:$A$20);"");ZEILE(A1))-1+SPALTE(A1)-1))="";C2="");"";WENN(INDEX($B$1:$B$20; KKLEINSTE(WENN(LINKS($A$1:$A$20;4)="Tel.";ZEILE($A$1:$A$20);"");ZEILE(A1))-1+SPALTE(A1)-1)="";D1; INDEX($B$1:$B$20;KKLEINSTE(WENN(LINKS($A$1:$A$20;4)="Tel.";ZEILE($A$1:$A$20);"");ZEILE(A1)) -1+SPALTE(A1)-1))) }
dann nach rechts weiterkopieren, sollte auch bei 6, 7 oder 8 Zeilen noch funzen. Sollte allerdings INNERHALB des Adressblocks eine leere Zelle sein, gibts Fehler.
Gruß
David
Anzeige
AW: Tabelle für Etikettendruck optimieren
27.11.2008 14:16:17
Sebastian
Hi David,
wahnsinn, ich bin echt begeistert. Folgende Fragen hab ich aber jetzt noch, nachdem ich das mal in der Originaltabelle angewendet habe:
# Die Formel rechnet ja nur den Bereich bis a16 durch, wenn ich das richtig verstehe. Ich habe jetzt versucht, alle A16 in Deiner Formel durch A1500 zu ersetzen (so viel ist es leider) - dann kommt nicht mehr das richtige Ergebnis raus. Weißt Du, woran das liegt?
und:
# ich habe ja immer wieder leerzeilen zwischen den Adressblöcken. Spielt das eine Rolle ob bzw. wie viele da vorhanden sind? Die wären ja ggf. auch fix rausgemacht.
# die Adressblöcke sind durch Lälnderüberschriften getrennt, es sind also eine Zeilen eingefügt, in denen in A1 nur ein Land steht und dann die zugehörigen Adressen folgen. Egal oder rauslöschen?
Das wars vorläufig. Du kannst Dir das Monstrum Tabelle vorstellen....das noch nichtmal auf meinem Mist gewachsen ist, ich aber verwenden muss :-/
Nochmals vielen Dank, ich werd morgen vormittag dran weiterarbeiten wenn Du noch neue Vorschläge hast und gebe Dir dann gern wieder Rückmeldung.
Viele Grüße
Sebastian
Anzeige
AW: Tabelle für Etikettendruck optimieren
27.11.2008 14:23:05
David
mein einziger Vorschlag:
stelle eine Beispieltabelle ein, die auch ein paar der ungewöhlichen Adressblöcke beinhaltet und auch die anderen Infos (Länderüberschriften etc.), damit man sich auf solche Eventualitäten einstellen kann.
Mit deinem ersten Beispiel hat die Formel bei mir geklappt, aber das sieht auch noch recht "ordentlich" aus.
Leerzeilen ZWISCHEN den Adressblöcken sind egal, es darf nur kein Leerzeichen INNERHALB eines Blockes sein.
AW: Tabelle für Etikettendruck optimieren
27.11.2008 14:20:31
Sebastian
oh sorry, vergessen: Die Adressen bestehen tatsächlich aus bis zu 8 Zeilen.
AW: Tabelle für Etikettendruck optimieren
27.11.2008 14:23:00
David
mir schwebt übrigens noch eine andere (elegantere) Lösung vor, aber das schaffe ich heute nicht mehr.
Gruß
David
Anzeige
AW: Tabelle für Etikettendruck optimieren
28.11.2008 09:21:06
Sebastian
Guten Morgen,
keine Eile, solange es unelegant funktioniert reicht mir das vollkommen :-) Die Sache mit den Länderüberschriften vergessen wir am Besten. Die lösch ich einfach schnell von Hand raus, ich denk das ist am effektivsten. Wichtig wäre mir nur, dass der Funktionsbereich auf 1500 Zeilen erweitert wird, das hab ich nicht hinbekommen. Du siehst, ich versteh noch nicht, was die Formel macht ;-)
Beste Grüße
Sebastian
AW: Tabelle für Etikettendruck optimieren
28.11.2008 09:29:00
David
Deswegen wäre es trotzdem schöner, mit Beispieldaten zu arbeiten, die etwas näher an deinem Original sind.
Gruß
AW: Tabelle für Etikettendruck optimieren
28.11.2008 10:59:30
Sebastian
sollst Du haben: https://www.herber.de/bbs/user/57201.xls
Das ist die Originalstruktur, auch die Länder sind immer so grün markiert. Ich habe auch ein paar mehrzeilige Adressen eingefügt. Bei Frauen steht immer "Ms./Fr." vor dem Namen. Länderangaben in der Adresse sind immer in Großbuchstaben. Und wie gesagt, in dieser Form geht es weiter bis in Zeile 1500. Die Hinweise (löschen: XY) sind auch in der Tabelle vorhanden, allerdings unregelmäßig.
Ich hoffe, das hilft Dir weiter und bedanke mich nochmal für Deinen Einsatz!!!
Viele Grüße
Sebastian
Anzeige
AW: Tabelle für Etikettendruck optimieren
28.11.2008 12:09:00
David
Hallo Sebastian,
ich glaube, mit Formeln ist das nicht lösbar, da zu viele verschiedene Kombinationen vorhanden sind.
Deswegen ist wohl hier VBA angebracht:
Option Explicit

Sub Adressen()
Dim LZeile As Double
Dim i As Double
Dim j As Double
Dim BLaenge As Byte
Dim AZeile As Integer
Dim AFeld(0 To 8) As String     'Anzahl der Adressfelder je Adresse
LZeile = Range("A65536").End(xlUp).Row  'Letzte benutzte Zeile in Spalte A
For i = 1 To LZeile
If Cells(i, 1).Interior.ColorIndex  8 Then    'Felder mit Farbe 8 werden übersprungen
If Cells(i, 1)  "" And Left(Cells(i, 1), 9)  "(löschen:" Then    'leere Zeilen und  _
Zeilen mit 'löschen' werden übersprungen
BLaenge = Range("A" & i).End(xlDown).Row - i + 1    'Länge des Adressblockes
If Range("B" & i)  "" And Range("B" & i).End(xlDown).Row - i + 1 > BLaenge Then  _
BLaenge = Range("B" & i).End(xlDown).Row - i + 1  'Korrektur der Blocklänge, wenn Adresslänge mehr Zeilen hat
For j = 1 To BLaenge
If Range("B" & i + j - 1)  "" Then AFeld(j) = Range("B" & i + j - 1)  'Füllen  _
der Adressfelder
Next
AFeld(0) = Range("A" & i)   'erstes Adressfeld = Name
AZeile = Range("D65000").End(xlUp).Row + 1   'erste freie Zeile für Ergebnistabelle
For j = 0 To BLaenge
Cells(AZeile, j + 4) = AFeld(j)     'Ausfüllen der Ergebnistabelle
Next
i = i + BLaenge
End If
End If
Next
End Sub


In deiner letzten Beispieltabelle funzt das soweit. Wenn du den Code auf deine Echt-Tabelle loslässt, musst du aber sicherlich einiges anpassen. Schau dir hierzu alle Stellen an, wo "Range" und "Cells" steht, ob der Code sich in der richtigen Zeile/Spalte bewegt.
Gruß
David

Anzeige
AW: Tabelle für Etikettendruck optimieren
28.11.2008 14:38:04
Sebastian
Hallo David,
ich komm heute leider nicht mehr dazu, dass zu probieren. Ich mach mich am MOntag wieder dran und bin gespannt obs klappt und würd mich freuen, DIch ggf. nochmal fragen zu dürfen.
Danke und viele Grüße
Sebastian

Beliebteste Forumthreads (12 Monate)

Anzeige

Beliebteste Forumthreads (12 Monate)

Anzeige
Anzeige
Anzeige