Convertir des pieds et des pouces en pieds décimaux - Conseils Excel

Table des matières

Mise à jour de mars 2017: Dan Ashby a une fonction améliorée de pieds et pouces dans Excel disponible.

J'ai une feuille de calcul Excel avec une colonne de longueurs au format 12 '6 7/8 ". Comment puis-je utiliser Excel pour convertir cela en pieds décimaux? Je ne veux pas diviser la colonne en deux parties. Ensuite, comment puis-je reconvertir en pieds et en pouces dans Excel?.

La fonction personnalisée feet () illustrée ci-dessous prendra un champ de texte dans le format que vous décrivez et le convertira en pieds décimaux.

La fonction personnalisée LenText convertira un nombre décimal de pieds en un champ de texte affichant les pieds, pouces et fractions de pouces au 1/32 "le plus proche.

Pour accéder à la fonction personnalisée,

  • Démarrez l'éditeur VB avec alt-F11.
  • Insérer> Module.
  • Insérer> Procédure.
  • Tapez pieds comme nom de la procédure et indiquez qu'il s'agit d'une fonction.
  • Ensuite, copiez le code suivant:
Public Function feet(LenString As String) Dim FootSign As Integer Dim InchSign As Integer Dim SpaceSign As Integer Dim FracSign As Integer Dim InchString As String Dim Word2 As String ' Copyright 1999, 2005.com LenString = Application.WorksheetFunction.Trim(LenString) 'The find function returns an error when the target is not found 'Resume Next will prevent VBA from halting execution. On Error Resume Next FootSign = Application.WorksheetFunction.Find("'", LenString) If IsEmpty(FootSign) Or FootSign = 0 Then ' There are no feet in this expression feet = 0 FootSign = 0 Else feet = Val(Left(LenString, FootSign - 1)) End If ' Handle the case where the foot sign is the last character If Len(LenString) = FootSign Then Exit Function ' Isolate the inch portion of the string InchString = Application.WorksheetFunction.Trim(Mid(LenString, FootSign + 1)) ' Strip off the inch sign, if there is one InchSign = Application.WorksheetFunction.Find("""", InchString) If Not IsEmpty(InchSign) Or InchSign = 0 Then InchString = Application.WorksheetFunction.Trim(Left(InchString, InchSign - 1)) End If ' Do we have two words left, or one? SpaceSign = Application.WorksheetFunction.Find(" ", InchString) If IsEmpty(SpaceSign) Or SpaceSign = 0 Then ' There is only one word here. Is it inches or a fraction? FracSign = Application.WorksheetFunction.Find("/", InchString) If IsEmpty(FracSign) Or FracSign = 0 Then 'This word is inches feet = feet + Val(InchString) / 12 Else ' This word is fractional inches feet = feet + (Val(Left(InchString, FracSign - 1)) / Val(Mid(InchString, FracSign + 1))) / 12 End If Else ' There are two words here. First word is inches feet = feet + Val(Left(InchString, SpaceSign - 1)) / 12 ' Second word is fractional inches Word2 = Mid(InchString, SpaceSign + 1) FracSign = Application.WorksheetFunction.Find("/", Word2) If IsEmpty(FracSign) Or FracSign = 0 Then ' Return an error feet = "VALUE!" Else If FracSign = 0 Then feet = "VALUE!" Else feet = feet + (Val(Left(Word2, FracSign - 1)) / Val(Mid(Word2, FracSign + 1))) / 12 End If End If End If End Function

Répétez pour la fonction appelée LenText. Utilisez ce code:

Public Function LenText(FeetIn As Double) ' This function will change a decimal number of feet to the text string ' representation of feet, inches, and fractional inches. ' It will round the fractional inches to the nearest 1/x where x is the denominator. ' Copyright 1999.com Denominator = 32 ' must be 2, 4, 8, 16, 32, 64, 128, etc. NbrFeet = Fix(FeetIn) InchIn = (FeetIn - NbrFeet) * 12 NbrInches = Fix(InchIn) FracIn = (InchIn - NbrInches) * Denominator Numerator = Application.WorksheetFunction.Round(FracIn, 0) If Numerator = 0 Then FracText = "" ElseIf InchIn>= (11 + (31.4999999 / 32)) Then NbrFeet = NbrFeet + 1 NbrInches = 0 FracText = "" ElseIf Numerator = Denominator Then NbrInches = NbrInches + 1 FracText = "" Else Do ' If the numerator is even, divide both numerator and divisor by 2 If Numerator = Application.WorksheetFunction.Even(Numerator) Then Numerator = Numerator / 2 Denominator = Denominator / 2 Else FracText = " " & Numerator & "/" & Denominator Exit Do End If Loop End If LenText = NbrFeet & "' " & NbrInches & FracText & """" End Function
Convertir des pieds et des pouces en pieds décimaux

La colonne A montre le texte original. La colonne B convertit correctement en pieds toutes les valeurs contenant des pieds, des pouces et / ou des fractions de pouces.

Notez que si vous n'incluez pas le signe du pied, la valeur est supposée être en pouces. (ligne 12). Si la partie fractionnaire des pouces n'est pas valide, Value! est renvoyé (ligne 13).

Mise à jour: Merci à Dale Richmond de Kansas City qui a fourni une mise à jour en octobre 2007 pour éviter une réponse de 1 pied 12 pouces lorsqu'un nombre supérieur à 1,999 est passé à la fonction.

Articles intéressants...