2009-04-23 15 views
0

J'essaie de diviser une somme d'entiers par une somme de [h]: mm: ss pour obtenir [s]. Je le fais par ce qui me semble être cette contorsion sauvage.Diviser un entier par une heure en utilisant VBA (Excel)

temp = Split(Format(Range("D" & rInx).Value, "hh:mm:ss"), ":", -1, vbTextCompare) 
answerDelay = CInt(temp(0)) * 3600 + CInt(temp(1)) * 60 + CInt(temp(2)) 

Parce que cela semble assez étrange pour moi je pensais que je le mettrais là pour vous le cerveau à regarder et me dire une meilleure façon de le faire.

C'est la fin d'une formule sur une feuille de calcul en bref serait

range(B1)=838 
range(C1)=26:38:44 
range(D1)=range(C1)/range(B1) 

La réponse à cela est 109 secondes.

Cela fonctionne comme je l'ai ici, je ne suis pas satisfait de ma solution.

Avez-vous une meilleure solution?

Merci d'avance! Craig

Répondre

0

Vous pouvez utiliser un TimeSpan pour convertir le temps en secondes et le diviser ensuite.

Je havn't testé mais somthing comme celui-ci en C#:

var seconds = new TimeSpan(26, 38, 44).Seconds; 

Est-ce que vous vouliez dire?

+0

Non ce n'est pas mais j'apprécie certainement votre réponse opportune, j'utilise VBA pas C++ – CABecker

+0

VBA a une fonction DateDiff, mais il n'y a aucun équivalent de TimeSpan qui existe en C# – Lunatik

+0

Désolé je n'ai pas remarqué que c'était VBA et Excel. Je vais ouvrir les yeux maintenant :) – asgerhallas

3

Excel conserve les durées en fractions d'un jour, c'est-à-dire 24 heures = 1,0. Pour convertir en secondes, il suffit de multiplier par 24 * 60 * 60.

+0

En d'autres termes, si vous voulez que la plage D1 soit la réponse en secondes, alors 'range (d1) = range (c1)/range (b1) * 24 * 60 * 60'. – mischab1

Questions connexes