文章の一部を自動生成して置き換えたい (LibreOffceのCalc(表計算)を使用)

文章の一部を自動生成して置き換えたい

何をしたいのか簡単に説明すると
「今日(2020年9月13日)の出来事」
の年月日の部分を自動生成して、その自動生成したものを元の文章に置き換えようというもの。今日は9月13日を指定、明日は9月14日を指定、1ヶ月後は…、というのを出来るだけ簡略化したい。
 
ワープロソフトやテキストエディタの置換機能でその都度自分で置き換えることが出来ますが、それを数回作業をするだけならともかく頻繁に行う場合は面倒。
 
いろいろ方法はありますが、今回は表計算ソフト(LibreOffice Calc)を使ってやってみることにします。
(方法自体は単純な部類なので、MS Excelでもほぼ同じように出来るでしょう)
 

置き換えたい部分を自動生成

これは表計算のオートフィルで作ります。今回は単なる日付を生成するだけなので、オートフィルで作ります。
 

定形的部分を作成

文章の中でそのまま利用したい部分をセルに書いておきます。
今回の場合は日付前の
「今日の(」
と日付後の
「)の出来事」
をそれぞれ別のセルに書いておきます。
 

concat関数でテキストを連結

文章の必要な部分が揃ったので、最後にCalcのconcat関数でテキストを連結して完成させます。定形部分は固定セルとして指定するので、関数の指定方法は以下のようになります。
 =CONCAT($C$2,B2,$C$3)
この数式のセルを日付部分のセルに合わせてオートフィルしてやります。
 
ですが、この指定方法では日付部分が以下のようにおかしなことになります。

 これは日付のフォーマット指定が解除された状態で連結されてしまっているからです。
 

日付部分をtext関数で文字列に変換

Calcなど表計算ソフトでは日付は内部で数値として扱われているので、この場合には任意のフォーマット指定をした文字列へと変換する必要があります。
こういうときはtext関数を利用します。以下のように、変換したいセルと任意のフォーマットを指定します。
=TEXT(B2,"YYYY年M月D日")
 
フォーマットの指定方法は、セルのフォーマットからフォーマットコードを取得してそれを用います。
 
フォーマットコード


 text関数で日付を文字列として生成したら、これをconcat関数で指定すれば完成です。

 もちろんtext関数部分を以下のようにconcat関数内に書いてもいいでしょう。
 =CONCAT($C$2,TEXT(B2,"YYYY年M月D日"),$C$3)
 
これを応用すれば、日本語での日付と英語での日付を併せて用いることも容易に出来ます。
 =CONCAT($C$2,TEXT(B2,"YYYY年M月D日"),$C$3," (",TEXT(B2,"D. MMM. YYYY"), ")")
(同じ日付セルを異なるフォーマットコードで指定してやってます)
 

なぜCalc(表計算ソフト)を用いたかというと

Calcを用いたのはオートフィルや関数などの機能でテキストを自動生成しやすいってのもありますし、後は生成したテキストを別のソフトへコピペしやすいってのもあります。





コメント

スポンサーリンク


このブログの人気の投稿

gnuplotでプロットなどの色をcolornameの指定で変更する

catコマンドの出力を行番号付きにするためのコマンドラインオプション(-n, -b)

Ubuntu Softwareが起動しないのでいろいろと調べてみる(Ubuntu 20.04.1 LTS)

gnuplot : グラフにグリッド線を描く方法(set grid)

gnuplot : プロット画像のサイズ指定について(set sizeとの違い)