Excel Feet to Inches - Excel-tips

Inhoudsopgave

Update maart 2017

Dan Ashby heeft een verbeterde voeten-en-inch-in-Excel-functie beschikbaar.

Ik heb een Excel-spreadsheet met een kolom met lengtes in het formaat 12 '6 7/8'. Hoe kan ik Excel gebruiken om dit om te zetten in decimalen in voet? Ik wil de kolom niet in twee delen splitsen. Hoe kan ik terug converteren naar voeten en inches in Excel ?.

De aangepaste functie feet () die hieronder wordt weergegeven, neemt een tekstveld in de indeling die u beschrijft en converteert dit naar decimale feet.

De aangepaste functie LenText converteert een decimaal aantal voet naar een tekstveld met voet, inches en breuken in inches tot op 1/32 ".

Om de aangepaste functie in te voeren:

  • Start de VB-editor met alt-F11.
  • Invoegen> Module.
  • Invoegen> Procedure.
  • Typ voeten als de naam van de procedure en geef aan dat het een functie is.
  • Kopieer vervolgens de volgende code:

    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
  • Herhaal voor de functie genaamd LenText. Gebruik deze 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

Kolom A toont de originele tekst. Kolom B converteert alle waarden die feet, inches en / of fractionele inches bevatten correct naar feet.

Houd er rekening mee dat als u het voetteken niet opneemt, wordt aangenomen dat de waarde inches is. (rij 12). Als het fractionele gedeelte van de inches niet geldig is, wordt Value! wordt geretourneerd (rij 13).

Opmerking: met dank aan Dale Richmond uit Kansas City die in oktober 2007 een update heeft gegeven om een ​​antwoord van 30 cm tot 30 cm te voorkomen wanneer een getal groter dan 1,999 wordt doorgegeven aan de functie.

Interessante artikelen...