Top-Themen

Aktuelle Themen (A bis Z)

Administrator.de FeedbackApache ServerAppleAssemblerAudioAusbildungAuslandBackupBasicBatch & ShellBenchmarksBibliotheken & ToolkitsBlogsCloud-DiensteClusterCMSCPU, RAM, MainboardsCSSC und C++DatenbankenDatenschutzDebianDigitiales FernsehenDNSDrucker und ScannerDSL, VDSLE-BooksE-BusinessE-MailEntwicklungErkennung und -AbwehrExchange ServerFestplatten, SSD, RaidFirewallFlatratesGoogle AndroidGrafikGrafikkarten & MonitoreGroupwareHardwareHosting & HousingHTMLHumor (lol)Hyper-VIconsIDE & EditorenInformationsdiensteInstallationInstant MessagingInternetInternet DomäneniOSISDN & AnaloganschlüsseiTunesJavaJavaScriptKiXtartKVMLAN, WAN, WirelessLinuxLinux DesktopLinux NetzwerkLinux ToolsLinux UserverwaltungLizenzierungMac OS XMicrosoftMicrosoft OfficeMikroTik RouterOSMonitoringMultimediaMultimedia & ZubehörNetzwerkeNetzwerkgrundlagenNetzwerkmanagementNetzwerkprotokolleNotebook & ZubehörNovell NetwareOff TopicOpenOffice, LibreOfficeOutlook & MailPapierkorbPascal und DelphiPeripheriegerätePerlPHPPythonRechtliche FragenRedHat, CentOS, FedoraRouter & RoutingSambaSAN, NAS, DASSchriftartenSchulung & TrainingSEOServerServer-HardwareSicherheitSicherheits-ToolsSicherheitsgrundlagenSolarisSonstige SystemeSoziale NetzwerkeSpeicherkartenStudentenjobs & PraktikumSuche ProjektpartnerSuseSwitche und HubsTipps & TricksTK-Netze & GeräteUbuntuUMTS, EDGE & GPRSUtilitiesVB for ApplicationsVerschlüsselung & ZertifikateVideo & StreamingViren und TrojanerVirtualisierungVisual StudioVmwareVoice over IPWebbrowserWebentwicklungWeiterbildungWindows 7Windows 8Windows 10Windows InstallationWindows MobileWindows NetzwerkWindows ServerWindows SystemdateienWindows ToolsWindows UpdateWindows UserverwaltungWindows VistaWindows XPXenserverXMLZusammenarbeit

Excel In einer Zeile Anfangs und Enddatum ermitteln

Frage Microsoft Microsoft Office

Mitglied: Perle66

Perle66 (Level 1) - Jetzt verbinden

08.12.2012 um 19:26 Uhr, 3516 Aufrufe, 7 Kommentare

Hallo Zusammen,
vielleicht kann mir jemand helfen.
Ich habe eine Excel Tabelle (Urlaubsplan) in der in Spalte A Namen (Herr x,y,..) stehen, in Zeile 1 das fortlaufende Datum (01.01...31.07.). In Zeile 2 beim Namen x steht in irgendeiner Zelle ein U manchmal eins und manchmal mehrere hintereinander und dann irgendwo wieder. Es ist ein Urlaubsplan.
Ist es möglich die Daten auszulesen in der Form, dass vorn der Name steht, in der nächsten Spalte das Datum des ersten Urlaubstags und danach des letzten Urlaubstags?
Hier ein Bsp.
Datum 04.03. 05.03. 06.03. ... 16.04. 17.04. 18.04. 19.04. ... 20.07. 21.07. 22.07. 23.07...
Herr x U U U U U U U U
Herr y U U
Herr z U

Die Ausgabe sollte so aussehen:
Herr x 04.03. 06.03. leer 16.04. 19.04. leer 20.07.
Herr y 21.07. 22.07 leer
Herr z 20.07 leer

Das leer soll eine leere Zelle sein und zur Erkennung dienen, welche Urlaubstage zusammenhängen.

