Picioare Excel până la inci - Sfaturi Excel

Cuprins

Actualizare martie 2017

Dan Ashby are disponibilă o funcție îmbunătățită de picioare și inci.

Am o foaie de calcul Excel cu o coloană de lungimi în formatul de 12 '6 7/8 ". Cum pot folosi Excel pentru a converti acest lucru în picioare zecimale? Nu vreau să împart coloana în două părți. Apoi, cum pot converti înapoi în picioare și inci în Excel ?.

Picioarele funcției personalizate () afișate mai jos vor prelua un câmp text în formatul pe care îl descrieți și îl vor converti în picioare zecimale.

Funcția personalizată LenText va converti un număr zecimal de picioare într-un câmp de text care afișează picioarele, inci și centimetri fracționali la cel mai apropiat 1/32 ".

Pentru a introduce funcția personalizată:

  • Porniți editorul VB cu alt-F11.
  • Inserare> Modul.
  • Insert> Procedură.
  • Tastați picioare ca nume al procedurii și indicați că este o funcție.
  • Apoi, copiați următorul cod:

    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
  • Repetați pentru funcția numită LenText. Folosiți acest cod:

    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

Coloana A arată textul original. Coloana B convertește corect în picioare orice valori care conțin picioare, țoli și / sau țoli fracționate.

Rețineți că, dacă nu includeți semnul piciorului, valoarea se presupune a fi centimetri. (rândul 12). Dacă porțiunea fracționată a centimetrilor nu este validă, valoare! este returnat (rândul 13).

Notă: Mulțumesc lui Dale Richmond din Kansas City, care a furnizat o actualizare în octombrie 2007 pentru a preveni un răspuns de 1 picior 12 inci atunci când un număr mai mare de 1.999 este trecut la funcție.

Articole interesante...