Live-Forum - Die aktuellen Beiträge
Anzeige
Anzeige
HERBERS
Excel-Forum (Archiv)
20+ Jahre Excel-Kompetenz: Von Anwendern, für Anwender
Inhaltsverzeichnis

Text aus mehreren Tabellenblättern lesen

Text aus mehreren Tabellenblättern lesen
02.12.2012 20:18:05
hachi
Hallo zusammen
Ich benötige mal wieder ein wenig Hilfe.
Aus meinem Dienstplan möchte ich aus den Tabellenblättern Januar:Dezember alle Urlaube mit den Bezeichnungen "U" und "U6" herauslesen. Diese sollen im Tabelle "Urlaubsliste" eingetragen werden.
=WENN(UND($A4=Januar!$E11;SUMMENPRODUKT((Januar!$AY8:$CC8=D1)*(Januar!$AY9:$CC9="U")*1)=1);"U";"")
Ich hab es mit dieser Formel versucht, bleib aber an nur einem Monat hängen.
Kann mir dabei jemand helfen.
In der Datei hab ich der Größe wegen nur drei Monate eingebaut.
https://www.herber.de/bbs/user/82856.zip

6
Beiträge zum Forumthread
Beiträge zu diesem Forumthread

Betreff
Datum
Anwender
Anzeige
AW: Text aus mehreren Tabellenblättern lesen
03.12.2012 04:04:02
fcs
Hallo hachi,
in deiner Beispiel-Datei hast du das Blatt Urlaubsliste nicht eingebaut, so dass wir nicht wissen, wie der Aufbau der Urlaubsliste sein soll.
Falls du die Datei unter Excel 2007/2010 erstellt hast, dann lade sie auch in diesem Format hoch. Man bekommt sonst lästige Hinweise, das erhebnliche Informationsverluste (bedingte Formatierung) auftreten, wenn im Alt-Format (97-2003) gespeichert wird.
Wenn du schon nur die Blätter für Januar bis März in der Beispiel-Datei hast, dann sollten doch auch die Datumsangaben in den Blättern dazu passen.
Was machst du bei monaten mit weniger als 31 Tagen?
Sind dann die Spalten nicht ausgefüllt.
Gruß
Franz

Anzeige
AW: Text aus mehreren Tabellenblättern lesen
03.12.2012 18:48:17
hachi
Hallo Franz
Zunächt einmal vielen Dank für deine angebotene Hilfe
Ich habe die Datei nochmal umgeschrieben auf excel 2010.
Zu Hause arbeite ich noch mit Excel 2003 an der Arbeit mit 2010. Deshalb die Datei.
Ich hoffe du kannst sie nun aufrufen.
Es sind die Monate Januar bis März drin. die Formel soll später Januar bis Dezember beinnhalten, um in der Urlaubsliste das ganze Jahr abzubilden.
Der Plan wird am Ende 85 Personan erfassen, das nur zur Info.
https://www.herber.de/bbs/user/82874.zip

AW: Text aus mehreren Tabellenblättern lesen
04.12.2012 05:10:36
fcs
Hallo hachi,
man kann die Information in den Monatsblättern per Formel auswerten:
Tabellenblattname: Urlaubsliste
Formel in Zelle D4:
=WENN(ODER($A4=0;$A4="");"";WENN(LINKS(INDEX(INDIREKT(TEXT(D$1;"MMMM")
&"!J9:AN1000");VERGLEICH($A4;INDIREKT(TEXT(D$1;"MMMM")
&"!E9:E1000");0)-2;VERGLEICH(D$1;INDIREKT(TEXT(D$1;"MMMM")
&"!J8:AN8");0));1)="U";"U";""))

