Konwertuj stopy i cale na stopy dziesiętne - wskazówki programu Excel

Spisie treści

Aktualizacja z marca 2017 r .: Dan Ashby ma dostępną ulepszoną funkcję stóp i cali w programie Excel.

Mam arkusz kalkulacyjny programu Excel z kolumną długości w formacie 12 '6 7/8 ". Jak za pomocą programu Excel przekonwertować to na stopy dziesiętne? Nie chcę dzielić kolumny na dwie części. W jaki sposób czy mogę przekonwertować z powrotem na stopy i cale w programie Excel?

Pokazana poniżej funkcja niestandardowa feet () przyjmie pole tekstowe w opisanym przez Ciebie formacie i przekonwertuje je na stopy dziesiętne.

Funkcja niestandardowa LenText przekształci dziesiętną liczbę stóp w pole tekstowe przedstawiające stopy, cale i ułamki cali z dokładnością do 1/32 cala.

Aby wejść do funkcji niestandardowej,

  • Uruchom edytor VB z alt-F11.
  • Wstaw> Moduł.
  • Wstaw> Procedura.
  • Wpisz stopy jako nazwę procedury i wskaż, że jest to funkcja.
  • Następnie skopiuj następujący kod:
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

Powtórz dla funkcji o nazwie LenText. Użyj tego kodu:

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
Konwertuj stopy i cale na stopy dziesiętne

Kolumna A przedstawia oryginalny tekst. Kolumna B prawidłowo konwertuje na stopy wszelkie wartości, które zawierają stopy, cale i / lub ułamki cali.

Zwróć uwagę, że jeśli nie dodasz znaku stopy, przyjmuje się, że wartość to cale. (wiersz 12). Jeśli ułamkowa część cali jest nieprawidłowa, Wartość! jest zwracany (wiersz 13).

Aktualizacja: Podziękowania dla Dale'a Richmonda z Kansas City, który dostarczył aktualizację w październiku 2007 roku, aby zapobiec odpowiedzi 1 stopa 12 cali, gdy do funkcji zostanie przekazana liczba większa niż 1,999.

Interesujące artykuły...