Herbers Excel-Forum - das Archiv

Tabellen "verzahnen"

Informationen und Beispiele zu den hier genannten Dialog-Elementen:
Bild

Betrifft: Tabellen "verzahnen"
von: Torsten

Geschrieben am: 11.12.2006 23:11:46
Hallo, ich möchte zwei importierte Textdateien (jede 192 Zeilen lang) mit einander "verzahen". D.h. die Arbeitsmappe A enthält eine Liste die Mappe B eine weitere Liste. Nun soll per Makro Zeile für Zeile in Mappe C kopiert werden und zwar immer abwechselnd. Die beiden Listen haben jeweils eine Überschrift, die jedoch immer gleich ist und somit nur von einer der beiden Listen in die Mappe C übernommen werden soll. Die Liste B startet also bei "B1".
Ich hatte versucht das Problem "händich" zu lösen und das ganze als Makro aufzuzeichnen. Das Problem war aber das mir excel zum Schluss gesagt hat, dass mein Makro zu lang sei... *vor Wut zerpflück*
Kann mir jemand helfen ?
Bild

Betrifft: AW: Tabellen "verzahnen"
von: Erich G.

Geschrieben am: 12.12.2006 00:14:01
Hallo Torsten,
der folgende Code gehört in ein Standardmodul einer Mappe:
Option Explicit
Sub Verzahnen()
Dim wsA As Worksheet, wsB As Worksheet, wsC As Worksheet
Dim lngA As Long, lngB As Long, intA As Integer, intB As Integer
Dim arrA, arrB, arrC, zz As Long, ss As Integer
Set wsA = Workbooks("MapA.xls").Worksheets(1)   ' Hier Quellmappen und -blätter
Set wsB = Workbooks("MapB.xls").Worksheets(1)   ' festlegen
Set wsC = Workbooks("MapC.xls").Worksheets(1)   ' Hier Zielmappe und -blatt festlegen
lngA = wsA.Cells(Rows.Count, 1).End(xlUp).Row
lngB = wsB.Cells(Rows.Count, 1).End(xlUp).Row
If lngA <> lngB Then
MsgBox "Anzahl Zeilen Mappe A: " & lngA & vbLf _
& "Anzahl Zeilen Mappe B: " & lngB, vbCritical, "Abbruch"
Exit Sub
End If
intA = wsA.Cells(1, Columns.Count).End(xlToLeft).Column
intB = wsB.Cells(1, Columns.Count).End(xlToLeft).Column
If intA <> intB Then
MsgBox "Anzahl Spalten Mappe A: " & intA & vbLf _
& "Anzahl Spalten Mappe B: " & intB, vbCritical, "Abbruch"
Exit Sub
End If
ReDim arrC(1 To 2 * lngA - 1, 1 To intA)
arrA = Range(wsA.Cells(1, 1), wsA.Cells(lngA, intA)).Value
arrB = Range(wsB.Cells(1, 1), wsB.Cells(lngA, intA))
For ss = 1 To intA
arrC(1, ss) = arrA(1, ss)
For zz = 2 To lngA
arrC(2 * zz - 2, ss) = arrA(zz, ss)
arrC(2 * zz - 1, ss) = arrB(zz, ss)
Next zz
Next ss
Range(wsC.Cells(1, 1), wsC.Cells(2 * lngA - 1, intA)) = arrC
End Sub
Rückmeldung wäre nett! - Grüße von Erich aus Kamp-Lintfort
Bild

Betrifft: AW: Tabellen "verzahnen"
von: Torsten

Geschrieben am: 12.12.2006 21:53:31
Vielen Dank !!!
Das funktioniert perfekt! Genau so hatte ich mir das vorgestellt.
Bleibt nur noch eine kleinigkeit: Wenn die Ausgangsfiles unterschiedlich lang sind, wäre es super, wenn der rest des längeren files einfach in einem stück hinten an das verzahnte angehangen werden könnte... Ginge das ?!?
lg
Torsten
Bild

Betrifft: AW: Tabellen "verzahnen"
von: Erich G.

