過去の桐井戸端BBS (桐ver.8)
13360 住所の番地を半角(1-2-3)から全角(1丁目2番3号)へ変換する計算式 小松亀一 2001/10/04-12:02
仙台の小松です。

以前、[住所]の[都道府県]、[市町村町域]、[番地]、[建物]分離について質問し、色々お世話になりました。

又質問をお許し下さい。
[番地]は、文字列型とし、半角の"1-2-3"と記載していましたが、
裁判所から全角で"1丁目2番3号"と記載するよう指示が来ています。

そこで、[番地全角]を作り、原則
"1-2-3"→"1丁目2番3号"
"2-3"→"2番3"
と置換したデータを入れたいと思っています。

このように置換するための計算式を考案したいのですが、私のレベルでは出来そうもありません。
前回の質問での今村さんの計算式に圧倒され、勉強しなければと思っていますが、ままなりません。

方法としては場合分けが必要で、
"-"が2つ、"1-2-3"の場合、
先ず#全角で"1-2-3"→"1−2−3"とし、
次に、最初の"−"は"丁目"、2番目の"−"は"番"、末尾に"号"つける
"-"が1つ、"2-3"の場合、
先ず#全角で"2-3"→"2−3"とし、
次に、最初の"−"は"番"とする(これだけでしたら簡単ですが)
ことを一気に成し遂げる関数設定が出来ません。

今村さんには、ちゃんと勉強しなさいと叱られそうですが、上記置換計算を
実現するための計算式をご指導頂きたく、宜しくお願い申し上げます。

尚、過去のBBSも検索してみたのですが、見つけられませんでした。
この関数設定が判ったら、新規データは先ず[番地]に半角入力し、
次に[番地全角]は、挿入初期値にこの計算式を設定しておけば、
入力が楽になると期待しています。



13362 Re:半角地番から全角地番への計算式 【多遊】 2001/10/04-12:27
記事番号13360へのコメント
小松さん>こんにちは
>ことを一気に成し遂げる関数設定が出来ません。

一気に変換する関数はございませんが、別途項目を作成し、そこに式を設定すればできるかなと思います。

例:
#条件選択(
#文字数([番地])-#文字数(#文字置換([番地],"-",""))=1,
#全角(#文字置換([番地],"-","番")))
1,
#全角(#対応文字列(#文字置換([番地],"-",","),1)+"丁目"+
#全角(#対応文字列(#文字置換([番地],"-",","),2)+"番"+
#全角(#対応文字列(#文字置換([番地],"-",","),3)+"号",
)

上記はあくまで考え方のサンプルですので括弧の対応とか出来てないかも知れませんのでご注意くださいね。


