Excel 以0-00格式输入英尺和英寸

Excel 以0-00格式输入英尺和英寸,excel,vba,Excel,Vba,我希望能够以0-00格式输入英尺和英寸,增量为1/4 示例: 1'3 = 1-03 2'5 1/4 = 2-051 10'9 1/2 = 10-092 22'10 3/4=22-103 我有一个用户表单设置,我希望用户能够输入上述维度。但是,我所有的公式都是以十进制为单位设置的英尺和英寸。因此,在用户输入数据后,我需要将其转换为十进制。将输入解析为文本 -字符后的前2位被12除 最后一个数字被4除,然后被12除 把一切加在一起 例如,2-051= 2 + 05/12 = 0.41666 + (1

我希望能够以0-00格式输入英尺和英寸,增量为1/4

示例: 1'3 = 1-03 2'5 1/4 = 2-051 10'9 1/2 = 10-092 22'10 3/4=22-103


我有一个用户表单设置,我希望用户能够输入上述维度。但是,我所有的公式都是以十进制为单位设置的英尺和英寸。因此,在用户输入数据后,我需要将其转换为十进制。

将输入解析为文本

-字符后的前2位被12除 最后一个数字被4除,然后被12除 把一切加在一起 例如,2-051=

2
+ 05/12 = 0.41666
+ (1/4)/12 = .020833
= 2.4375
在VBA中,用于此的函数如下所示:

Function ParseHeight(ht As String) As Double

Dim Feet As Integer
Dim Inches As Integer
Dim Quarters As Integer

Dim DashLocation As Integer

    DashLocation = InStr(1, ht, "-")

    Feet = Mid(ht, 1, DashLocation - 1)
    Inches = Mid(ht, DashLocation + 1, 2)
    If Len(ht) = DashLocation + 3 Then Quarters = Mid(ht, DashLocation + 3, 1)

    ParseHeight = Feet + (Inches / 12) + ((Quarters / 4) / 12)
End Function
假设您希望通过Excel中的公式执行此操作:

假设在E1中输入,请在F1中尝试以下公式:

=LEFT(E1,FIND("-",E1)-1)+MID(E1,FIND("-",E1)+1,2)/12+IFERROR((MID(E1,FIND("-",E1)+3,1)/4)/12,0)
然后,要将数字从十进制转换回您的格式,可以这样做:

假设要转换的十进制数在F1中:

=INT(F1)&"-"&TEXT(INT(MOD(F1,1)*12),"00")&INT(MOD(MOD(F1,1)*12,1)*4)

到目前为止你试过什么?你需要发布你的代码和问题是什么。我所有的公式都是为十进制的英尺设置的-自1960年以来有了很大的改进;好吧,我想我很接近了。我在这方面太没经验了,我感谢你的帮助。假设E2=2-051,我有F2 as=LEFTE2,FIND-,E2-1+MIDE2,FIND-,E2+1,LENE2-FIND-,E2-1/12,但它只读取2-05部分。另外,如果我只投2-05,它根本不起作用。然后我还需要相反的,取一个小数,把它改成0-00格式。举个例子:拿2.4375,把它改成2-051。我把它复制了一遍,试了一下,但计算不正确。E1=2-051 F1=2.4167 G1=2-053看起来F1中的公式不正确。@MarkSmith,我刚才复制了我的公式,在F1中得到了2.4375。。。。我不知道你是如何在F1中获得价值的。。。我只是复制和粘贴我第一次也是复制和粘贴的。但是我又做了一次,效果非常好。谢谢你的帮助。