Geschrieben am: 12.12.2006 23:24:33
Hallo Torsten,
danke für deine Rückmeldung - freut mich, dass es läuft.
"Bleibt nur noch eine kleinigkeit"? Das ist wohl weniger "geblieben" als vielmehr eine Änderung der Aufgabe!
Das ginge so - die Prüfung der Zeilenzahlen habe ich wieder rausgeworfen:
Option Explicit
Sub Verzahnen2()
Dim wsA As Worksheet, wsB As Worksheet, wsC As Worksheet
Dim lngA As Long, lngB As Long, lngZ As Long, intA As Integer, intB As Integer
Dim arrA, arrB, arrC, zz As Long, ss As Integer
Set wsA = Workbooks("MapA.xls").Worksheets(1)   ' Hier Quellmappen und -blätter
Set wsB = Workbooks("MapB.xls").Worksheets(1)   ' festlegen
Set wsC = Workbooks("MapC.xls").Worksheets(1)   ' Hier Zielmappe und -blatt festlegen
intA = wsA.Cells(1, Columns.Count).End(xlToLeft).Column
intB = wsB.Cells(1, Columns.Count).End(xlToLeft).Column
If intA <> intB Then
MsgBox "Anzahl Spalten Mappe A: " & intA & vbLf _
& "Anzahl Spalten Mappe B: " & intB, vbCritical, "Abbruch"
Exit Sub
End If
lngA = wsA.Cells(Rows.Count, 1).End(xlUp).Row
lngB = wsB.Cells(Rows.Count, 1).End(xlUp).Row
ReDim arrC(1 To lngA + lngB - 1, 1 To intA)
arrA = Range(wsA.Cells(1, 1), wsA.Cells(lngA, intA)).Value
arrB = Range(wsB.Cells(1, 1), wsB.Cells(lngB, intA))
For ss = 1 To intA
lngZ = 1
arrC(1, ss) = arrA(1, ss)
For zz = 2 To lngA + lngB - 1
If zz <= lngA Then lngZ = lngZ + 1:    arrC(lngZ, ss) = arrA(zz, ss)
If zz <= lngB Then lngZ = lngZ + 1:    arrC(lngZ, ss) = arrB(zz, ss)
Next zz
Next ss
Range(wsC.Cells(1, 1), wsC.Cells(lngA + lngB - 1, intA)) = arrC
End Sub
Rückmeldung wäre nett! - Grüße von Erich aus Kamp-Lintfort
Bild

Betrifft: AW: Tabellen "verzahnen"
von: Torsten

Geschrieben am: 13.12.2006 20:32:33
Hallo Erich,
ich kann nur sagen in Perfektion !!! Hat super funktioniert !
Heute haben wir das erste mal versucht das File seiner Bestimmung zu übergeben. Leider scheiterte der Versuch an einer "Kleinigkeit", die ich zu lösen aber leider (durch mangelnde VBA Kenntnisse) nicht in der Lage bin. Könntest Du mir wohl noch einmal helfen ?
Vielleicht sollte ich Dir erst einmal erklären worum es geht:
Ich arbeite in ein analytischen Labor, in dem eine Vielzahl von Proben in so genannten Batchen analysiert werden. Die Batche werden in einer Datenbank generiert und als Textfile exportiert und dann wieder in die Messsoftware importiert. Aus Messtechnichen gründen ist es nun aber für uns wichtig das zwei dieser Batche in einander verschachtelt gemessen werden. Was ja nun auch (dank Dir) funktioniert!
Nun mussten wir aber heute feststellen, dass die Messsoftware den Import eines verschachtelten Batches verweigert, ausser in der achten Kolonne ist eine Spalte die "SmplInjVol" heißt.
Nun meine Frage: Kannst du das Makro so umbauen, dass wenn die beiden Tabellen "verzaht" sind, noch eine Spalte an der Position "I" eingefügt wird? In der Zelle "I1" müsste dann automatisch noch "SmplInjVol" (ohne Anführungszeichen) eingefügt werden und über eine Abfrage der User aufgefordert werden eine Zahl einzutippen. Diese sollte dann die Kolonne füllen.
Verstehst Du was ich meine ? Ich hoffe Du hast noch etwas Zeit für mich, ich bedanke mich auf jeden Fall jetzt schon mal für deine Mühen !!!
lg
Torsten
Bild

Betrifft: AW: Tabellen "verzahnen"
von: Reinhard

