2012-01-18 4 views
1

J'ai une feuille de calcul avec des valeurs comme suit:Convertir minutes en secondes

1: 29,460

je dois le convertir en

89,460

J'ai une énorme quantité de ces jeux compensations. Je peux soit le faire en Excel ou peut-être en utilisant javascript.

Tout conseil sur une formule appréciée!

+3

Comment allez-vous nourrir Excel à javascript? Vouliez-vous dire VBA? – GSerg

+0

Vous pouvez utiliser une macro Excel pour cela, je pense. http://office.microsoft.com/fr-fr/excel-help/about-macros-in-excel-HP005201201.aspx Commencez par obtenir des valeurs de temps (1: 29.460, etc.) en utilisant regexp. puis divisez-le par: pour obtenir des minutes parties et secondes partie. Ensuite, vous pouvez obtenir le résultat requis par ((minutes * 60) + secondes). –

Répondre

4

est ici une solution JavaScript:

function convert(input) { 
    var parts = input.split(':'), 
     minutes = +parts[0], 
     seconds = +parts[1]; 
    return (minutes * 60 + seconds).toFixed(3); 
} 

convert('1:29.460'); // '89.460' 
3

Vous pouvez utiliser le code comme ceci:

function toSeconds(str) { 
    var pieces = str.split(":"); 
    var result = Number(pieces[0]) * 60 + Number(pieces[1]); 
    return(result.toFixed(3)); 
} 

toSeconds("1:29.460"); // returns 89.460 

Vous pouvez le voir travailler ici: http://jsfiddle.net/jfriend00/RrZ4W/

0

Vous formatez correctement vos cellules, excel stocke vos informations en tant que hh: mm.

Vous devez ajouter la colonne des heures dans votre cellule comme suit: 0:1:29.460 et assurez-vous qu'elle est définie sur le format de l'heure.

Puis dans une autre colonne assurez-vous que le format de cellule est défini sur le nombre et ajouter la formule suivante (en supposant que votre temps est stockée dans la cellule A1):

=A1*24*60*60 
+0

À cause du. Excel sait que 1: 29.460 est 1 minute 29.46 secondes (contrairement à 1:29 qui serait interprété comme 1 heure 29 minutes), donc = A1 * 86400 devrait fonctionner sans aucun re-formatage ..... ou si les données sont un valeur en temps réel, vous pouvez format personnalisé comme [s] .000 pour l'affichage de 89.460 –

0

Ecrire fonction suivante dans vos modules VBA

Public Function FormatMinutes(ByVal stime) As String 
    Dim hour: hour = Mid(stime, 1, InStr(1, stime, ":") - 1) 
    Dim minute: minute = CInt(Mid(stime, InStr(1, stime, ":") + 1, InStr(1, stime, ".") - InStr(1, stime, ":") - 1)) 
    FormatMinutes = (hour * 60 + minute) & Mid(stime, InStr(1, stime, "."), Len(stime)) 
End Function 

Pour l'utiliser, il suffit de mettre =FormatMinute(A1) dans le formulaire.

1

Pour donner toute l'image, voici la solution VBA (UDF):

Public Function ConvertToSecond(r As Range) 
Dim arr As Variant, lMinutes As Long, lSeconds As Double 
Debug.Print (r.Value) 
arr = Split(r.Value, ":") 
lMinutes = arr(0) 
lSeconds = CDbl(Replace(arr(1), ".", ",")) 
ConvertToSecond = Format(lMinutes * 60 + lSeconds, "#0.0##") 
End Function 
Questions connexes