投稿

ラベル(LibreOffice Calc)が付いた投稿を表示しています

ブログの説明

学校に通わないで学んだことを記しています。間違っているところが何かありましたらご指摘下さると幸いです。コメントに対する返信が遅れる可能性があります。その場合は申し訳ございません。

このブログでは広告を表示しています。このブログ内の投稿記事を検索するには右上の拡大鏡のアイコンを、アーカイブやラベル付けから投稿記事を閲覧するには左上の三重線のアイコンをクリックして下さい。

数式の表示にはMathJaxを利用させていただいています。数式の表示のためにJavaScriptが有効である必要があります。そうでない場合、訳の分からないLaTeXのコードが表示されます。幾何学図形やチャートの表示にはHTML5 CanvasやGoogle Chartを使用しています。その表示のためにもJavaScriptが有効である必要があります。

LibreOfficeで列と行を置き換える(転置)

イメージ
使用したLibreOfficeのバージョンは6.1。現時点の最新版が7.2なので少し古い。 列方向に並んでいる値を行方向に並ぶように置き換えたい。行方向に並んでいる値を列方向に並ぶように置き換えたい。この投稿では、いわゆる「行列の転置」をLibreOffice Calcで行う2つの方法について書き留めておく。 例えば次のように値がセルに入力されているとする。 A B C D E 1 a b c d 2 1 2 3 4 3 4 5 これを次のようにしたい。 A B C D E 1 a 1 2 b 2 3 c 3 4 d 4 5 1つめの方法 まず、変換したい値全体を選んでアクティブセルにする。そしてトップメニューの「編集」などから「切り取り」または「コピー」を選ぶ。 A B C D E 1 a b c d 2 1 2 3 4 3 4 5 転置後の値が入るセルの範囲の一番左上端になるセルを選んでアクティブにする。 A B C D E 1 2 3 4 5 トップメニューの「編集」などから「形式を選択して貼り付け」を選ぶ。 このバージョン(6.1.5.2)のLibreOffice Calcではこの操作でLibreOffice Calc自体が固まってしまう現象が環境によっては起こるので要注意。 「形式を選択して貼り付け」というダイアログボックスが開くのでその中の「行と列を入れ替える」というボタンを押す。 A B C D E 1 a 1 2 b 2 3 c 3 4 d 4 5 2つめの方法 2つめの方法はLibreOffice Calcに組み込まれている函数を使うこと。LibreOffice CalcにもMS Excel同...

LibreOffice 6 Calc - セルの相対参照と絶対参照

LibreOfficeもしくはApache OpenOfficeのCalcのセルは、Microsoft Excelのセルと同様、列名を示すアルファベットの大文字と行名を示す自然数との組み合わせでA2やB4のように参照することができる。 参照とは、A2やB4などと入力することによってそれらのセルの値を別のところから指し示すことができることを意味する。別のところというのは例えば別のセル。 ただし別のセルにA2やB4などとただ入力するだけではそういう文字列だと認識されてしまう。それが別のセルを指し示す参照であることを示すには、それらの先頭に=をつけてそれが式であることをCalcに知らせる必要がある。要するに=A2や=B4のように入力する。 =A2や=B4のようにセルに入力すると、それが指し示しているA2というセルまたはB4というセルに入力されている値がそこに表示されるようになる。 この参照という機能を使えば、=A2 + B4という式を入力してその答えの値をそのセルに表示させることができる。=A2 + =B4でないことに要注意。=は式の先頭にのみ付ける。 相対参照とはベクトル 実を言えば、A2やB4といったセルの参照方法は相対参照を表わしている。本当は$A2や$B4と表わさなければならない。$A2や$B4とする参照の仕方を絶対参照と呼ぶ。 じゃあ、相対参照と絶対参照では何が違うのか。 相対参照はそれを入力したセルと参照対象になるセルとの間の距離を計っている。 どういうことかと言うと、セル$A2に64という値が入力されていてセル$B4に=A2という式を入力したとする。そうするとセル$B4には64と表示される。ここまでは絶対参照と同じ。 でも実際には=A2は、$A2の場所が$B4から見て左へ1つ、上へ2つ移動したところにあるという相対的な位置関係によって参照している。相対参照とはシートを平面上のデジタル的な座標と考えた場合のデジタル的なベクトルのようなもの。 相対参照であることはその式をコピーしたときにはっきりと分かる。 セル$B4に入力した式=A2を別のセル、例えば$C3というセルにコピーしてみる。そうすると、コピーした式が自動的に=B1に変わってしまう。相対参照ではその式が文字通りにコピーされない。参照先が変わってしまう。 LibreOffice...