Geschrieben am: 13.12.2006 20:46:46
Hi Torsten,
meinst du so, ggfs muss noch Fehlerabfangung rein wenn die Inputbox leer bleibt oder Buchstaben reinkommen?
Option Explicit
Sub Verzahnen2()
Dim wsA As Worksheet, wsB As Worksheet, wsC As Worksheet, Eing As strin
Dim lngA As Long, lngB As Long, lngZ As Long, intA As Integer, intB As Integer
Dim arrA, arrB, arrC, zz As Long, ss As Integer
Set wsA = Workbooks("MapA.xls").Worksheets(1)   ' Hier Quellmappen und -blätter
Set wsB = Workbooks("MapB.xls").Worksheets(1)   ' festlegen
Set wsC = Workbooks("MapC.xls").Worksheets(1)   ' Hier Zielmappe und -blatt festlegen
intA = wsA.Cells(1, Columns.Count).End(xlToLeft).Column
intB = wsB.Cells(1, Columns.Count).End(xlToLeft).Column
If intA <> intB Then
MsgBox "Anzahl Spalten Mappe A: " & intA & vbLf _
& "Anzahl Spalten Mappe B: " & intB, vbCritical, "Abbruch"
Exit Sub
End If
lngA = wsA.Cells(Rows.Count, 1).End(xlUp).Row
lngB = wsB.Cells(Rows.Count, 1).End(xlUp).Row
ReDim arrC(1 To lngA + lngB - 1, 1 To intA)
arrA = Range(wsA.Cells(1, 1), wsA.Cells(lngA, intA)).Value
arrB = Range(wsB.Cells(1, 1), wsB.Cells(lngB, intA))
For ss = 1 To intA
lngZ = 1
arrC(1, ss) = arrA(1, ss)
For zz = 2 To lngA + lngB - 1
If zz <= lngA Then lngZ = lngZ + 1:    arrC(lngZ, ss) = arrA(zz, ss)
If zz <= lngB Then lngZ = lngZ + 1:    arrC(lngZ, ss) = arrB(zz, ss)
Next zz
Next ss
Range(wsC.Cells(1, 1), wsC.Cells(lngA + lngB - 1, intA)) = arrC
Eing = InputBox("Zahl")
Range(wsC.Cells(1, 12), wsC.Cells(lngA + lngB - 1, 12)) = CInt(Eing)
Range("L1") = "SmplInjVol"
End Sub

Gruß
Reinhard
ps: Ich freue mich über eine Rückmeldung ob diese Antwort hilfreich war oder nicht..
Bild

Betrifft: AW: Tabellen "verzahnen"
von: Erich G.

Geschrieben am: 13.12.2006 21:24:53
Hallo Torsten,
mein Vorschlag:
Option Explicit
Sub Verzahnen3()
Dim wsA As Worksheet, wsB As Worksheet, wsC As Worksheet, Eing As Variant
Dim lngA As Long, lngB As Long, lngZ As Long, intA As Integer, intB As Integer
Dim arrA, arrB, arrC, zz As Long, ss As Integer
Set wsA = Workbooks("MapA.xls").Worksheets(1)   ' Hier Quellmappen und -blätter
Set wsB = Workbooks("MapB.xls").Worksheets(1)   ' festlegen
Set wsC = Workbooks("MapC.xls").Worksheets(1)   ' Hier Zielmappe und -blatt festlegen
intA = wsA.Cells(1, Columns.Count).End(xlToLeft).Column
intB = wsB.Cells(1, Columns.Count).End(xlToLeft).Column
If intA <> intB Then
MsgBox "Anzahl Spalten Mappe A: " & intA & vbLf _
& "Anzahl Spalten Mappe B: " & intB, vbCritical, "Abbruch"
Exit Sub
End If
lngA = wsA.Cells(Rows.Count, 1).End(xlUp).Row
lngB = wsB.Cells(Rows.Count, 1).End(xlUp).Row
ReDim arrC(1 To lngA + lngB - 1, 1 To intA)
arrA = Range(wsA.Cells(1, 1), wsA.Cells(lngA, intA)).Value
arrB = Range(wsB.Cells(1, 1), wsB.Cells(lngB, intA))
For ss = 1 To intA
lngZ = 1
arrC(1, ss) = arrA(1, ss)
For zz = 2 To lngA + lngB - 1
If zz <= lngA Then lngZ = lngZ + 1:    arrC(lngZ, ss) = arrA(zz, ss)
If zz <= lngB Then lngZ = lngZ + 1:    arrC(lngZ, ss) = arrB(zz, ss)
Next zz
Next ss
Range(wsC.Cells(1, 1), wsC.Cells(lngA + lngB - 1, intA)) = arrC
' --------------------------------------------------------------  Spezialeintrag Spalte H
Eing = False
While Eing = False
Eing = Application.InputBox("Bitte eine Zahl <> 0 eingeben", "Messwerte...", 1, , , , , 1)
Wend
Columns(8).Insert
Cells(1, 8) = "SmplInjVol"
Range(wsC.Cells(2, 8), wsC.Cells(lngA + lngB - 1, 8)) = CDbl(Eing)
End Sub
Rückmeldung wäre nett! - Grüße von Erich aus Kamp-Lintfort
Bild