13363 Re:半角地番から全角地番への計算式 アックン 2001/10/04-13:53
記事番号13360へのコメント
こんにちは。
わっ! 【多遊】さん、早い。(^^;
まだよく見てませんが、私も同じ発想で項目計算式書きました。

#全角(#cond(#l([A])-#l(#s([A],"-",""))>1,#対応文字列(#set(STR,#s([A],"-",",")),1)+"丁目"+
#対応文字列(&STR,2)+"番"+#対応文字列(&STR,3)+"号",1,#s([A],"-","番")))

この式は、[A]値の"-"は1個または2個という制約がありますから、[A]にいろいろ制約を入れておくのがいいです。

アックン(=^・^=)
13364 Re:半角地番から全角地番への計算式 小松亀一 2001/10/04-14:50
記事番号13360へのコメント
多遊さん、アックンさん、早速のご教示有り難うございます。
じっくり勉強させて頂きます。

ところで
>そこで、[番地全角]を作り、原則
>"1-2-3"→"1丁目2番3号"
>"2-3"→"2番3"
>と置換したデータを入れたいと思っています。
書きましたが、

"1-2-3-505"
のようなデータもあります。505は部屋番号で、
この場合は、
"1-2-3-505"→"1丁目3番5−505号"
と変換したいところです。

ハイフン"-"が1個の場合の、条件選択として
#文字数([番地])-#文字数(#文字置換([番地],"-",""))=1

ハイフン"-"が2個以上の場合の、条件選択として
#l([A])-#l(#s([A],"-",""))>1
(#lは#文字数ですね。)
は理解できましたので、自分なりに考えてみます。

それにしてもかような発想が瞬時に出来るのが凄いですね。
有り難うございました。
13373 Re:半角地番から全角地番への計算式 【多遊】 2001/10/04-23:05
記事番号13364へのコメント
重箱の隅で恐縮ですが・・・・

>そこで、[番地全角]を作り、原則
>"1-2-3"→"1丁目2番3号"
>"2-3"→"2番3"

>"1-2-3-505"
>のようなデータもあります。505は部屋番号で、この場合は、
>"1-2-3-505"→"1丁目3番5−505号"
>と変換したいところです。

>は理解できましたので、自分なりに考えてみます。

ふと気がついたのですが、
"2-3-505"→"2番3−505号"となるデータは
ございませんか?(途中に−が3個あって最後が部屋番号の場合です)
このへんはいかがですか?
"2丁目3番505号"と変換されませんか?


13374 Re:半角地番から全角地番への計算式 【多遊】 2001/10/04-23:17
記事番号13373へのコメント
すみません。訂正です
>"2-3-505"→"2番3−505号"となるデータは
>ございませんか?(途中に−が3個あって最後が部屋番号の場合です)

"2-3-505"→"2番3−505号"となるデータは
ございませんか?(途中に−が2個あって最後が部屋番号の場合です)

※−が3個でなく2個のの場合でした。

ps。式が完成しましたらお知らせ下さいね。


13377 Re:半角地番から全角地番への計算式 小松亀一 2001/10/05-06:35
記事番号13374へのコメント
【多遊】さん,おはようございます。
色々ご指導有り難うございます。

>"2-3-505"→"2番3−505号"となるデータは
>ございませんか?(途中に−が2個あって最後が部屋番号の場合です)
そうなんです。あるんですね。

>ps。式が完成しましたらお知らせ下さいね。
アックンさんの式をそのまま頂いて、4つ目のデータを加えただけのもの
ですが、以下の通りです。
#全角(#cond(#l([番地])-#l(#s([番地],"-",""))>2,#対応文字列(#set(STR,
#s([番地],"-",",")),1)+"丁目"+#対応文字列(&STR,2)+"番"+#対応文字列(&STR,3)+"−"+
#対応文字列(&STR,4)+"号",#l([番地])-#l(#s([番地],"-",""))>1,
#対応文字列(#set(STR,#s([番地],"-",",")),1)+"丁目"+#対応文字列(&STR,2)+"番"+
#対応文字列(&STR,3)+"号",1,#s([番地],"-","番")))

私一人の頭では、到底、こんな式は思いもつきませんでした。
"-"を未定義にして、字数の差から、場合分けする発想は到底出来ません。
お陰様にて大変、勉強になりました。

但し、この場合、多遊さんご指摘のとおり
"2-3-505"→"2丁目3番505号"となり、"2番3−505号"とはなりません。
希には、"2-3-4"→"2番3−4号"なんてこともあるでしょうから、
これを区別することは出来ないでしょうね。

しかし、上記計算式で、目的の90%位は達成できますので、
"2番3−505号"
のような特殊なものは、手で入力し直そうかと思っています。

有り難うございました。
13378 Re:半角地番から全角地番への計算式 【多遊】 2001/10/05-07:17
記事番号13377へのコメント
現在の計算式で90%対応とのことで、それはそれでいいのですが参考までに。

>但し、この場合、多遊さんご指摘のとおり
>"2-3-505"→"2丁目3番505号"となり、"2番3−505号"とはなりませ
>ん。
>希には、"2-3-4"→"2番3−4号"なんてこともあるでしょうから、これを
>区別することは出来ないでしょうね。

そのままでは無理かと思いますが、入力ルールを決めておけば可能です。

普通の"2-3-4"→"2番3−4号"は、"2-3-4"
号表示"2-3-505"→"2番3−505号"は、"2-3--505"のように、--と、区別して入力すれば可能です。

そして計算式は、#文字位置([番地],"--")などを、利用します。

参考まで
13394 Re:半角地番から全角地番への計算式 小松亀一 2001/10/05-23:10
記事番号13378へのコメント
【多遊】さん、おばんです。

>普通の"2-3-4"→"2番3−4号"は、"2-3-4"
>号表示"2-3-505"→"2番3−505号"は、"2-3--505"のように、--と、
>区別して入力すれば可能です。
>そして計算式は、#文字位置([番地],"--")などを、利用します。
色々きめ細かなご指導有り難うございます。

要は簡単に諦めないで色々工夫することが大事と言うことですね。

その後、番地表示を確認すると
"2-3"→"2番地3"と"地"がはいるもの、
"2"→"2番"又は"2番地"で"-"ハイフンのないもの(田舎ほど多いようです)
等色々で、全て解決する計算式は無理なようです。

これまでに入力したデータは全て半角数字と半角ハイフンだけで、
今後もタックシール記載分には必要であり、裁判所提出用の[番地全角]は、
挿入・編集初期値に計算式を入れて、それから必要な訂正をするつもりです。

計算式のお陰で労力は相当軽減されました。
有り難うございました。

戻る