Ich hoffe, ich habe mich verständlich ausgedrückt. Erwähnen möchte ich auch, das ich von VBA und Makros so gut wie keine Ahnung habe.
Excel Version 2003 (11.0).
Vielen Dank schon jetzt für die Hilfe!
Mitglied: bastla
08.12.2012, aktualisiert um 21:41 Uhr
Hallo Perle66 und willkommen im Forum!

Wenn ich Deine etwas abenteuerliche Darstellung der Daten richtig interpretiere, sollte das etwa so gehen:
01.
Sub Urlaubszusammenfassung() 
02.
Quelle = "Tabelle1" 'Name der Quelltabelle 
03.
AbZeileQ = 1 'Zeile, in welcher die Datumswerte stehen 
04.
AbSpalteQ = 1 'Spalte, in welcher die Mitarbeiternamen stehen 
05.
Ziel = "Tabelle2" 'Name der Zieltabelle 
06.
AbZeileZ = 1 'Zeile, ab welcher die Ergebnisdaten eingetragen werden sollen 
07.
AbSpalteZ = 1 'Spalte, ab welcher die Ergebnisdaten eingetragen werden sollen 
08.
Kennz = "U" 'Kennzeichen, nach welchem gesucht werden soll 
09.
 
10.
ZeileQ = AbZeileQ + 1 'Beginne in Quelltabelle in der Zeile mit erstem Mitarbeiter 
11.
ZeileZ = AbZeileZ 'Beginne in der Zieltabelle in der ersten Ergebniszeile 
12.
MA = Worksheets(Quelle).Cells(ZeileQ, AbSpalteQ).Value 'Mitarbeiternamen lesen 
13.
Do While MA <> "" 'Solange ein Mitarbeitername gefunden wird, Schleife durchführen 
14.
    SpalteQ = AbSpalteQ + 1 'Beginne in der Quelltabelle in der Spalte mit dem ersten Datumswert 
15.
    SpalteZ = AbSpalteZ + 1 'Beginne in der Zieltabelle in der Spalte nach dem Mitarbeiternamen 
16.
    Beginn = "" 'Beginndatum des Urlaubszeitraumes löschen 
17.
    Worksheets(Ziel).Cells(ZeileZ, AbSpalteZ).Value = MA 'Mitarbeiternamen in vorgegebene Spalte der Zieltabelle übertragen 
18.
    Dat = Worksheets(Quelle).Cells(AbZeileQ, SpalteQ).Value ' Datumswert aulsesen 
19.
    Do While Dat <> "" 'Solange es noch Datumswerte gibt, Schleife wiederholen 
20.
        If Worksheets(Quelle).Cells(ZeileQ, SpalteQ).Value = Kennz Then ' Wenn das Kennzeichen in der Zeile des MA gefunden wird ... 
21.
            If Beginn = "" Then '... und nicht bereits ein Urlaubsbeginn voerher erkannt wurde ... 
22.
                Worksheets(Ziel).Cells(ZeileZ, SpalteZ).Value = Dat ' ... Urlaubsbeginn in Zieltabelle eintragen und ... 
23.
                Beginn = Dat ' ... Beginndatum zwischenspeichern 
24.
                SpalteZ = SpalteZ + 1 'nächster Eintrag in Zieltabelle erfolgt in nächster Spalte 
25.
            End If 
26.
        Else ' kein Urlaubstag 
27.
            If Beginn <> "" Then ' Wenn laufender Urlaub ... 
28.
                Ende = Worksheets(Quelle).Cells(AbZeileQ, SpalteQ - 1).Value ' ... als Enddatum den gestrigen Tag festlegen 
29.
                If Beginn <> Ende Then ' Wenn Beginn und Ende unterschiedlich (mehrtätiger Urlaub) ... 
30.
                    Worksheets(Ziel).Cells(ZeileZ, SpalteZ).Value = Ende ' ... Enddatum eintragen 
31.
                    'SpalteZ = SpalteZ + 1 'nächster Eintrag in Zieltabelle erfolgt in nächster Spalte 
32.
                End If 
33.
                Beginn = "" 'Beginndatum des Urlaubszeitraumes löschen 
34.
                SpalteZ = SpalteZ + 2 'nächster Eintrag in Zieltabelle erfolgt in übernächster Spalte - dadurch leere Zelle(n) nach Urlaub 
35.
            End If 
