【问题标题】:Enter feet and inches in 0-00 format以 0-00 格式输入英尺和英寸
【发布时间】:2014-11-22 01:35:44
【问题描述】:

我希望能够以 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

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

【问题讨论】:

标签: excel vba


【解决方案1】:

将输入解析为文本...

  1. “-”字符后的前 2 位数字除以 12
  2. 最后一位除以 4,然后再除以 12
  3. 将所有内容加在一起

所以,例如,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)

【讨论】:

  • 好的,我想我很接近了。我对此非常缺乏经验,感谢您的帮助。假设 E2 = 2-051 我有 F2 =LEFT(E2,FIND("-",E2)-1)+((MID(E2,FIND("-",E2)+1,LEN(E2)- 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 中获得价值的......我只是复制并粘贴
  • 我也是第一次复制粘贴。但我又做了一次,效果很好。感谢您的所有帮助。
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 2011-01-09
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2014-04-30
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多