平成16年10月24日(日):初稿 平成17年 1月 8日(土):更新 |
半角地番の全角化について 私の方針は、入力回数を出来る限り減らすことです。 入力回数は、マウスによるクリックの回数とキーボードを押す回数があります。 地番については、漢字変換OFFにして、入力と同時に確定し半角で入力するのが一番キーボードを押す回数を節約できます。 例えば当事務所の地番は、半角で2-10-26-702と入力します。 しかし、裁判所に提出する訴状や各種申立書の当事者目録の住所地番は、半角表示が認められず、必ず全角で「○丁目○番○号」と正確な表示を要求されます。 そこで、訴状等当事者目録等裁判所提出文書用として、 半角で「2-10-26-702」 と入力したデータを 全角地番に「2丁目10番26-702号」 と変換する必要が生じます。 又、「2-10-26」は、「2丁目10番26号」 「2-10」は、「2番26」 「2」は、「2番」 と変換する必要があります。 その実現方法について、自分の頭でも色々考えたのですが、最終的には自力では無理と判断し、井戸端BBSに質問しました。 その結果、おそらくアックンさんと言う桐名人の一人に以下の関数式をご教示頂きました。 この関数式作成は初中級者レベルでは到底無理なものと思っております。 #全角(#条件選択(#文字数([番地1])-#文字数(#文字置換([番地1],"-",""))>2,#対応文字列(#set(STR,#文字置換([番地1],"-",",")),1)+"丁目"+#対応文字列(&STR,2)+"番"+#対応文字列(&STR,3)+"-"+#対応文字列(&STR,4)+"号",#文字数([番地1])-#文字数(#文字置換([番地1],"-",""))>1,#対応文字列(#set(STR,#文字置換([番地1],"-",",")),1)+"丁目"+#対応文字列(&STR,2)+"番"+#対応文字列(&STR,3)+"号",1,#文字置換([番地1],"-","番"))) この表記ではなかなか解りづらいので分解して表示します。 #全角( #条件選択(#文字数([番地1])-#文字数(#文字置換([番地1],"-",""))>2, これは、ハイフン(-)の個数が、2個を超える場合、即ち3個以上ある場合という意味です。 #文字数(#文字置換([番地1],"-","")によって、ハイフンを削除した文字数を求め、元々のハイフン付き文字数との差を読み取ることで、ハイフンの個数を読み取っています。この発想は、おそらくプログラミング言語を学ばないと出てこないと思います。 私には到底発想できませんでした。 ハイフンが2個を超える場合は、上記「2-10-26-702」です。 #対応文字列(#set(STR,#文字置換([番地1],"-",",")),1)+"丁目"+#対応文字列(&STR,2)+"番"+#対応文字列(&STR,3)+"-"+#対応文字列(&STR,4)+"号", ここも私には到底思いつきませんでした。 マニュアルを見て解りましたが、 先ず、[番地1]のデータを#文字置換でハイフンを半角コンマに置き換えます。 次にこのデータをを、#setで&STRに代入します。 最後に、&STRに代入されたデータについて、#対応文字列(……,1)で半角コンマで区切られた1番目の文字列を取り出します。 これによって、上記「2-10-26-702」から、1番目の「2」が取り出されます。 取り出された「2」の後の+"丁目"で「2丁目」と表示されます。 同様にして、「10番26-702号」と表示され、最後に「2丁目10番26-702号」が、#全角により、「2丁目10番26-702号」と全角表示されます。 #文字数([番地1])-#文字数(#文字置換([番地1],"-",""))>1, #対応文字列(#set(STR,#文字置換([番地1],"-",",")),1)+"丁目"+#対応文字列(&STR,2)+"番"+#対応文字列(&STR,3)+"号", 次は、ハイフンが1個を超える場合即ち2個の場合で、前同様の順序で、 「2-10-26」が「2丁目10番26号」と表示されます。 1, #文字置換([番地1],"-","番"))) その他の場合、即ちハイフンが1個以下の場合は、#文字置換で[番地1]のハイフンを「番」の置き換えます。 前記「2-10」が「2番10」、「2」が「2番」と表示され、#全角でそれぞれ「2番10」、「2番」と全角表示されます。 この関数式は、私から言わせると大変難しく、到底自力では、思いつかないので、井戸端BBSで名人各位からご教示頂き、そのまま使うしか無いですね。 以上:1,908文字
|