Supportnet Computer
Planet of Tech

Supportnet / Forum / Tabellenkalkulation

Datum in Mappe finden





Frage

Hallo Zusammen, suche seit ein paar Tagen eine Lösung für folgendes Problem: Ich habe eine Mappe mit "Kalenderblättern". Also für jeden Monat ein Kalenderblatt. Die Datems habe ich mit der Formel A1+1, B1+1 usw. erzeugt. Auf einem seperaten Tabellenblatt gebe ich das Suchdatum ein, welches ich nun in den Kalenderblättern finden möchte. Wird das eingegebene Datum gefunden, soll in der entsprechenden Spalte (Spalte des gefundenen Datums) die Zellen 4 bis 50 auf das Tabellenblatt "Gefunden" (Ab Zelle AP2) kopiert werden. In der Beispieldatei sind die Zellen 4 bis 50 leer. In der Ursprungsdatei stehen dort Mitarbeiterdaten. Aber der Inhalt ist ja für die Code-Erstellung eigentlich nicht relevant. Ganz deutlich wird es mit dieser Beispieldatei: [url]http://www.netupload.de/detail.php?img=08e1fb749e85e25ae305295f008eb40f.xls[/url] Bevor ich jetzt einen Rüffel wegen Crossposting bekommen: Hatte die Frage in spotlight gestellt, allerdings bis jetzt ohne Ergebnis, aber ich bräuchte eine evtl. Lösung so schnell wie möglich. Den Eintrag in spotlight werde ich natürlich dann schliessen. EINE BITTE: [b]Bitte nur Lösungen mit CODE[/b] Bin für jeden Vorschlag dankbar Gruss Tom

Antwort 1 von coros

Hi Ton,

sorry, aber bei Deinem Link kommt keine Exceldatei, sondern eine Fehlermeldung, dass die Seite nicht angezeigt werden kann. Es gibt sicherlich eine Lösung. Da ich aber von Natur aus ein fauler Hund bin und keine Lust habe mir Deine Datei nach zu bauen, wäre es schön, wenn Du den Link zu Deiner Datei aktualisieren würdest, damit ich die Datei Downlaoden kann.

MfG,
Oliver
Da hier der einzige Lohn für die Helfer eine Rückmeldung ist, wäre es nett, wenn Du ein
Feedback abgeben könntest, ob der Lösungsvorschlag Dein Problem gelöst hat.

Antwort 2 von Tom8

Hallo Oliver,

keine Ahnung, warum der Link nicht will. Neuer Versuch:

http://www.netupload.de/detail.php?img=9bf710ed9dae40e2df966a06a2b2...

Vielen Dank

Gruss
Tom

Antwort 3 von yps

hi,

Sub blabla()
datum = Sheets("Datum eingeben").Range("B5")
suche = Left(datum, 2)
blattname = Format(Month(datum), "mmmm") & " " & Right(Year(datum), 2)
Set gefunden = Sheets(blattname).Rows(1).Find(suche, LookIn:=xlValues)
MsgBox ("Gefunden in Blatt: " & blattname & " Adresse " & gefunden.Address)
End Sub

den rest schaffst du alleine ?

cu Micha

Antwort 4 von Event

üps...

Antwort 5 von coros

Hallo Tom, hallo Micha,

so, ich habe mir die Datei mal angesehen. Mich, Dein Code funktioniert nicht. Hast Du Dir die Datei mal richtig angesehen. Hinter den Tageszahlen der einzelnen Tabellenblättern, steht ein Datum. Wobei ich nicht verstehe, warum. Somit funktioniert Dein Code nicht

Mit nachfolgendem Makro funktioniert es aber. Kopiere es in ein das VBA Projekt des Tabellenblattes, in dem das Datum eingegeben wird.

Option Explicit

Private Sub Worksheet_Change(ByVal Target As Range)
Dim Wiederholungen As Integer, Tag, Monat, Jahr, Blattname As String
Application.ScreenUpdating = False
If Target.Cells.Address = "$B$5" Then
Tag = Format(Range("B5"), "dd")
Monat = Format(Range("B5"), "mmmm")
Jahr = Format(Range("B5"), "yy")
Blattname = Monat & " " & Jahr
For Wiederholungen = 1 To 31
If Format(Sheets(Blattname).Cells(1, Wiederholungen), "dd") = Tag Then
Sheets(Blattname).Columns(Wiederholungen).Copy
Sheets("Gefunden").Range("AP1").PasteSpecial Paste:=xlPasteValues
End If
Next
End If
End Sub


Wobei es ratsam wäre, dass Du den Monatszahlen in den Tabellenblättern eine andere Farbe als Weiß gibst, da die entsprechende Spalte kopiert wird, aber eingefügt werden nur die Inhalte. Das muss leider so sein, da Du die Tageszahlen mit einer Formel erzeugst. In Blatt Gefunden würde Dir dann aber nicht die Tageszahl angezeigt werden. Was ich noch nicht so ganz verstanden habe, soll die gefundenen Spalte immer in Spalte AP kopiert werden oder immer in die nächst freie Spalte neben AP.

Du solltest noch in der Symbolleiste unter "Extra => Optionen" in der Registerkarte "Berechnung" "1904-Datumswerte" aktivieren.

Test das mal. Wenn Du nicht klar kommst oder bei Fragen melde Dich noch mal.

MfG,
Oliver
Da hier der einzige Lohn für die Helfer eine Rückmeldung ist, wäre es nett, wenn Du ein
Feedback abgeben könntest, ob der Lösungsvorschlag Dein Problem gelöst hat.

Antwort 6 von Tom8

Hallo Micha u. Oliver,

