Ayakları ve İnçleri Ondalık Ayağa Çevirme - Excel İpuçları

İçindekiler

Mart 2017 Güncellemesi: Dan Ashby, geliştirilmiş bir excel'de fit ve inç işlevine sahiptir.

12 '6 7/8 "biçiminde bir sütun uzunluğuna sahip bir Excel elektronik tablom var. Bunu ondalık ayağa dönüştürmek için Excel'i nasıl kullanabilirim? Sütunu iki parçaya bölmek istemiyorum. O halde nasıl Excel'de fit ve inç değerlerine dönüştürebilir miyim?

Aşağıda gösterilen özel işlev fit (), tanımladığınız formatta bir metin alanı alır ve onu ondalık ayaklara dönüştürür.

Özel LenText işlevi, ondalık bir fit sayısını fit, inç ve kesirli inçleri en yakın 1/32 "değerine kadar gösteren bir metin alanına dönüştürecektir.

Özel işleve girmek için,

  • VB düzenleyiciyi alt-F11 ile başlatın.
  • Ekle> Modül.
  • Ekle> Prosedür.
  • Prosedürün adı olarak ayak yazın ve bir işlev olduğunu belirtin.
  • Ardından aşağıdaki kodu kopyalayın:
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 adlı işlev için tekrarlayın. Bu kodu kullanın:

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
Fit ve İnç'i Ondalık Fit'e Dönüştür

Sütun A, orijinal metni gösterir. Sütun B, fit, inç ve / veya kesirli inç içeren tüm değerleri doğru şekilde fit'e dönüştürür.

Ayak işaretini dahil etmezseniz, değerin inç olarak varsayılacağını unutmayın. (satır 12). İnçlerin kesirli kısmı geçerli değilse, Değer! döndürülür (satır 13).

Güncelleme: Ekim 2007'de işleve 1,999'dan büyük bir sayı geçtiğinde 1 fit 12 inç cevabı önlemek için güncelleme sağlayan Kansas City'den Dale Richmond'a teşekkürler.

Ilginç makaleler...