【LibreOffice Calc】背景色でフィルター

2021/09/30

UNIX

t f B! P L

LibreOffice Calcでフィルターをするときに、セルの背景色でフィルターしたい。この機能はGoogleスプレッドシートにはあるが、LibreOfficeには残念ながらなさそう。

最速解法はスプレッドシートにアップロードなのですが、やんごとなき理由でアップロードできず、ローカルマシンのLibreOfficeしか使えないとします。

やり方

GUIには色フィルターが存在しないので、

  1. マクロで対象列(A列)のセルの背景色を取得
  2. 別の列(B列)にその値(数字)を書き込む
  3. B列の値に対して数値でフィルター機能を使う

という三段構えで実現します。

コード

見ればわかると思うけど、1行目から10行目に対して、A列の背景色を取得して、B列にその値を書き込むサンプル。

Option VBASupport 1
REM  *****  BASIC  *****

Sub Main
	Dim c As Long
	
	For i = 1 To 10
		c = Cells(i, 1).Interior.Color
		Cells(i, 2).Value = c
	Next i
End Sub

以下雑記

VBAが書ける

マクロには、LibreOffice Basicという言語に加え、JavaScriptやPythonが使えるようです。

ふつうに考えてJSかPythonを使いたいのですが、さくっと済ませるだけなら、環境構築やLibreOffice上から操作性、ネット上の情報量などが重要なので、一周回ってLibreOffice Basicが良さそうです。

さらにLibreOffice Basicに1行おまじない(Option VBASupport 1)を書くだけでExcelでお馴染みのVBAが利用可能とのこと。
こちらのほうが情報量が圧倒的に多いですし、操作性も問題なさそうなので、こちらを採用します。

VBAが書けない

私は物心ついたときからLinuxを使っているので、VBAを書いたことがありません。
ただ私の好きなタイプのプログラマーの皆様はだいたいVBAできるので、これを気に勉強しておこうかと。

今回はこれでおしまい!

QooQ