
Excel を使用して、セルに数値 (インチを表す) を入力し、その数値をフィートとインチで表示できるようにしたいと考えています。たとえば、セル A1 に 62 と入力した場合、セル A1 には 5' 2" と表示されるようにしたいです。数式を使用して 1 つのセルの入力を取得して、必要な値に変換する方法はわかっています (つまり、=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 のカスタム数値形式。