目次
無料で使える LibreOffice Calc で、 文字列を数値として扱う方法を説明します。 このやり方は Microsoft Office Excel と同じです。
環境
- LibreOffice 5.1.4.2
方法
関数 NUMBERVALUE
を使います。
たとえば LEFT("2016/01/06", 4)
とすると 年月日 から 2016 という年を取り出すことができますが、 式の中では文字列なので、 LEFT("2016/01/06", 4) < 2017
というように数値と比較しても意図した結果は得られません。 そこで、 NUMBERVALUE
を用いて NUMBERVALUE(LEFT("2016/01/06", 4)) < 2017
として、 2016 を数値として扱えるようにします。
NUMBERVALUE
は NUMBERVAUE("テキスト", [桁区切り], [小数点区切り])
のように使います。 ただし、後ろの2つの区切り文字は省略することができますし、省略することがほとんどだと思います。
1 2 3 4 5 |
NUMBERVALUE("15%") # => 0.15 NUMBERVALUE("1.345,01", ".", ",") # => 1345.01 |
NUMBERVALUE の使用例
開始日と終了日が与えられた時に、ある年月がその期間に該当するのかを、 NUMBERVALUE
を使って判定したことがあります。 に終了する場合、 終了日は と書くようになっていました。
ここで使用した式はそれなりに複雑で、複数の条件を組み合わせて使っています。
指定した月が開始日より後で、終了日より前であることを判定します。 年が開始年より後、または年が開始年と同じ且つ月が開始月以降という条件で開始日より後であることを判別します。 そして年が終了年より前、または年が終了年と同じ且つ月が終了月より前、または年が終了年と同じ且つ月が終了月と同じ且つ日が終了日より後という条件で終了日より前であることを判別します。 その複合的な式は次のようになります。
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 |
=IF( AND( OR( NUMBERVALUE(LEFT($A3, 4)) < C$1, AND( NUMBERVALUE(LEFT($A3, 4)) = C$1, NUMBERVALUE(MID($A3, 6, 2)) <= C$2 ) ), OR( NUMBERVALUE(LEFT($B3, 4)) > C$1, AND( NUMBERVALUE(LEFT($B3, 4)) = C$1, NUMBERVALUE(MID($B3, 6, 2)) > C$2 ), AND( NUMBERVALUE(LEFT($B3, 4)) = C$1, NUMBERVALUE(MID($B3, 6, 2)) = C$2, NUMBERVALUE(RIGHT($B3, 2)) > 1 ) ) ), "YES", "NO" ) |
上2行に書かれた年月が開始日から終了日までの期間に重なれば "YES" を、 重ならなければ "NO" を表示するようにしています。