
使用 excel,我希望能够在单元格中输入数字(代表英寸),并让单元格将其显示为英尺和英寸。例如,如果我在单元格 A1 中输入 62,我希望单元格 A1 显示 5' 2"。我知道如何使用公式获取一个单元格的输入并将其转换为我想要的内容(即 =INT(A1/12)&"' "&MOD(A1,12)&"""")。但我希望转换后的版本显示在输入的同一单元格中(即,如果我在单元格 A1 中输入 62,我希望 A1 显示 5' 2")。似乎格式化可能是实现此目的的唯一方法,但我还不知道如何操作。谢谢!
答案1
这应该是常规格式还是条件格式?如果是常规格式,则需要指定希望其工作的区域。如果是条件格式,则需要指定触发条件。
在这两种情况下,您都需要使用 VBA。我假设范围中的第一个变体(常规格式)A1:C3
。只有正数才会被格式化(负数和 0 保持不变)。
在标准模块中,输入函数代码:
Function FeetIn(data As Double) As String
Dim ft As Long, inch As Double
ft = Int(data / 12)
inch = data - 12 * ft
FeetIn = IIf(ft >= 1, ft & "' ", vbNullString) & _
IIf(inch > 0, inch & "''", vbNullString) ' two apostrophes
End Function
在工作表模块中:
Private Sub Worksheet_Change(ByVal Target As Range)
Set Target = Intersect(Target, Range("A1:C3"))
If Target Is Nothing Then Exit Sub
Application.EnableEvents = False
Dim cell As Range
For Each cell In Target
If IsNumeric(cell.Value) Then
cell.NumberFormat = """" & FeetIn(cell.Value) & """;-General;0;@"
Else
cell.NumberFormat = "General"
End If
Next cell
Application.EnableEvents = True
End Sub
答案2
没有公式的格式化需要使用内置格式。
Excel 确实具有以英尺和英寸显示的格式,其中英尺数字位于小数点之前,而英寸位于小数部分。
使用“设置单元格格式...”,类别“自定义”,并输入以下格式规范:0' 0\"
。根据需要修改此格式。
这是使用 Excel 格式所能实现的最多功能。除此之外,还需要一个只能与额外列一起使用的公式。
有关详细信息,请参阅 Excel 自定义数字格式。