LibreOffice Calcのダイアログ(ユーザーフォーム)のタブオーダー設定法

イメージ
LibreOffice Calc 6.1では、スプレッドシート上とダイアログ上にコントロールまたはフォームコントロールを配置することができる。ダイアログというのはエクセルでいうところのユーザーフォームのこと。 操作中のコントロールはアクティブになる。コントロールがアクティブな状態にあることは、キーボードからの入力などの操作をそのコントロールが受け付ける状態になっていることを意味している。 キーボードのTabキーを用いてアクティブな状態にあるコントロールを遷移させることができる。遷移させていくときの順番はタブの順序またはタブオーダーと呼ばれている。 コントロールには「タブの順序」と名付けられた属性を持っているものがあり、この値である数値によってアクティブな状態のコントロールが遷移していく順番を決定することができる。 LibreOffice 6.1 Calcには、スプレッドシート上に配置するフォーム・コントロールのタブオーダーを一括で管理することができるダイアログ・ボックスが用意されている。各コントロールの属性一覧を表示するダイアログ・ボックスを開けば「タブの順序」という項目があり、その右端のボタンを押せばタブの順序を一括管理するダイアログ・ボックスが開く。 しかし、ダイアログ上に配置するコントロールに関してはこの機能がどうやらないようだ。そのため、タブの順序を設定するのに手間取ることがある。ダイアログ上に配置したコントロールの数が多くなるとやっかい。 ここではこの問題に対するちょっとした対処方法を書き留めておく。 シート上のコントロールとダイアログ上のコントロール LibreOffice 6.1 Calcでは、スプレッドシート上のコントロールとダイアログ上のコントロールとでは、タブの順序を決める属性値の挙動が異なる。 スプレッドシート上のコントロールにおけるタブの順序を示す属性値では、コントロール間の同一値が受け入れられる。数値は0から始まるが、同じ番号が重複していても問題は起こらない。 例えば5つのコントロールがスプレッドシート上に配置されている場合、各々の属性値を0, 0, 1, 1, 2と設定することが可能。0, 0, 1, 1, 2という順番でアクティブなコントロールが遷移する。 しかし、ダイアログ上のコントロールの場合、コントロー...

LibreOffice Calcでダイアログ上のテキストフィールドからセルへの転記

イメージ
先回 は、LibreOffice Calcのスプレッドシート上に置いたプッシュ・ボタンを押すとダイアログ(フォーム)が開き、そのダイアログ上のコマンド・ボタンを押すとそのダイアログが閉じるマクロをLibreOffice Basicによって作った。 今回は、このダイアログを用いてスプレッドシート上のセルに文字列を入力・転記するコードを書くのが目的。その手順を以下に書き留める。 ここで前提とするLibreOfficeのバージョン LibreOffice 6.1 Calc マクロ作成に使用する言語 LibreOffice Basic (Apache OpenOffice Basic) スプレッドシート・ドキュメントの前提条件 Sheet1という名のシートを1つだけ用意 実装したい機能 今回実現したい機能はおおよそ次のとおり。 LibreOffice Calcのスプレッドシート上に設けたプッシュ・ボタンを押すとダイアログが表示される。 そのダイアログが表示される際、スプレッドシート上のA5というセルに入力されている文字列が、ダイアログ上にあるテキスト・フィールドにも反映される。 ダイアログのテキスト・フィールドに全角または半角の文字列を入力して特定のコマンド・ボタンを押すと、その文字列が10文字以内(11文字未満)であるかどうかを検証し、10文字以内であればその文字列をスプレッドシート上のA5というセルに転記する。 テキスト・フィールドに入力された文字列が11文字以上である場合はその旨を表示して処理を中止する。 ダイアログ上の特定のコマンド・ボタンを押すと、テキスト・フィールドに入力された文字列が削除される。 ダイアログ上の特定のコマンド・ボタンを押すとそのダイアログが非表示になる。 ダイアログとはダイアログ・ボックスのこと。Microsoft Excelではユーザーフォームと呼ばれているものに当たる。 ダイアログ上へ各種コントロールを追加 まずは、前回作成したダイアログ上に各種コントロールを追加する。例えば次のように配置する。 いちばん上にあるのがラベルフィールドと呼ばれるコントロール。上から2番目にあるのがテキスト・フィールドと呼ばれるコントロール。その下にコマンド・ボタンと呼ばれる3つのコントロールが配置されてい...

