きゃらりこ日誌

尺貫法の計算用の式

自分用メモです。
この式はOpenOffice.org用ですが、Excelで使う場合は;,に書き換えれば動くはず。
ユーザ定義関数化すれば、もっと楽に使えるようになるんだろうなぁ……
ちなみに、尺単位まで算出する必要がなかったので、計算式上の最小単位は「間」です。

セルA1の値(単位は里・町・間)を、mに変換する関数
*1.8182をとれば、間に変換できる。

なお、尺貫法の計算は、すべて単位を間に換算して計算してから、また単位を里・町・間に戻せばいい。

=(((IF(ISERROR)((FIND("里";A1)));0;LEFT(A1;(FIND("里";A1))-1))*36*60)+(IF(ISERROR)((FIND("町";A1)));0;MID(A1;(IF(ISERROR)((FIND("里";A1)));0;(FIND("里";A1))))+1;(FIND("町";A1))-(IF(ISERROR((FIND("里";A1)));0;(FIND("里";A1))))-1))*60)+(IF(ISERROR)((FIND("間";A1)));0;IF(ISERROR)((FIND("町";A1))); MID(A1;(FIND("里";A1))+1;(FIND("間";A1))-(FIND("里";A1))-1);MID(A1;(FIND("町";A1))+1;(FIND("間";A1))-(FIND("町";A1))-1)))))*1.8182)
ヒント:都道府県・市町村を抽出する式 を参考に作成
セルB1の値(単位は間)を、里・町・間に変換する関数
=(IF((ROUNDDOWN(B1/(36*60);0))=0;"";((ROUNDDOWN(B1/(36*60);0))&"里")))&(IF(ROUNDDOWN((B1/60)-ROUNDDOWN(B1/(36*60);0)*36)=0;"";(ROUNDDOWN((B1/60)-ROUNDDOWN(B1/(36*60);0)*36))&"町"))&(IF((MOD(B1;60))=0;"";((MOD(B1;60)&"間"))))
予備知識
1里=36町

1町=60間
1間=6尺=1.81818…m≒1.8182m

ちなみに1つ目の式は、昨年とある質問サイトで質問したのはいいものの、満足いく回答が得られず、結局自作して自己解決した式です。
今回計算に必要となるまで、この式を作ったことを、すっかり忘れてました。

(初出:はてなダイアリー「Tech² memo」を一部改稿)