Clever-Excel-Forum

Normale Version: Zeiterfassungsdaten auswerten
Du siehst gerade eine vereinfachte Darstellung unserer Inhalte. Normale Ansicht mit richtiger Formatierung.
Seiten: 1 2 3 4
Code:
usedrange.Columns(1).numberformat= "TT.MM.JJJJ"
Verzichte auf:
- select in VBA
- activate in VBA
- verbundene Zellen in VBA
- format(date,"xx.xx.xxxx")
Hallo,

hier nochmal die Datei, bei der ich einige der Anmerkungen von snb verarbeitet habe.

vor der Wandlung stehen die Daten so in der Spalte A:
[attachment=37426]

nach der Datumswandlung:
[attachment=37427]

Wie erkennbar ist, werden die ersten 12 Tages-Daten als Monat gewandelt.

Nun meine Fragen:
Wie formatiere ich diese Daten (Datümer) in das bei uns übliche richtige Datum?

Wie kann ich den Text, der in A6 steht per VBA in ein richtiges Datum mit dem Monatsersten umwandeln, bzw. das Jahr und den Monat auslesen, um diese in der Zeile
PHP-Code:
            .Cells(i1) = VBA.DateSerial(Year(Monat), Month(Monat), Val(.Cells(i2))) 
verwenden zu können.

Hier nun die Datei mit Makro: [attachment=37428]
Hallo

ich habe gerade was ganz einfaches probiert, bei mir hat es geklappt. Ich habe eine neue Spalte eingefügt, auf unser Datum formatiert, das Datum als Text kopiert, und mit Suchen/Tauschen das "/" Zeichen gegen einen Punkt getauscht. Bei mir stimmt das Datum.  Hift dir das weiter??

mfg Gast 123
setze diese Zeile davor .Cells(i, 1).NumberFormat = "dd.mm.yyyy"
Hallo Ralf,

aaaah, jetzt habe ich auch verstanden, wo die Zeile von snb hin soll!

Danke euch Dreien!

Ich weiß noch nicht, wie die kommenden Monats-Listen genau aussehen und woher Excel dann wissen soll, daß das dann der Februar oder März, ... ist.

Es ist noch interessant zu wissen, wie ich den Text, der in A6 steht per VBA in ein richtiges Datum mit dem Monatsersten umwandeln kann, bzw. das Jahr und den Monat auslesen, um diese in der Zeile
Code:
.Cells(i, 1) = VBA.DateSerial(Year(Monat), Month(Monat), Val(.Cells(i, 2)))
verwenden zu können.
Hi Ralf,

also, wenn Du aktuelle Daten verwenden willst, dann

DateSerial(Year(Date), Month(Date), 1)

("VBA." ist nicht erforderlich)

Falls Du den Text "Januar 2021" umwandeln willst, dann mit etwas Glück was in der Art (In Deiner Beispieldatei geht's)

Cells(6, 1).Value = Cells(6, 1).Text
Schneller als mit Arrays geht's nicht:

Code:
Sub M_snb()
  Sheets("Rohwerte").UsedRange.Copy Sheets("Datum").Range("A1")

  c00 = " " & Sheets("Datum").Cells(6, 1)
  With Sheets("Datum").UsedRange.Columns(2)
    .NumberFormat = "DD.MM.YYYY"
    sn = .Value
 
    For j = 1 To UBound(sn)
      If Not IsEmpty(sn(j, 1)) Then sn(j, 1) = CDate(sn(j, 1) & c00)
    Next
       
    .Value = sn
  End With
End Sub
Hi,

@André: so hat es geklappt.
@Dolph: das funktioniert auch, Geschwindigkeit muß ich noch vergleichen mit dem anderen Code.

Datenzeilen: 6121 Zeilen
Makro ohne Array-Code: 1,531 Sek., 1,515 Sek.
Makro mit Array-Code: 0,235 Sek., 0,203 Sek.

Gruß Ralf
Seiten: 1 2 3 4