LibreOffice 6 Calcでフォーム(ダイアログ)を作成してマクロで表示

イメージ
ここで用いたLibreOfficeのバージョンと設定 LibreOffice 6.1 LibreOfficeの「ツール」-「オプション」-「LibreOffice」の「詳細」で「Java実行環境を使用」にチェックが入っていること。「インストール済みのJava実行環境(JRE)」が表示されていること。 LibreOffice 6.1 Calcにはデータを入力したり表示したりするのに使うことができるフォームが用意されている。そしてそのフォームはダイアログと呼ばれている。今回はそのダイアログを作成し、それを表示させたり閉じたりするマクロをLibreOffice Basicを使って実装してみる。 フォームコントロールの作成 LibreOffice Calcを起動。 トップメニューで「表示」-「ツールバー」-「フォームコントロール」という順に選び、フォームコントロールのツールバーを表示させる。 フォームコントロールのツールバーの中から「ボタン」(プッシュ・ボタン)を選び、スプレッドシートの適当な場所にプッシュ・ボタンを作成して配置する。 作成されたプッシュ・ボタンの上でマウスの右クリックメニューを表示させ、その中から「コントロール」を選ぶ。 「属性 プッシュボタン」というダイアログが表示されるので、「全般」タブ内にある「タイトル」の項目を「ダイアログ表示」に変える。 トップメニューで「ファイル」-「保存」を選んで変更内容を保存する。 スプレッドシート上でのプッシュ・ボタンの作成とその属性の設定はこれで終わり。 ダイアログを作成 「閉じる」というコマンド・ボタンだけを持つ単純なダイアログを作成する。 LibreOffice Calcのトップメニューで「ツール」-「マクロ」-「ダイアログの管理」を選ぶ。 そうすると「LibreOffice Basicマクロの管理」というダイアログが開く。「ダイアログ」というタブを選び、ダイアログに表示されている.odsファイル(今開いているスプレッドシート名)を選ぶ。 「新規作成」ボタンを押して「Dialog1」を作成し、「編集」ボタンを押す。 そうすると統合開発環境(IDE)が起動し、ダイアログの雛形が表示されるはず。 ツールバーの中から「ボタン」(コマンド・ボタン)を選び、ダイアログの雛...

LibreOffice BasicでCalcのセルに値を入力するには?

イメージ
LibreOffice バージョン6.1 Calc LibreOffice Basicを用いてCalcのセルにデータを入力するためには、まず次のようなオブジェクト型の変数を宣言しておく。 Dim Doc As Object Dim Sheet As Object Dim Cell As Object DocはCalcのドキュメントを参照するための変数。Sheetはそのドキュメントの中のシートを参照するための変数。Cellはセルを参照するための変数。オブジェクト型の変数なのでo-という接頭辞を付け、oDoc、oSheet、oCellと名づける流儀もある。 現在のアクティブなドキュメントを得てオブジェクト型変数に代入。 Doc = StarDesktop.CurrentComponent このようにStarDesktop.CurrentComponentを利用してもいいが、これだとLibreOffice Basicの統合開発環境(IDE)上で実行したときにランタイムエラーが生じてしまう。この問題を避けるためにはStarDesktop.CurrentComponentの代わりにThisComponentを使う。 Doc = ThisComponent Sheetsオブジェクトの中から特定のシートを得るためにSheetsの番号を指定し、それをオブジェクト型変数に代入。Sheetsの番号は0から始まる。 Sheet = Doc.getSheets.getByIndex(0) 番号ではなくシートに付けられた固有の名前を指定する方法もある。それにはgetByName()メソッドを次のように用いる。 Sheet = Doc.Sheets.getByName("Sheet1") 特定のシートの特定のセルを得るためには、そのセルを座標系で指定する方法、または、列名と行番号との組み合わせから成るセル名で指定する方法がある。座標系によって指定する場合はgetCellByPosition()メソッドを用いる。そしてそれをオブジェクト型変数に代入。 Cell = Sheet.getCellByPosition(0, 0) セル名で特定のセルを指定する場合にはgetCellRangeByName()メソッドを次のように用いる。 Cell = ...

