LibreOffice Calcでフィルターをするときに、セルの背景色でフィルターしたい。この機能はGoogleスプレッドシートにはあるが、LibreOfficeには残念ながらなさそう。
最速解法はスプレッドシートにアップロードなのですが、やんごとなき理由でアップロードできず、ローカルマシンのLibreOfficeしか使えないとします。
やり方
GUIには色フィルターが存在しないので、
- マクロで対象列(A列)のセルの背景色を取得
- 別の列(B列)にその値(数字)を書き込む
- 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できるので、これを気に勉強しておこうかと。
今回はこれでおしまい!
0 件のコメント:
コメントを投稿