Betrifft: AW: Tabellen "verzahnen"
von: Torsten

Geschrieben am: 13.12.2006 23:44:34
Hey, danke für deine Mühen !!!
Leider funktiniert es dieses mal nicht richtig... Das Makro wir von Tabelle1 aus ausgeführt, soll die Zeile aber in Tabelle4 einfügen. Im Moment fügt es den Zahlenwert, den man eingibt, in die richte Tabelle (4) ein, aber macht die Spalte sowie deren Bezeichnung in Tabelle1...
Kannst Du das vielleicht noch berichtigen ? Dann wäre es Perfekt !!!
lg & Dank
Torsten
Bild

Betrifft: AW: Tabellen "verzahnen" - korrigiert
von: Erich G.

Geschrieben am: 14.12.2006 00:47:36
Hallo Torsten,
war ein echter Schnellschuss-Fehler, aber leicht zu korrigieren. Ich hoffe, es ist nun ok:
Option Explicit
Sub Verzahnen3()
Dim wsA As Worksheet, wsB As Worksheet, wsC As Worksheet, Eing As Variant
Dim lngA As Long, lngB As Long, lngZ As Long, intA As Integer, intB As Integer
Dim arrA, arrB, arrC, zz As Long, ss As Integer
Set wsA = Workbooks("MapA.xls").Worksheets(1)   ' Hier Quellmappen und -blätter
Set wsB = Workbooks("MapB.xls").Worksheets(1)   ' festlegen
Set wsC = Workbooks("MapC.xls").Worksheets(1)   ' Hier Zielmappe und -blatt festlegen
intA = wsA.Cells(1, Columns.Count).End(xlToLeft).Column
intB = wsB.Cells(1, Columns.Count).End(xlToLeft).Column
If intA <> intB Then
MsgBox "Anzahl Spalten Mappe A: " & intA & vbLf _
& "Anzahl Spalten Mappe B: " & intB, vbCritical, "Abbruch"
Exit Sub
End If
lngA = wsA.Cells(Rows.Count, 1).End(xlUp).Row
lngB = wsB.Cells(Rows.Count, 1).End(xlUp).Row
ReDim arrC(1 To lngA + lngB - 1, 1 To intA)
arrA = Range(wsA.Cells(1, 1), wsA.Cells(lngA, intA)).Value
arrB = Range(wsB.Cells(1, 1), wsB.Cells(lngB, intA))
For ss = 1 To intA
lngZ = 1
arrC(1, ss) = arrA(1, ss)
For zz = 2 To lngA + lngB - 1
If zz <= lngA Then lngZ = lngZ + 1:    arrC(lngZ, ss) = arrA(zz, ss)
If zz <= lngB Then lngZ = lngZ + 1:    arrC(lngZ, ss) = arrB(zz, ss)
Next zz
Next ss
Range(wsC.Cells(1, 1), wsC.Cells(lngA + lngB - 1, intA)) = arrC
' --------------------------------------------------------------  Spezialeintrag Spalte H
Eing = False
While Eing = False
Eing = Application.InputBox("Bitte eine Zahl <> 0 eingeben", "Messwerte...", 1, , , , , 1)
Wend
wsC.Columns(8).Insert
wsC.Cells(1, 8) = "SmplInjVol"
Range(wsC.Cells(2, 8), wsC.Cells(lngA + lngB - 1, 8)) = CDbl(Eing)
End Sub
Rückmeldung wäre nett! - Grüße von Erich aus Kamp-Lintfort
Bild

Betrifft: AW: Tabellen "verzahnen"
von: Daniel Eisert

