使用VBA或Excel将英尺和英寸(例如“5英尺1英寸”)转换为十进制英尺

我有一个数据库有几列,以下列格式存储高度数据…

8英尺4英寸

5英尺1英寸

8英尺6英寸

12英尺0英寸

以此类推…对于3列的20k +logging。 我需要使用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公式。

希望有人能帮助。 所有其他线程都包含与我的格式不同的值的转换。 谢谢!

一classVBA:

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

如果你想要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 

在这里输入图像描述

这是一个Excel公式,将工作:

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

在这里输入图像说明

只能应付英寸(即不把它们转换成date!):

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