Diese Formel kannst du nach rechts und unten kopieren.
Das ist aber relativ rechenintensiv.
Deshalb ist es ggf. effektiver, die Urlaubsliste bei Bedarf per Makro zu aktualisieren.
Nachfolgend eine entsprechendes Makro.
Gruß
Franz
Option Explicit
Sub Urlaubsliste()
Dim wksUrlaub As Worksheet
Dim wksMonat As Worksheet
Dim varPNr
Dim datDatum As Date
Dim Zeile_U As Long, Spalte_U As Long
Dim Zeile_M As Long, Spalte_M As Long
Dim varEintrag
Dim ZellePNr As Range
Dim StatusCalc
Set wksUrlaub = Worksheets("Urlaubsliste")
On Error GoTo Fehler
'Makrobremsen lösen
With Application
.EnableEvents = False
StatusCalc = .Application.Calculation
.Calculation = xlCalculationManual
.ScreenUpdating = False
End With
With wksUrlaub
'Altdaten löschen
Zeile_U = .Cells(.Rows.Count, 1).End(xlUp).Row
Spalte_U = .Cells(1, .Columns.Count).End(xlToLeft).Column
.Range(.Cells(4, 4), .Cells(Zeile_U, Spalte_U)).ClearContents
'Datumswerte in Zeile 1 abarbeiten
For Spalte_U = 4 To .Cells(1, .Columns.Count).End(xlToLeft).Column
datDatum = .Cells(1, Spalte_U).Value
If fncCheckSheet(Format(datDatum, "MMMM")) = True Then
Set wksMonat = Worksheets(Format(datDatum, "MMMM"))
'Spalte mit Datum im Monatsblatt
Spalte_M = Day(datDatum) + 9
'PNr in Spalte A abarbeiten
For Zeile_U = 4 To .Cells(.Rows.Count, 1).End(xlUp).Row
varPNr = .Cells(Zeile_U, 1).Value
If varPNr > 0 Then
varEintrag = ""
With wksMonat
'PNr in Spalte E des Monatsblattes suchen
With .Range(.Cells(9, 5), .Cells(.Rows.Count, 5))
Set ZellePNr = .Find(What:=varPNr, LookIn:=xlValues, lookat:=xlWhole)
End With
If Not ZellePNr Is Nothing Then
Zeile_M = ZellePNr.Row - 2 'Zeile mit Nachname
varEintrag = .Cells(Zeile_M, Spalte_M).Value
Select Case varEintrag
Case "U", "u", "U6", "u6"
wksUrlaub.Cells(Zeile_U, Spalte_U).Value = "U"
End Select
End If
End With 'wksMonat
End If
Next Zeile_U
End If
Next Spalte_U
End With 'wksUrlaub
Fehler:
With Err
Select Case .Number
Case 0 'Alles OK
Case Else
MsgBox "Fehler-Nr.: " & .Number & vbLf & .Description, _
vbInformation + vbOKOnly, "Makro: Urlaubsliste"
End Select
End With
'Makrobremsen zurücksetzen
With Application
.EnableEvents = True
.Calculation = StatusCalc
.ScreenUpdating = True
End With
Set ZellePNr = Nothing: Set wksUrlaub = Nothing: Set wksMonat = Nothing
End Sub
Function fncCheckSheet(strBlattname, Optional wbk As Workbook) As Boolean
'Prüft, ob Blatt in Arbeitsmappe vorhandem
Dim objSheet As Object
On Error GoTo Fehler
If wbk Is Nothing Then Set wbk = ActiveWorkbook
fncCheckSheet = False
Set objSheet = wbk.Sheets(strBlattname)
fncCheckSheet = True
Fehler:
End Function

Anzeige
AW: Text aus mehreren Tabellenblättern lesen
04.12.2012 19:48:57
hachi
Hallo Franz
Meine Güte, du hast da ja ein richtiges Programm geschrieben.
In meiner Testtabelle klappt das Makro total gut. ich bin echt begeistert, was man aus Excel so alles herausholen kann.
Erst einmal vielen Dank für deine Unterstützung.
Jetzt habe ich nur nicht so viel Ahnung von Makros.
Ich müsste das Programm so umschreiben, dass es auf meinem großen Dienstplan mit 85 Mitarbeitern passt.
Hier sind die Namen auf Spalte "D" und das Datum in Zeile 9.
Wo muss ich im Makro dies ändern.
Was beteutet z.B. Zeile_M = ZellePNr.Row - 2 'Zeile mit Nachname
varEintrag = .Cells(Zeile_M, Spalte_M).Value
Was ist z.B Zeile_M das sagt mir natürlich nichts.
Wäre toll wenn Du mir nochmal helfen köttest.
Gruß
Uwe

Anzeige
AW: Text aus mehreren Tabellenblättern lesen
05.12.2012 03:39:54
fcs
Hallo Uwe,
Zeile_M, varEingabe, usw. sind Variablen zum Zwischenspeichern von Informationen.
Diese sind zu Beginn des Makros mit den Dim- oder auch Const-Anweisungen deklariert.
Die Namen der Variablen hab ich zum Teil so gewählt, dass alle, die "_U" enthalten sich auf die Urlaubstliste beziehen, alle die "_M" entalten auf ein Monatsblatt.
Was beteutet z.B. Zeile_M = ZellePNr.Row - 2 'Zeile mit Nachname
Weist der Variablen "Zeile_M" die Nummer der Zeile(Row) der zuvor gefundenen/gemerken Zelle mit der Personalnummer zu minus 2, da der Name in den Monatsblättern immer 2 Zeilen oberhalb der PNr steht.
varEintrag = .Cells(Zeile_M, Spalte_M).Value
Weist der Variablen "varEintrag" den Wert zu, der im Tabellenblatt in der Zelle in Zeile=Zeile_M und SPalte=Spalte_M steht. Der "." vor Cells bedeutet, dass sich die Zelle auf das zuletzt oberhalb dieser Zeile in einer With-Anweisung definierte Objekt bezieht.
Ich hab das Makro noch mal ein wenig aufbereitet/kommentiert. So kannst du es einfacher anpassen.
Zur Anpassung an deine Tabelle(n) musst du die Konstanten im Makro ggf. ändern.
https://www.herber.de/bbs/user/82895.txt
Gruß
Franz

Anzeige
AW: Text aus mehreren Tabellenblättern lesen
05.12.2012 21:50:44
hachi
Hallo Franz
Huuu, so ein Makro macht mich schon schwindelig.
Ich werd es morgen einmal an der Arbeit probieren.
Falls ich nicht zurecht komme, melde ich mich.
Als vorerst mal herzlichen Dank
Gruß Uwe

348 Forumthreads zu ähnlichen Themen

Anzeige
Anzeige
Anzeige
Anzeige

Beliebteste Forumthreads (12 Monate)

Anzeige

Beliebteste Forumthreads (12 Monate)

Anzeige
Anzeige
Anzeige