Clever-Excel-Forum

Normale Version: AutomatischSekunden in Stunden umwandeln
Du siehst gerade eine vereinfachte Darstellung unserer Inhalte. Normale Ansicht mit richtiger Formatierung.
Hallo, ich versuche mir gerade ein Trainingstagebuch auf Excel basis anzulegen. Ich Importiere mir xlsx Dateien, deren Werte ich mir in meine passene Tabelle reinkopiere.
Klappt alles wunderbar, bis auf das der Wert Dauer in der Orginal Datei in Sekunden reinkommt und die Länge in Meter.
Jetzt möchte ich, das die Dauer in "[hh:mm:ss]"  angezeigt wird und die Länge in km.
Ich mach das händisch mit  Zelle/86400 und das Format stelle ich dann auf Uhrzeit [37:30:55], bei den Metern Zelle /1000.
Kann man auf die Spalte mit einer Formel belegen, die das automatisch umwandelt?
Hi Richy,

meinst du das so?

Tabelle1

AB
1SekStd/Min/Sek
2750:01:15
31200:02:00
41800:03:00
5
6
7
Formeln der Tabelle
ZelleFormel
B2=WENN(A2<>"";TEXT(A2/86400;"[h]:mm:ss");"")
B3=WENN(A3<>"";TEXT(A3/86400;"[h]:mm:ss");"")
B4=WENN(A4<>"";TEXT(A4/86400;"[h]:mm:ss");"")
B5=WENN(A5<>"";TEXT(A5/86400;"[h]:mm:ss");"")
B6=WENN(A6<>"";TEXT(A6/86400;"[h]:mm:ss");"")
B7=WENN(A7<>"";TEXT(A7/86400;"[h]:mm:ss");"")

Excel Tabellen im Web darstellen >> Excel Jeanie HTML 4.8
Hallöchen,

eine Zelle mit einer Formel belegen, sodass bei Eingabe gleich dividiert wird, geht wohl nur mit einem Makro, dass auf die Eingabe reagiert.

Du kannst aber auch in irgendeine Zelle den Divisor schreiben. Dann tust Du diese Zelle kopieren, alle Zellen mit den umzuwandelnden Zahlen markieren und über "Inhalte einfügen" mit der Option "Dividieren" die Umwandlung ausführen.
Werde ich wohl über Makro machen müssen.
Wenn es geht melde ich mich
(07.07.2015, 20:29)derrichy schrieb: [ -> ]Werde ich wohl über Makro machen müssen.
Wenn es geht melde ich mich

Habe das ganze über VBA hinbekommen (zusammen gegooglet)
Hier mein code - geht bestimmt einfacher, aber funzt
Code:
Sub Import_Run()
Dim V As String
With Application.FileDialog(msoFileDialogFilePicker)
   .Show
   V = .SelectedItems(1)
End With
Application.Workbooks.OpenText Filename:=V, DataType:=xlDelimited, _
Semicolon:=True, Local:=True
ActiveSheet.Copy after:=ThisWorkbook.Worksheets(ThisWorkbook.Worksheets.Count)
Sheets(Sheets.Count).Name = "Import"
'Zelle umrechnen von sekunden zu hh:mm:ss
Sheets("Import").Range("C3").Select
Selection.Copy
Sheets("Import").Range("C4").Select
Selection.PasteSpecial Paste:=xlPasteValues, Operation:=xlNone, SkipBlanks _
:=False, Transpose:=False
Sheets("Import").Range("C3").ClearContents
Sheets("Import").Range("C3").FormulaLocal = "=C4/86400"
'Zelle umrechnen von meter in km
Sheets("Import").Range("E3").Select
Selection.Copy
Sheets("Import").Range("E4").Select
Selection.PasteSpecial Paste:=xlPasteValues, Operation:=xlNone, SkipBlanks _
:=False, Transpose:=False
Sheets("Import").Range("E3").ClearContents
Sheets("Import").Range("E3").FormulaLocal = "=E4/1000"
'Bereich kopieren
Sheets("Import").Range("A3:U3").Copy
'einfügen in erste freie Zeile in ausgabe
Sheets("Run").Cells(Rows.Count, 1).End(xlUp).Offset(1, 0).PasteSpecial xlPasteValues
Sheets("Import").Select
Application.CutCopyMode = False
Application.DisplayAlerts = False
ActiveWindow.SelectedSheets.Delete
Application.DisplayAlerts = True
ActiveWorkbook.Save

End Sub

Der Tip mit dem Makro war es :)
Hallöchen,

ich habe Dein Makro mal etwas optimiert:
Code:
Sub Import_Run()
Dim V As String
With Application.FileDialog(msoFileDialogFilePicker)
   .Show
   V = .SelectedItems(1)
End With
Application.Workbooks.OpenText Filename:=V, DataType:=xlDelimited, _
Semicolon:=True, Local:=True
ActiveSheet.Copy after:=ThisWorkbook.Worksheets(ThisWorkbook.Worksheets.Count)
ActiveSheet.Name = "Import"
'Zelle umrechnen von sekunden zu hh:mm:ss
Range("C3").Copy
Range("C4").PasteSpecial Paste:=xlPasteValues, Operation:=xlNone, SkipBlanks _
:=False, Transpose:=False
Range("C3").FormulaLocal = "=C4/86400"
'Zelle umrechnen von meter in km
Range("E3").Copy
Range("E4").PasteSpecial Paste:=xlPasteValues, Operation:=xlNone, SkipBlanks _
:=False, Transpose:=False
Range("E3").FormulaLocal = "=E4/1000"
'Bereich kopieren
Range("A3:U3").Copy
'einfügen in erste freie Zeile in ausgabe
Sheets("Run").Cells(Rows.Count, 1).End(xlUp).Offset(1, 0).PasteSpecial xlPasteValues
Application.CutCopyMode = False
Application.DisplayAlerts = False
ActiveWindow.SelectedSheets.Delete
Application.DisplayAlerts = True
ActiveWorkbook.Save
End Sub

Im Prinzip habe ich einige Selects entsorgt, nach dem Kopieren ist das neue Blatt das aktive, da können also einige Blattnamen weg und ClearContents ist auch nicht nötig, wenn Du die Zelle mit den Formeln neu befüllst.

So, und jetzt noch ein Hinweis. Du kannst auch direkt im VBA rechnen und den Zellinhalt austauschen. Das wäre dann so:

Range("C3").Value = Range("C3").Value / 86400
Range("E3").Value = Range("E3").Value / 1000

Bevor Dir noch jemand rät, .Value auch noch einzusparen, weil das Standard ist - ja, das geht. Ich machs aber aus Prinzip meistens nicht. So weiß ich gleich, dass es um den Zellwert geht und außerdem gibt es ein paar Fälle, wo das nicht geht Sad