LibreOffice Calc 4.3でセルに分数を入力する

ここで使用しているのは、LibreOffice Calc 4.3.3 4分の1を「1/4」のようにセルに入力すると通常は日付と認識されて「1月4日」などに置き換えられてしまう。これを分数としてセルに認識させるには主として2つの方法があるようだ。 1つは「0 1/4」のように0とスペースを先頭に加えて帯分数の形にして入力する方法。もう1つはセルの書式設定を使う方法。セルの書式設定は次のような手順で行う。 分数を入力するセルを有効にする。複数のセルを同時に有効にするにはマウスを右クリックしたまま移動させる。するとそのセルまたは複数のセルが紺色に変わる 有効にしたセルの上で右クリックして表示されたメニューから「セルの書式設定」を左クリックして選ぶか、または、メニューバーの「書式」から「セル」を左クリックして選ぶ。するとダイアログを開く ダイアログの「数値」タブを左クリックして選ぶ カテゴリーの中から「分数」を左クリックして選ぶ 形式の中から「-1234 10/81」を左クリックして選ぶ。書式コードが「# ??/??」になっていることを確認 「OK」を左クリックで選んでダイアログを閉じる 書式コードが「# ?/?」であるとセル上では帯分数が表示される。 いずれも数式バーの数式入力ブロックでは小数として表示される。循環小数は15桁で四捨五入されるようだ。 1/2や1/4や3/4がそれぞれ½や¼や¾に 1/2や1/4や3/4とセルに入力するとそれぞれ½や¼や¾に自動的に置き換えられてしまうことがある。これはオートコレクトという機能のため、次の手順で解除できる。 メニューバーの「ツール」を左クリックで選び、表示されたメニューから「オートコレクトオプション」を左クリックで選ぶ。するとダイアログが表示される ダイアログの「オプション」タブを左クリックで選ぶ 「置換リストを使う」のチェックを左クリックで外す 「OK」を左クリックで選んでダイアログを閉じる

LibreOffice Calc 4.3でセルに1/2と入力すると½になる

ここで使用しているのは、LibreOffice Calc 4.3.3 1/2や1/4や3/4とセルに入力するとそれぞれ½や¼や¾に自動的に置き換えられてしまうことがある。これはオートコレクトが働いているため。次の手順で解除できる。 メニューバーの「ツール」を左クリックで選び、表示されたメニューから「オートコレクトオプション」を左クリックで選ぶ。するとダイアログが表示される ダイアログの「オプション」タブを左クリックで選ぶ 「置換リストを使う」のチェックを左クリックで外す 「OK」を左クリックで選んでダイアログを閉じる 代替案として、オートコレクトのダイアログで「置換」タブを選んでその置換リストからこれらの置換を「削除」してもいいかもしれない。

LibreOffice Calc 4.3で数値を3桁ずつカンマで区切る

ここで使用しているのは、LibreOffice Calc 4.3.3 セルに入力されている数値を3桁ずつカンマで区切って読みやすくするには、セルの書式設定を使う。手順は下の通り。 カンマで区切る数値データが入力されるセルをマウスを左クリックして選ぶ。複数のセルを選ぶときにはマウスを左クリックしたまま移動させる。するとセルが有効になって紺色に変わる。 有効にしたセルの上でマウスを右クリックして表示されたメニューから「セルの書式設定」を左クリックして選ぶか、または、メニューバーの「書式」から「セル」を左クリックして選ぶ。するとダイアログが開く ダイアログの「数値」タブを左クリックして選ぶ カテゴリーの中の「数値」を左クリックして選ぶ 形式の中の「-1,234」を左クリックして選ぶか、または、オプションの「3桁区切り」に左クリックでチェックを入れる 「OK」を左クリックしてダイアログを閉じる

