转换脚和&英寸(例如,“5英尺1英寸”)到使用VBA或Excel的十进制英尺

时间:2017-08-04 20:27:20

标签: excel vba excel-vba data-conversion

我有一个包含几列的数据库,可以按以下格式存储高度数据......

8英尺4英寸

5英尺1英寸

8英尺6英寸

12 ft 0 in

依此类推......对于超过3列的20k +记录。我需要使用excel公式或VBA模块将其转换为十进制英尺。我已经改编了另一个VBA脚本,用于将以度数分钟秒列出的坐标转换为十进制度数,我不确定我哪里出错...

Function ConvertFtInches(pInput As String) As Double
'Updateby20140227
Dim xFt As Double
Dim xIn As Double
xFt = Val(Left(pInput, InStr(1, pInput, " ft") - 1))
xIn = Val(Mid(pInput, InStr(1, pInput, " ft") + 2, _
             InStr(1, pInput, " in") - InStr(1, pInput, _
             " ft") - 2)) / 12
ConvertFtInches = xFt + xIn
End Function

....因为我是VBA的初学者,所以我可以完全离开。脚本肯定有问题,因为它是来自不同脚本的改编。可能有一个更容易使用的excel公式。

希望有人可以提供帮助。所有其他线程都包含值的转换,这些转换的格式与我的格式不同。谢谢!

4 个答案:

答案 0 :(得分:4)

如果你想要vba:

Function ConvertFtInches(pInput As Range) As Double

Dim str As String
Dim strArr() As String
str = Replace(pInput.Value, "ft", " ")
str = Replace(str, "in", "")
strArr = Split(Application.Trim(str), " ")
If LBound(strArr) = UBound(strArr) Then
    ConvertFtInches = strArr(0) / 12
Else
    ConvertFtInches = strArr(0) + strArr(1) / 12

End If        

End Function

enter image description here

答案 1 :(得分:4)

单线VBA:

Function ConvertFtInches(pInput As String) As Double
ConvertFtInches = Split(pInput, " ft ")(0) + Split(Split(pInput, " ft ")(1), " in")(0) / 12
End Function

答案 2 :(得分:1)

这是一个可行的Excel公式:

=VALUE(LEFT(A1,FIND("ft",A1)-1))+(VALUE(SUBSTITUTE(RIGHT(A1,LEN(A1)-FIND(" ",A1)),"in",""))/12)

enter image description here

答案 3 :(得分:0)

只能处理英寸(即不将它们转换为日期!):

=IFERROR(LEFT(A1,FIND(" ft",A1)),0)+LEFT(RIGHT(A1,5),2)/12