erstmal vielen Dank für eure Lösungen. Insbesondere an Oliver. Dein Code funzt hervorragend.
Deine Fragen:
Warum ein Datum:
Um beim kopieren zu sehen, wann ein neuer Monat beginnt u. falls ich später nicht nur den Tag (die ersten beiden Ziffern) sehen möchte, sondern durch Formatumstellung das komplette Datum.
Weiße Schriftfarbe:
Im Original ist die Schriftfarbe nicht weiß, hatte ich nur zur Verdeutlichung so gemacht.
Warum eigentlich auf 1904-Datumswerte umstellen ? Funktioniert doch auch so.
Das mit der Zielspalte AP ist übrigens korrekt so. Dient zum Auslesen der Mitarbeiterdaten unter dem gefundenem Datum.
Dazu hätte ich noch eine Frage:
In deinem Code wird die komplette Spalte kopiert. Ist es möglich nur die Zeilen 4 bis 50 der entsprechenden Spalte nach AP zu kopieren ?

Wäre schön, wenn du mir nochmal helfen könntest. Aber auch so, funktioniert dein Code ganz toll.

MfG
Tom

Antwort 7 von ypsilon

hi,
wenn ir mal jemand erklären kann warum mein code nicht funktionieren soll ??
hat das jemand ausprobiert ? der läuft !
ich habe nur keine fehlerroutine drin die anspringt wenn es das tabellenblatt nicht gibt
wetten dass ? *grins*

Sub blabla()
datum = Sheets("Datum eingeben").Range("B5")
suche = Left(datum, 2)
blattname = Format(DateSerial(Year(Date), Month(datum), 1), "mmmm") & " " & Right(Year(datum), 2)
Set gefunden = Sheets(blattname).Rows(1).Find(suche, LookIn:=xlValues)
If Not gefunden Is Nothing Then
With Sheets(blattname)
.Range(.Cells(4, gefunden.Column), .Cells(50, gefunden.Column)).Copy Destination:=Sheets("Gefunden").Range("AP1")
End With
Else
MsgBox ("Datum wurde nicht nicht gefunden")
End If
End Sub

cu Micha

Antwort 8 von coros

Hallo an alle,

Ypsilon, ich habe den ersten Code ausprobiert und der hat nicht funktioniert. Der zweite von Dir funktioniert nun. Du kannst Dich schon drauf verlassen, wenn ich schreibe Dein Code funktioniert nicht. ;-)

Micha, anbei der Code, der Dir die Spalte von Zeile 4 bis Spalte 50 kopiert.

Option Explicit

Private Sub Worksheet_Change(ByVal Target As Range)
Dim Wiederholungen As Integer, Tag, Monat, Jahr, Blattname As String
Application.ScreenUpdating = False
If Target.Cells.Address = "$B$5" Then
Tag = Format(Range("B5"), "dd")
Monat = Format(Range("B5"), "mmmm")
Jahr = Format(Range("B5"), "yy")
Blattname = Monat & " " & Jahr
For Wiederholungen = 1 To 31
If Format(Sheets(Blattname).Cells(1, Wiederholungen), "dd") = Tag Then
With Sheets(Blattname)
.Range(.Cells(4, Wiederholungen), .Cells(50, Wiederholungen)).Copy _
Sheets("Gefunden").Range("AP1")
End With
End If
Next
End If
End Sub


Ich hoffe, dass alles nun zu Deiner Zufriedenheit ist. Wenn nicht, dann melde Dich noch mal.

MfG,
Oliver
Da hier der einzige Lohn für die Helfer eine Rückmeldung ist, wäre es nett, wenn Du ein
Feedback abgeben könntest, ob der Lösungsvorschlag Dein Problem gelöst hat.

Antwort 9 von ypsilon

hi Oliver,
mit dem zweiten teil deines postings meintest du Tom ! und bei mir war das kopieren auch schon drin ;-)

jetzt aber mal ne eigene frage in dieser sache:

datum = Date

warum kommt hier was anderes raus ?

blattname = Format(Month(datum), "mmmm")

hier stimmts immer:

blattname = Format(DateSerial(Year(Datum), Month(datum), 1), "mmmm")

*grummel*

datum ist doch ein eindeutig ?

cu Micha

Antwort 10 von coros

Moin Micha,

das kann ich Dir leider auch nicht sagen, da ich mich damit noch nicht eingehend beschäftigt habe. Wobei ich fine, dass diese beiden Formatbefehle doppelt gemoppelt sind, denn der Befehl

Format(datum, "mmmm")

liefert den Monatsnamen der Variablen "datum" durch das Format "mmmm". Warum noch aufsplitten in Month?

Sorry, dass ich da keine richtige Antwort drauf habe.

MfG,
Oliver
Da hier der einzige Lohn für die Helfer eine Rückmeldung ist, wäre es nett, wenn Du ein
Feedback abgeben könntest, ob der Lösungsvorschlag Dein Problem gelöst hat.

Antwort 11 von yps

hi Oliver,
das ist ´ne richtige antwort !

mit Format(Month(datum), "mmmm") formatiert man ja den MONAT (also eine zahl von 1 bis 12) als komplettdatum
*kopfklatsch*

thx

cu Micha

Antwort 12 von Tom8

Guten Morgen ihr Beiden,

also meinen herzlichsten Dank an euch. Beide Lösungen funktionieren einwandfrei ! Vor allem bei Olivers Lösung freut mich, dass ich sogar das Format vom Tagesdatum ändern kann u. das Datum wird trotzdem gefunden !
Ihr habt mir sehr geholfen.

Danke nochmal

Gruss
Tom