36.
        End If 
37.
        SpalteQ = SpalteQ + 1 'nächsten Tag des Jahres betrachten ... 
38.
        Dat = Worksheets(Quelle).Cells(AbZeileQ, SpalteQ).Value '... und dessen Datumswert zwischenspeichern 
39.
    Loop 'alle Datumswerte (des Jahres) durch 
40.
    ZeileQ = ZeileQ + 1 'nächste Zeile für Mitarbeiter in Quelltabelle 
41.
    ZeileZ = ZeileZ + 1 'nächste Zeile für Mitarbeiter in Quelltabelle 
42.
    MA = Worksheets(Quelle).Cells(ZeileQ, AbSpalteQ).Value'Mitarbeiternamen lesen 
43.
Loop 'alle Mitarbeiter durch 
44.
MsgBox "Fertig." 
45.
End Sub
Vorausgesetzt habe ich für die Quelltabelle, dass zwischen den Datumswerten und den Namen keine Zeile frei bleibt und zwischen den Namen und Datumswerten es auch keine leere Spalte gibt.

Für die Zieltabelle müsste ich ggf noch ein Löschen der bereits vorhandenen Einträge einbauen ...

Grüße
bastla

[Edit] Zeilen 31 und 34 angepasst, sodass für jeden Urlaub insgesamt 3 Zellen verwendet werden [/Edit]
Bitte warten ..
Mitglied: Perle66
08.12.2012 um 20:56 Uhr
Hallo bastla,
Du hast meine abenteuerliche Darstellung super verstanden. Ich hatte die U auch unter dem jeweiligen Tag stehen, aber die Leerzeichen sind auf einmal alle verschwunden.
Hat Dir schon mal jemand gesagt, dass Du Spitze bist! Echt Klasse wie es funktioniert!
Eine Bitte hätte ich noch, kriegst Du es hin, das wenn nur ein Urlaubstag vorhanden ist, zwei leere Zellen eingefügt werden, damit der Urlaubsbeginn immer untereinander steht.
Ich kenne mich zwar mit Formeln in Excel aus, aber für VBA hatte ich bisher keine Zeit.
Schöne das Leute wie Dich gibt! Echt Spitze, wie Du das so schnell aus dem Ärmel geschüttelt hast!!!
Viele Grüße
Perle
Bitte warten ..
Mitglied: bastla
08.12.2012 um 21:42 Uhr
Hallo Perle66!

Freut mich, wenn's soweit passt ...

Die gewünschte Änderung habe ich gleich oben vorgenommen.

Grüße
bastla
Bitte warten ..
Mitglied: Perle66
08.12.2012 um 22:11 Uhr
Hallo bastla,
schade, das funktioniert leider nicht. Es werden jetzt bei einem Urlaubstag 2 leere Zellen eingefügt und auch bei einem Zeitraum 2 leere Zellen eingefügt. Bei einem Zeitraum dürfte jedoch nur eine leere Zelle eingefügt werden, damit der Beginn des Urlaubs immer untereinander steht.
Hast Du noch eine Idee? Vielleicht habe ich ja auch was übersehen. Hab nur Zeile 34 angepasst, statt +1 jetzt plus 2.
Viele Grüße
Perle
Bitte warten ..
Mitglied: bastla
08.12.2012 um 22:17 Uhr
Hallo Perle66!

Die Zeile 31 musst Du auch noch entweder "auskommentieren" (durch einen vorangestellten Apostroph wird die Zeile zum Kommentar und daher nicht mehr ausgeführt - hatte ich oben so gemacht) oder gleich ganz löschen.

Grüße
bastla
Bitte warten ..
Mitglied: Perle66
08.12.2012 um 22:23 Uhr
Hallo bastla,
super, funktioniert perfekt. Apostroph hatte ich nicht gesehen, mein Fehler.
Vielen, vielen Dank noch mal!!!
Ich wünsche Dir ein schönes Weihnachtsfest und einen guten Rutsch im Kreis Deiner Lieben.
Bis zum nächsten Mal, vielleicht kann ich dann auch schon dem ein oder anderen mal ein wenig helfen.
Viele Grüße
Perle
Bitte warten ..
Mitglied: bastla
08.12.2012 um 22:27 Uhr
Hallo Perle66!

