LibreOffice Calc: Basic でセルを扱う


無料で使える表計算ソフト LibreOffice Calc の Basic でセルを扱う方法を説明します。 Excel VBA だと Cell(1, 2) のように扱えますね。

環境

試した環境は次のとおりです。

  • LibreOffice 5.1.4.2
  • OS: Ubuntu 16.04.1 LTS

基本

セル A1 の内容を書き換えてみます。

セルは シート の getCellByPosition メソッド で取得します。 そして気をつけるべきは、 Excel VBA と違って 行と列のインデックスが 0 から始まることです。 インデックスの順番も Excel VBA と異なり 列、行 の順番です。

値の代入

セルに値を代入するときには、 Value, String, Formula を使い分ける必要があります。 たいていは Formula だけを使っていれば大丈夫です。

Value
数値を代入するときに用いる。 数値でない値を代入すると、 スプレッドシートでは 0 になる。
String
文字列を代入するときに用いる。 仮に数値を代入したとしても、 スプレッドシートでは左寄せの文字列になる。
Formula
数式を代入するときに用いる。 文字列や数値を代入する場合は、文字列は文字列として、数値は数値として取り扱ってくれる。

値の読み取り

上と同じように Value, String, Formula を使い分けます。 しかし、普通はセルにどのタイプの値が入っているか(数値なのか文字列なのか)は予めわかっていることが多いので、難しいことはないと思います。

Value
数値の値に対して使用します。 数値でない(文字列形式の)値がセルに入っている場合、 Value によって取得できる値は 0 です。
String
文字列の値に対して使用します。 文字列でない値(数値)がセルに入っていたとしても、 文字列として値が取得できます。
Formula
数式を取得します。 単純に数値や文字列が入っている場合、うまく扱えば数値にも文字列にもなります。 基本的に文字列と考えて扱うのがいいと思います。

計算例

下のように 国語と算数の点数が表になっているとします。 ここで、国語・算数の点数の平均を求めます。 一般的にはこういう場合、式を使って平均を計算します。 ここでは Basic の例としてコードを使います。

点数のデータ
A B C D
1 名前 算数 国語 平均
2 飯田 真一 44 75
3 米田 珈琲 73 59
4 江川 ひさし 85 29
5 青山 一郎 12 30
6 三浦 誠 55 78
7 加藤 和男 97 42