Macchin Weblog

<< 2024/12 | 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 >>
<< 時が経っても | main | 泣きを見る >>

なかなか

通知票はめどはついたものの進まない。その代わり,去年までできなかったことが
できるようになったので書き留めておく。といっても簡単なことなんだけど。
というのは毎年この時期に檀家さんにお配りする年忌の通知を出すために
エクセルをデータベースとして使っている。後から追加したデータなどを
古い順に並べ替える必要があるので,日付をDATEVALUE関数でシリアル値に変換して
その行の情報を元に並べ替えていく。だが,元々打ち込む情報は元号,
日付,○回忌,地区名,名前,戒名なので,その情報を差し込み印刷で
縦書きでそのまま使うので,日付が漢数字である必要がある。
しかし,○月○日などという漢数字はすんなり日付として認識してくれない。
去年まではその解決ができなかったので,漢数字で表示用の日付を打ち込み,
別セルに手入力で9/13のように変換しやすい日付を打ち込んでいた。
年号は別シートに用意してある年号と西暦の対照表を使ってvlookuup関数で
照合するようにしていたので,こうして取り出した西暦の数値と手入力した
日付をconcatenate関数で結合し,2009/12/20のような形に整え,日付のシリアル値を
datevalue関数で割り出していた。今回は手入力していた日付の部分も
漢字で十二月二十日と打てばすべて変換されるようにした。方法はmid関数とfind関数。
十二月二十日ならば。まず,find関数で「月」の位置を探し,それより前の文字列を
mid関数で取り出す。この結果が「十二」。これを別シートに用意しておいた
漢数字と算用数字の対照表からvlook関数で引き出し,「12」を取得。
同様に「日」も取り出すのだが,月の時よりも一手間かかる。
まず「日」の場所を割り出すところまでは同じ。だが,取り出す場所は「月」の後なので,
月で利用した取り出し位置よりも一文字後の位置を指定し,取り出す文字列の長さは
「日」までの文字列の長さから「月」までの文字列の長さを引いたもの。
つまり十二月二十日ならば全部で6文字なので,そこから「月」までの3文字を引き,
さらに「日」の字数を1文字分引いて,「月」後の2文字を引くようにする。
すると,「二十」が取り出せる。これを「月」の時と同様に数字の「20」に変換。
後は取得しておいた「年」の数値と「月」数値,「日」の数値をconcatenate関数で
結合して「2009/12/20」という数値を出せるようにした。
もっとスマートな方法もきっとあるのだろうと思うが,足し算式に覚えようとしている
自分のやり方では,これでも結構な進歩。入力時間はかなり短縮できた。
また手入力によるミスも防げる。でも,漢数字の日付から数値の日付に変換するニーズが
どれだけあるのかは不明。(汗)お寺では結構有効だと思うんだけど…
comments (0) | trackbacks (0)

Comments

Comment Form

Trackbacks