Die guten Wünsche erwidere ich gerne, und zum Vorsatz, hier auch helfen zu wollen, kann ich nur gratulieren ...

Grüße
bastla
Bitte warten ..
Ähnliche Inhalte
Microsoft Office
Excel Zeilen in eine Zeile anzeigen
gelöst Frage von rw72Microsoft Office2 Kommentare

Hallo, ich habe eine Excel Tabelle mit dem Aufbau Nummer Text 0000001 Test2 0000001 Test1 0000002 Titel 0000002 Titel2 ...

Batch & Shell
Sed - Zeile mit bestimmten Anfang löschen
gelöst Frage von PanubuBatch & Shell2 Kommentare

Hallo zusammen, ich habe schon mal ein wenig mit sed "herumgespielt" aber noch nicht wirklich zu dem Ergebnis gekommen, ...

Batch & Shell
Batch - Differenz zwischen zwei Zeilen ermitteln
Frage von ooDavidBatch & Shell3 Kommentare

Hi, ich habe ein Textfile in der in jeder Zeile eine Zahl steht (Sekunden). 380 428 455 458 464 ...

Batch & Shell
Vbs Anzahl gleicher Zeilen ermitteln
Frage von goodbytesBatch & Shell1 Kommentar

Hallo, in einem Array hab ich zehn mittels Semikolon getrennte Strings als Datensätze, die Datensätze sind durch vbCrLf getrennt. ...

Neue Wissensbeiträge
Mac OS X

MacOS wo ist die Tilde ?

Tipp von Alchimedes vor 55 MinutenMac OS X

Hallo, ich hab eine MacOS qwertz Keyboard auf US Layout umgestellt da die Sonderzeichen besser ereichbar sind. Leider fehlt ...

Datenschutz

Weitere Inforamtionen zum Sicherheitsproblem BeA

Information von Penny.Cilin vor 7 StundenDatenschutz

Im folgenden ein weiterer Bericht über die Sicherheitsprobleme von Bea. Fataler Konstruktionsfehler im besonderen elektronischen Anwaltspostfach Gruss Penny

Windows 10

Systemdienste behalten nach Win10 inplace-Upgrade nicht die ggf. modifizierte Startart bei

Tipp von DerWoWusste vor 9 StundenWindows 103 Kommentare

Stellt Euch vor, Ihr habt ein Win10 System und modifiziert dort die Startart von Systemdiensten. Zum Beispiel wollt Ihr ...

Microsoft Office

Deaktivieren von Startbildschirm und Backstage-Ansicht in Office 2016 per Batch-Datei

Anleitung von SarekHL vor 12 StundenMicrosoft Office17 Kommentare

Guten Morgen zusammen! Ich habe mir gestern (auch mit Hilfe dieses Boards) ein Script gebastelt, um in Office 2016 ...

Heiß diskutierte Inhalte
Netzwerke
NTFS-Berechtigung
Frage von Daoudi1973Netzwerke23 Kommentare

Hallo zusammen und frohes neues Jahr (Sorry, ich bin spät dran) Meine Frage: 1- Ich habe einen Ordner im ...

Batch & Shell
AD-Abfrage in Batchdatei und Ergebnis als Variable verarbeiten
gelöst Frage von Winfried-HHBatch & Shell19 Kommentare

Hallo in die Runde! Ich habe eine Ergänzungsfrage zu einem alten Thread von mir. Ausgangslage ist die Batchdatei, die ...

Microsoft Office
Deaktivieren von Startbildschirm und Backstage-Ansicht in Office 2016 per Batch-Datei
Anleitung von SarekHLMicrosoft Office17 Kommentare

Guten Morgen zusammen! Ich habe mir gestern (auch mit Hilfe dieses Boards) ein Script gebastelt, um in Office 2016 ...

Windows 10
Netbook erkennt Soundkarte nicht - keinerlei Info zum Hersteller und Modell vom Netbook und Hardware bekannt
Frage von fyrb38Windows 1017 Kommentare

Guten Tag, meine Schwester reist in einigen Wochen für ein paar Monate ins Ausland und hat sich dafür ein ...