Actualización de marzo de 2017: Dan Ashby tiene disponible una función mejorada de pies y pulgadas en Excel.
Tengo una hoja de cálculo de Excel con una columna de longitudes en el formato de 12 '6 7/8 ". ¿Cómo puedo usar Excel para convertir esto a pies decimales? No quiero dividir la columna en dos partes. Entonces, ¿cómo ¿Puedo volver a convertir a pies y pulgadas en Excel?
La función personalizada pies () que se muestra a continuación tomará un campo de texto en el formato que usted describe y lo convertirá a pies decimales.
La función personalizada LenText convertirá un número decimal de pies en un campo de texto que muestra pies, pulgadas y pulgadas fraccionarias al 1/32 "más cercano.
Para ingresar a la función personalizada,
- Inicie el editor de VB con alt-F11.
- Insertar> Módulo.
- Insertar> Procedimiento.
- Escriba pies como nombre del procedimiento e indique que es una función.
- Luego, copia el siguiente código:
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
Repita para la función llamada LenText. Utilice este código:
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
La columna A muestra el texto original. La columna B convierte correctamente en pies cualquier valor que contenga pies, pulgadas y / o pulgadas fraccionarias.
Tenga en cuenta que si no incluye el signo del pie, se supone que el valor es pulgadas. (fila 12). Si la parte fraccionaria de las pulgadas no es válida, ¡Valor! se devuelve (fila 13).
Actualización: Gracias a Dale Richmond de Kansas City que proporcionó una actualización en octubre de 2007 para evitar una respuesta de 1 pie y 12 pulgadas cuando se pasa un número superior a 1.999 a la función.