Μετατροπή ποδιών και ιντσών σε δεκαδικά πόδια - Συμβουλές Excel

Πίνακας περιεχομένων

Ενημέρωση Μαρτίου 2017: Ο Dan Ashby διαθέτει μια βελτιωμένη λειτουργία ποδιών και ιντσών σε excel

Έχω υπολογιστικό φύλλο Excel με στήλη μήκους με τη μορφή 12 '6 7/8 ". Πώς μπορώ να χρησιμοποιήσω το Excel για να το μετατρέψω σε δεκαδικά πόδια; Δεν θέλω να χωρίσω τη στήλη σε δύο μέρη. Τότε, πώς μπορώ να μετατρέψω σε πόδια και ίντσες στο Excel ;.

Τα πόδια προσαρμοσμένης λειτουργίας () που εμφανίζονται παρακάτω θα λάβουν ένα πεδίο κειμένου με τη μορφή που περιγράφετε και θα το μετατρέψετε σε δεκαδικά πόδια.

Η προσαρμοσμένη συνάρτηση LenText θα μετατρέψει έναν δεκαδικό αριθμό ποδιών σε πεδίο κειμένου που δείχνει πόδια, ίντσες και κλασματικές ίντσες στο πλησιέστερο 1/32 ".

Για να εισαγάγετε την προσαρμοσμένη λειτουργία,

  • Ξεκινήστε το πρόγραμμα επεξεργασίας VB με alt-F11.
  • Εισαγωγή> Ενότητα.
  • Εισαγωγή> Διαδικασία.
  • Πληκτρολογήστε πόδια ως το όνομα της διαδικασίας και υποδείξτε ότι είναι μια συνάρτηση.
  • Στη συνέχεια, αντιγράψτε τον ακόλουθο κωδικό:
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

Επαναλάβετε για τη λειτουργία που ονομάζεται LenText. Χρησιμοποιήστε αυτόν τον κωδικό:

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
Μετατροπή ποδιών και ιντσών σε δεκαδικά πόδια

Η στήλη Α δείχνει το αρχικό κείμενο. Η στήλη Β μετατρέπει σωστά σε πόδια οποιεσδήποτε τιμές που περιέχουν πόδια, ίντσες ή / και κλασματικές ίντσες.

Σημειώστε ότι εάν δεν συμπεριλάβετε το σύμβολο ποδιών, η τιμή θεωρείται ότι είναι ίντσες. (σειρά 12). Εάν το κλασματικό τμήμα των ιντσών δεν είναι έγκυρο, τιμή! επιστρέφεται (σειρά 13).

Ενημέρωση: Ευχαριστώ τον Dale Richmond από το Κάνσας Σίτι που παρείχε μια ενημέρωση τον Οκτώβριο του 2007 για να αποτρέψει μια απάντηση 1 ποδιών 12 ίντσες όταν ένας αριθμός μεγαλύτερος από 1,999 μεταβιβάζεται στη λειτουργία.

ενδιαφέροντα άρθρα...