Just nu i M3-nätverket
Gå till innehåll

Tidsformat i Excel


LarsSandvik

Rekommendera Poster

LarsSandvik

Jag har en logg i text format med bl.a. följande innehåll:

"Date/Time: 1/18/02 10:11:47 PM"

Jag vill nu ta bort "Date/Time:" och spara datum och tid i ett Excel sheet.

Om jag, via kontroll panelen, Regional options, ställer in "Your Locale" som English(United States) kan jag spara tidsangivelsen i en cell och formattera den som dd/mm/yy HH:mm:ss, men om jag har kvar min normala "Locale", English(Australia) sparas tidsangivelsen som text och kan inte formatteras som tid.

Om datumet är 12 eller mindre tas månaden som datum och datumet som månad, så det blir ändå fel.

 

Finns det något sätt att lösa detta problem utan att behöva ändra "Your Locale"?

 

Jag använder Office 2000 och Office 97.

 

Hösthälsningar från Down Under

 

[inlägget ändrat 2002-03-07 15:54:43 av LarsSandvik]

Länk till kommentar
Dela på andra webbplatser

Lars,

 

Vet inte hur du läser in textfilen till XL men här visas hur du i XL kan på ett effektivt och snabbt sätt ta bort oönskad textmassa för varje post:

 

Sub Eliminate_Date_Time()
'© 2002 Alla rättigheter XL-Dennis
Dim wsBlad As Worksheet
Dim rnOmrade As Range
Dim vaData As Variant
Dim i As Integer

Set wsBlad = ThisWorkbook.Worksheets("Sheet1")
Set rnOmrade = wsBlad.Range(Range("A1"), Range("A65536").End(xlUp))

vaData = rnOmrade.Value

For i = 1 To UBound(vaData)
   vaData(i, 1) = (Right(vaData(i, 1), Len(vaData(i, 1)) - 10))
Next i

rnOmrade.Value = vaData

End Sub

 

 

Mvh

Dennis

http://www.xldennis.com

 

Länk till kommentar
Dela på andra webbplatser

LarsSandvik

Tack för svaret, men problemet är inte att ta bort texten utan att det som blir kvar 1/18/02 10:11:47 PM uppfattas som text (obs att datumet är i amerikanskt format) och inte som datum/tid.

 

mao hur kan jag få Excel att förstå att 1/18/02 10:11:47 PM är datum/tid i amerikanskt format, utan att ändra min 'Locale' till US.

 

 

[inlägget ändrat 2002-03-08 03:03:00 av LarsSandvik]

Länk till kommentar
Dela på andra webbplatser

Lars,

 

Ibland sitter man framför datorn och sover.......

 

Följande procedur omvandlar värdena i A-kolumnen till datum: YYYY-MM-DD och i B-kolumnen extraheras klockslaget med tidsformatet: HH:MM:SS

 

Sub Convert_Date_Time()
'© 2002 Alla rättigheter XL-Dennis
Dim wsBlad As Worksheet
Dim rnOmrade As Range, rnCell As Range

Set wsBlad = ThisWorkbook.Worksheets("Sheet1")
Set rnOmrade = wsBlad.Range(Range("A1"), Range("A65536").End(xlUp))

Application.ScreenUpdating = False

For Each rnCell In rnOmrade
   With rnCell
       .Offset(0, 1).Value = Format(Right(rnCell, Len(rnCell.Value) - Application.Find(" ", rnCell.Value, 1)), "hh:mm:ss")
       .Value = Format(DateValue(rnCell.Value), "YYYY-MM-DD")
   End With
Next rnCell

Application.ScreenUpdating = True

End Sub

 

Mvh

Dennis

http://www.xldennis.com

 

[inlägget ändrat 2002-03-08 14:47:41 av XL-Dennis]

Länk till kommentar
Dela på andra webbplatser

LarsSandvik

Dennis,

 

Det verkar alltså som om jag måste skriva ett macro som skriver om "Date/Time: 1/18/02 10:12:35 PM" till "18/1/02 10:12:35 PM" för att Excel skall inse att det är datum/tid.

Skriver jag in 1/18/02 i en cell blir det alltid som text. För att Excel skall inse att ett värde är ett datum måste jag skriva in det som d/m/yy oberoende hur cellen är formatterad. Det kan dock visas som m/d/yy.

 

 

 

 

 

Länk till kommentar
Dela på andra webbplatser

Lars,

 

Uttrycket "Date/Time: 1/18/02 10:12:35 PM" tolkar XL som text.

 

När vi tar bort "Date/Time:" är det fortfarande text för XL.

 

För att XL ska förstå måste vi omvandla texten till datumvärden. Det sker enklast med hjälp av funktion DATUMVÄRDE (DATEVALUE). Denna funktion finns att tillgå också som kalkylbladsfunktion.

 

Däreftet kan vi formatera cellerna med önskat datumformat.

 

Ju större datamängd vi har att göra med desto bättre är en makrolösning.

 

Hoppas det förklarar situationen,

 

Mvh

Dennis

http://www.xldennis.com

 

Länk till kommentar
Dela på andra webbplatser

LarsSandvik

Dennis,

 

Det enklaste nu är att välja 'Locale' som English(US) när jag skall läsa in logfilerna i Excel. Logfilerna innehåller normalt 100 - 3000 events och varje event består av 10-20 rader varav den första raden har tidsangivelsen.

 

Tack för din hjälp!

 

Mvh

Lars

 

 

 

 

Länk till kommentar
Dela på andra webbplatser

  • 2 veckor senare...
LarsSandvik

Datum formatteringen är löst!

 

Jag har 'Date 1/18/02' i en cell.

Startar 'Record Macro'

Väljer cellen, Edit, Replace. Skriver in 'Date ' för 'Find What' och inget i 'Replace with' och väljer 'Replace'. Cellen innehåller nu '1/18/02' som text.

Om jag nu kör det macro jag spelat in (cellen återställd till 'Date 1/18/02') kommer cellen att innehålla 18/1/2002 som datum, precis som jag vill.

 

Jag hittade följande i VB Help:

 

Although the code locale and system locale are generally set to the same setting, they may differ in some situations. For example, in Visual Basic, Standard Edition and Visual Basic, Professional Edition, the code is not translated from English-U.S.

The system locale can be set to the user's language and country, but the code locale is always set to English-U.S. and can't be changed. In this case, the English-U.S. separators, format placeholders, and sorting order are used.

 

Mvh

Lars

 

 

 

 

 

Länk till kommentar
Dela på andra webbplatser

Arkiverat

Det här ämnet är nu arkiverat och är stängt för ytterligare svar.

×
×
  • Skapa nytt...