LibreOffice Calc 4.3でセルに数を文字列として入力

ここで使用しているのは、LibreOffice Calc 4.3.3 セルに文字列として数を入力するには、主として2通りの方法があるようだ。その1つはセルの書式設定を利用する方法。もう1つは入力する数値の直前に'(アポストロフィ)を付ける方法。 例えば123を文字列としてセルに入力したいときには「'123」と入力する。数式バーの数式入力ボックスの中ではアポストロフィが付いたままで表示されるが、セルにはアポストロフィは表示されない。 セルの書式設定を利用する方法は次のとおり。ただし数を入力する前にこれを設定しておく必要があるようだ。 書式設定したいセルをマウスで左クリックして有効にする。複数のセルを有効にするときには左クリックしたままでマウスを移動させる。セルが有効になるとその範囲が紺色に変わる 有効にしたセルの上で右クリックして表示されたメニューから「セルの書式設定」を左クリックして選ぶか、または、メニューバーの「書式」から「セル」を左クリックして選ぶ。するとダイアログが開く 開いたダイアログの「数値」タブを左クリックして選ぶ カテゴリーのメニューの中から「テキスト」を左クリックして選ぶ 「OK」をマウスで左クリックしてダイアログを閉じる 入力する前に書式設定を済ましておかなければ有効にならないのはバグだろうか仕様だろうか。後から書式設定を変更しても入力し直さなければならないのは不便だった。

生徒の成績表を作成し、偏差値を計算する LibreOffice Calc編

イメージ
ここで使用する表計算ソフトはLibreOfficeのバージョン4.3.3.2。これらのやり方はApache OpenOfficeやNeoOfficeにも適用可能かもしれない。 試験のスコアを入力する表を作る 例えば次のような項目を用意する。 生徒のIDを入力する。 ※ ※ 成績は生徒の極めて重要なプライバシーに関わる情報であるため、ここに生徒の名前は直接入力せず、代わりに生徒IDを入力してダミー変数として管理する。生徒IDと生徒名との対応表は別途作成し、印刷するか別の記録媒体に保存して安全な場所で厳重に保管し、その対応表はなるべく持ち歩かない。いくつかの重要な情報を分散し、他方を記号化して管理することで、外部の人々にはちょっとした暗号として働くので、試験のスコア表や偏差値が外部に流出してしまってもそれらの個々の情報がどの個人に関連しているのかがすぐには特定されにくく、情報の安全性を、この場合は外部における匿名性を、いくらか高めることができる。 例えば2年A組男子を2AM01として最初のセルに入力する。 そしてそのセルの右下端の■にマウスポインタを合わせて下へドラッグする。 上のような機能はマイクロソフトの表計算ソフトウェアExcelでは「オートフィル」として知られている。 そうすると2AM01から2AM10までのIDが自動的に生成される。 女子は例えばMをFにして2AF01と入力して同様に入力する。 表全体を、例えばマウスの左クリックとドラッグによって、選択する。 外枠や格子状の線を引くために外枠のボタン を左クリックする。 次のように右下の格子状を左クリックして選択する。 スクロールしても項目が動かないように固定するため、項目のすぐ下の行を選択する。 メニューバーの「ウィンドウ」を左クリックし、そのメニューから「固定」を左クリックして選ぶ。 こうするとスクロールしても項目は固定されるので見やすくなる。 偏差値を計算するために平均点と標準偏差が必要になるので、そのための表も作っておく。 これで表が完成したので、次に生徒の試験のスコアを入力していく。 合計点、平均点、標準偏差、偏差値を計算する 教科ごとのスコアの合計を計算するため、合計点の項目の先頭のセルを左クリックして選ぶ。 シグマのボタン を左クリックする。Exce...