Atjaunināt 2017. gada martu
Dan Ashby ir pieejama uzlabota funkcija pēdu un collu izcilībā.
Man ir Excel izklājlapa ar garuma kolonnu 12 '6 7/8 "formātā. Kā es varu izmantot Excel, lai to pārvērstu decimāldaļās? Es nevēlos sadalīt kolonnu divās daļās. Tad kā vai es programmā Excel varu pārvērst atpakaļ pēdās un collās ?.
Zemāk redzamās pielāgotās funkcijas pēdas () aizņem teksta lauku aprakstītajā formātā un pārveido to par decimāldaļām.
Pielāgotā funkcija LenText pārveidos decimāldaļu pēdu teksta laukā, kas parāda pēdas, collas un daļējās collas līdz tuvākajai 1/32 ".
Lai ievadītu pielāgoto funkciju:
- Sāciet VB redaktoru ar alt-F11.
- Ievietot> Modulis.
- Ievietot> Procedūra.
- Ierakstiet pēdas kā procedūras nosaukumu un norādiet, ka tā ir funkcija.
-
Pēc tam nokopējiet šādu kodu:
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
-
Atkārtojiet funkciju LenText. Izmantojiet šo 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
A slejā tiek parādīts sākotnējais teksts. B slejā pareizi pārvērš pēdas par visām vērtībām, kurās ir pēdas, collas un / vai daļējas collas.
Ņemiet vērā, ka, ja jūs neiekļaujat pēdas zīmi, tiek pieņemts, ka tā vērtība ir collas. (12. rinda). Ja collu daļa nav derīga, vērtība! tiek atgriezta (13. rinda).
Piezīme: Paldies Deilam Ričmondam no Kanzassitijas, kurš 2007. gada oktobrī iesniedza atjauninājumu, lai novērstu atbildi uz 1 pēdu 12 collas, ja funkcijai tiek pārsūtīts skaitlis, kas lielāks par 1,999.