2016-03-26 1 views
0

У меня есть около 3600 высот с форматом Ножки-дюймовый дюймов ВОСЬМОЙ дюйма, так, например:Преобразовать футы и дюймы в десятичном формате

5103 = 5 feet, 10 and 3/8 inches 
6000 = 6 feet 
6022 = 6 feet, 2 and 2/8 inches 

и мне нужно преобразовать их в десятичный формат либо с формулой или макросом, так что результаты для них будут:

5103 = 5.864 
6000 = 6.000 
6022 = 6.187 

Как я уже 3600+ из них, ручная работа будет боль. Как преобразовать этот формат в десятичный формат футов и дюймов?

ответ

3

с данными в столбце , в В1 входят:

=--LEFT(A1,1)+MID(A1,2,2)/12+RIGHT(A1,1)/(12*8) 

и скопируйте:

enter image description here

Примечание:

это преобразование Урожайность десятичные ноги так что 2 фута 6 дюймов показывает 2,5

РЕДАКТИРОВАТЬ # 1:

Если вам необходимо разместить более ноги в колонке , то формула должна быть:

=--LEFT(A1,LEN(A1)-3)+MID(A1,LEN(A1)-2,2)/12+RIGHT(A1,1)/(12*8) 
+0

работает как шарм! – MJ95

+0

работает как шарм, если ваш рост в ногах не превышает одной цифры. если у вас было 10 или больше вещей, взорвется! –

+0

@ForwardEd Вы правы .......... нам нужно будет проверить длину аргумента и внести коррективы. –

1

Если вам когда-нибудь понадобится пройти длинный маршрут, UBA UBA будет казаться t o быть наиболее целесообразным.

Function feet2dec(str As String) As Double 
    Dim v As Long, vtmp As Variant, tmp As String 
    Dim feet As Double 

    vtmp = Split(str, Chr(44)) 
    For v = LBound(vtmp) To UBound(vtmp) 
     Select Case LCase(Right(Trim(vtmp(v)), 4)) 
      Case "feet" 
       feet = feet + Val(Trim(Replace(vtmp(v), "feet", vbNullString, 1, -1, vbTextCompare))) 
      Case "ches" 
       str = Replace(vtmp(v), "inches", vbNullString, 1, -1, vbTextCompare) 
       str = Application.Trim(Replace(str, "and", vbNullString, 1, -1, vbTextCompare)) 
       feet = feet + Application.Evaluate(str)/12 
     End Select 
    Next v 

    feet2dec = feet 
End Function 

feet2dec

+0

Приятное использование * Val() * и * Evaluate() * –