Geschrieben am: 13.12.2006 23:47:52
Hallo
ich mach mal nen Alternativvorschlag.
Vorteil dieser Lösung wäre, daß es recht einfach ist das Makro anzupassen, wenn auch mal 3 oder mehr Batches miteinander verzahnt werden sollen.
Im Prinzip muß dann nur die Variable AnzBatches auf den entsprechenden Wert gesetzt werden und unter wsQuelle(x) die zusätzlichen Mappen eingetragen werden.
Der Rest bleibt dann unverändert.
Option Explicit
Sub Verschachteln()
Dim wsZiel As Worksheet
Dim wsQuelle() As Worksheet
Dim AnzBatches As Long
Dim i As Long
AnzBatches = 2
ReDim wsQuelle(AnzBatches)
Set wsZiel = Workbooks("wbC.xls").Sheets(1)
Set wsQuelle(1) = Workbooks("wbA.xls").Sheets(1)
Set wsQuelle(2) = Workbooks("wbB.xls").Sheets(1)
For i = 1 To AnzBatches
With wsQuelle(i)
.Columns(1).Insert
.Cells(2, 1).Value = i
.Cells(3, 1).Value = i + AnzQuellen
End With
With wsQuelle(i).Cells(1, 1).CurrentRegion
wsQuelle(i).Range("A2:A3").AutoFill Destination:=.Resize(.Rows.Count - 1, 1).Offset(1, 0)
.Offset((i = 1) + 1, 0).Copy Destination:=wsZiel.Cells(65000, 1).End(xlUp).Offset(1, 0)
.Columns(1).EntireColumn.Delete
End With
Next
With wsZiel
.Rows(1).Delete
.Cells(1, 1).CurrentRegion.Sort Key1:=.Range("A2"), Order1:=xlAscending, Header:=xlYes _
, OrderCustom:=1, MatchCase:=False, Orientation:=xlTopToBottom, DataOption1:=xlSortNormal
.Columns(1).Delete
'--- Spalte einfügen-----
.Columns(8).Insert
.Cells(1, 8).Value = "SmplInjVol"
Range(.Cells(2, 8), .Cells(.UsedRange.Rows.Count, 8)).Value = InputBox("Bitte Wert eingeben")
End With
End Sub

Gruß, Daniel
Bild

Betrifft: AW: viele Tabellen "verzahnen"
von: Erich G.

Geschrieben am: 14.12.2006 13:23:00
Hi Daniel,
inspiriert durch deine gute Idee, die Zahl der Quellen variabel zu machen, hab ich meine Routine auch mal aufgebohrt:
Sub VerzahnenViele()
Dim wsQ() As Worksheet, wsZ As Worksheet, Eing As Variant
Dim lngQ() As Long, intQ() As Integer, lngM As Long, intM As Integer
Dim lngZ As Long, arrT, arrQ, arrZ, ii As Integer, zz As Long, ss As Integer
Const anzQ = 5                                     ' Hier Anzahl Quellblätter festlegen
ReDim wsQ(1 To anzQ)
Set wsQ(1) = Workbooks("MapA.xls").Worksheets(1)   ' Hier Quellblätter bestimmen
Set wsQ(2) = Workbooks("MapB.xls").Worksheets(1)   '
Set wsQ(3) = Workbooks("MapC.xls").Worksheets(1)   '
Set wsQ(4) = Workbooks("MapD.xls").Worksheets(1)   '
Set wsQ(5) = Workbooks("MapE.xls").Worksheets(1)   '
'  Set wsQ(6) = Workbooks("    .xls").Worksheets(1)   '
Set wsZ = Workbooks("MapZ.xls").Worksheets(1)      ' Hier Zielblatt bestimmen
' --------------------------------------------------------------  Quellgrößen ermitteln
ReDim lngQ(1 To anzQ), intQ(1 To anzQ)
For ii = 1 To anzQ
intQ(ii) = wsQ(ii).Cells(1, Columns.Count).End(xlToLeft).Column
intM = IIf(intQ(ii) < intM, intM, intQ(ii))
lngQ(ii) = wsQ(ii).Cells(Rows.Count, 1).End(xlUp).Row
lngM = IIf(lngQ(ii) < lngM, lngM, lngQ(ii))
lngZ = lngZ + lngQ(ii) - 1
Next ii
' --------------------------------------------------------------- Quelldaten einsammeln
ReDim arrQ(1 To lngM, 1 To intM, 1 To anzQ)
For ii = 1 To anzQ
arrT = Range(wsQ(ii).Cells(1, 1), wsQ(ii).Cells(lngQ(ii), intQ(ii))).Value
For ss = 1 To intQ(ii)
If ii = 1 Then arrQ(1, ss, 1) = arrT(1, ss)
For zz = 2 To lngQ(ii):    arrQ(zz, ss, ii) = arrT(zz, ss):    Next zz
Next ss
Next ii
Erase arrT                                            ' aufräumen
' --------------------------------------------------------------- Zielblatt füllen
ReDim arrZ(1 To lngZ + 1, 1 To intM)
For ss = 1 To intM
lngZ = 1:      arrZ(1, ss) = arrQ(1, ss, 1)
For zz = 2 To lngM
For ii = 1 To anzQ
If zz <= lngQ(ii) And ss <= intQ(ii) Then _
lngZ = lngZ + 1: arrZ(lngZ, ss) = arrQ(zz, ss, ii)
Next ii
Next zz
Next ss
wsZ.Cells.Clear
Range(wsZ.Cells(1, 1), wsZ.Cells(lngZ, intM)) = arrZ
Erase lngQ, intQ, arrQ, arrZ                          ' aufräumen
' --------------------------------------------------------------- Spezialeintrag Spalte H
'  Eing = 789  ' nur für Test
Eing = False
While Eing = False
Eing = Application.InputBox("Bitte eine Zahl <> 0 eingeben", "Messwerte...", 1, , , , , 1)
Wend
wsZ.Columns(8).Insert
wsZ.Cells(1, 8) = "SmplInjVol"
Range(wsZ.Cells(2, 8), wsZ.Cells(lngZ, 8)) = CDbl(Eing)
End Sub
Grüße von Erich aus Kamp-Lintfort
Bild

Betrifft: AW: viele Tabellen "verzahnen"
von: Torsten
Geschrieben am: 15.12.2006 23:07:05
Hallo Erich,
dein Makro hat perfekt funktioniert! Noch mal vielen Dank!
lg
Torsten
Bild

Betrifft: Danke für Rückmeldung - freut mich! (oT)
von: Erich G.
Geschrieben am: 15.12.2006 23:56:39
Bild

Betrifft: AW: Tabellen "verzahnen"
von: Daniel Eisert

Geschrieben am: 12.12.2006 00:58:10
Hallo
Lösung von Hand:
- in beiden Tabellen eine Zusätzliche Spalte einfügen.
- bei Tabelle A schreibst du in die ersten beiden Zellen der neunen Spalte 1 und 3 und kopierst die Werte nach unten, in Tabelle B schreibst du 2 und 4 und ziehts diese ebenfalls nach unten (beide Zellen markieren und doppelklick auf das kleine Rechteck der Umrandung.
in Tabelle A sollten jetzt in der neuen Spalte fortlaufend ungerade Zahlen stehen und in Tabelle B gerade.
- jetzt kopierst du beide beide Tabellen untereinander
- dann sortierst du nach der neu eingefügten Spalte
Fertig.
Löusung per Makro:
Sub Verzahnt_Kopieren()
Dim i As Long
Dim Zeile As Long
For i = 1 To 192
Zeile = Zeile + 1
Sheets("TabelleA").Rows(i).Copy Destination:=Sheets("TabelleC").Rows(Zeile)
Zeile = Zeile + 1
Sheets("TabelleB").Rows(i).Copy Destination:=Sheets("TabelleC").Rows(Zeile)
Next
Sheets("TabelleC").Rows(1).Delete
End Sub

Die Tabellennamen müssen halt noch angepasst werden.
Bei längeren Tabellen könnte es allerdings effektiver sein, die "Hand-Lösung" in ein Makro umzusetzen, da keine Schleifen verwendet werden müssen und "Auto-Ausfüllen" und "Sortieren" auch bei großen Datenmengen recht schnell geht. Bei 192 Zeilen spielt das aber noch keine Rolle.
Gruß, Daniel
 Bild
Excel-Beispiele zum Thema "Tabellen "verzahnen""
Suche über mehrere Tabellen Benennen von Tabellenblättern mit Monatsnamen
Druckseitenlinien im Tabellenblatt Tabellenblattnamen in ein Listenfeld einlesen
Suchbegriff über mehrere Tabellenblätter suchen. Tabellenblätter benennen
Tabellenblatt auswählen Zustand von Tabellenblatt-Checkboxes ermitteln
Tabellenblattnamen der VBE-Projekte ändern Tabellenblattnamen nach Datum