過去の桐井戸端BBS (桐ver.8)
11336 部分一致(先頭一致)の併合・表引きの問題 MSF 2001/05/25-21:24
桐V8 SP6です。
下のNo.11330コメントツリーの併合の問題とも
なりうるかもしれませんが・・

宅配便送り状発行システムにおいて、下記のようなマスタ表があります。

<某**急便 営業所マスタ>
[都道府県][市区町村][精算コード][営業所コード]
東京都  江東区   7011   7-011
東京都  中野区   7152   7-152
--------以下同様に全国の営業所データ---------

これをもとに、
お客様からいただいた発送依頼データリストへ
精算コードと営業所コードを転記せねばならないのですが、
その、発送依頼データリストが食わせ物でして、

<発送依頼データリスト>(固定長テキストデータ)
[納品先住所1]   [納品先住所2]     
江東区亀戸1-3*-1* △△ビル ・・・(実際は半角全角混在)         
東京都中野区**__4−2ー□□ **ビル

こんな感じのデータが約2000レコードあります。
(見ただけでぞっとしますが・・
 このリストをエクセルでCSVに変換した上で、
 桐の表に変換して使用しています)

お客様のシステム上に過去より累積してきたデータで、
且つ、入力処理も、全国営業所の担当でバラバラなので、
元データの入力形態を、いまさらどうすることも出来ず、
何とか処理せねばなりませんでした。
見ての通り、依頼データは都道府県から始まるものや、
市区町村から始まるもの、さまざまでしたので、
最初にひらめいたのが、市区町村の値での併合でしたが、
先のコメントツリーの通り、部分一致併合はできない。
で、考えたのが、先頭一致表引きによる転記でした。

<営業所マスタ>に都道府県と市区町村を連結した項目をもたせ
その値をキーとして、先頭一致で表引きすれば、転記できる。
しかし、当然、市区町村から始まっているレコードでは、
先頭一致では、とんでもない(大宮市**のデータの場合
大阪府**がフォーカス位置として窓が開く)ことになるので、
連結データとの表引き項目と、
市区町村データとの表引き項目 の2項目を作って
最終的には、私の頭の判断で、転記を済ませました。
この間、試行錯誤で 約4時間・・・とほほ・・の状態でした。

長々と経緯を書き連ねましたが、
まだまだ、このお客様の発送扱いは続いていきます。

せめて先頭一致表引きが、置換式でつかえたら・・
まー、こんなデータじゃ、それも怖いが・・

みなさま、何かよい知恵はありませんでしょうか・・・

11340 Re:部分一致(先頭一致)の併合・表引きの問題 宮城 2001/05/26-00:02
記事番号11336へのコメント
MSFさん、こんにちは。

むむむ、です。
いささか信頼性を欠く原始データをロジックでなんとかしようというのはちょっと・・・。

英数字が半角全角混在というのはまだなんとかなるとして、「−」「ー」
の混在とか、たとえば住所から「市区町村名」を取り出す困難とか。

これは力技。会話処理でこなすしかないでしょう。

# 「0」と「O」とかも危ない。それどころか、お役所提供データですら
# どれだけ手こずったことか。(;_;)

11344 Re:部分一致(先頭一致)の併合・表引きの問題 今村 誠 2001/05/26-09:23
記事番号11336へのコメント
こんにちは、計算式住所を新設してそこを比較式とすれば営業所コードは
表引きできます。
1 具体的には、都道府県は住所の4文字以内にないと記入ミスです。
そこにその文字がないときは、市区町村から始まっていると思います。
市と区は大丈夫と思いますが、村や町の場合、郡がないと表引きできないと思います。
でも、そういうケースはまれだと思いますので、固定長の住所から、都道府県を省いた、
住所から表引きしてみてはいかがでしょうか。
2 自動記入とした場合、さらに市区町村を文字位置関数で判断して、
営業所コードを表引き2で計算式にして、未定義値だけを選択して、
元住所の訂正をすると良いのではないかと思います。
全国では、確か同じ市の名前が2つあったと思いますので、そこだけは、手入力でしょう。

11401 Re:部分一致(先頭一致)の併合・表引きの問題 MSF 2001/06/02-12:29
記事番号11344へのコメント
こんにちは。ご助言ありがとうございました。色々やってみました。

<営業所マスタ>において、
 比較項目として、
  [都道府県比較住所]と[市区町村比較住所]を追加

<発送依頼データリスト>において
 先の原始データの[住所1]+":"+[住所2]の連結データを
  [住所]として追加
 ※これは、後で修正があるかもしれないのと、
  原始データの項目には、手を加えたくないので、
  計算項目にはせずに、置換式で置き換えました。
  ":"をいれたのは、この文字をあふれ改行文字として、
  送り状印刷する為です。
 基本的な半角全角混在の問題や、
 「−」と「ー」の混在の問題については、
 今回は手を加えることなく、原始データのままにしました。
 ただし、半角・全角スペースは、#文字置換関数で、それぞれ
 取り去りました。

>1 具体的には、都道府県は住所の4文字以内にないと記入ミスです。
・・これをヒントにまず
選択(条件登録)で、下記6条件を登録
 *"北海道"*,*"東京都"*,*"大阪府"*,*"京都府"*
 #文字位置([住所],"県")=3,#文字位置([住所],"県")=4

都道府県より入力されているデータを選択できるようにしました。

# ここで#文字位置関数を始めて使用したのですが、なかなか便利ですね。


[営業所コード]を下記置換式で、
置換→未定義値を選択→置換と段階的に処理しました。

#表引き(#部分列([住所],1,#文字位置([住所],&市区町村)),=,"営業所コード表.tbl",&住
所比較項目,[営業所コード])

 &市区町村= "市","区","町","村","郡"を段階的に
                  代入→置換処理の繰り返し

 &住所比較項目= 都道府県からのデータを選択置換する場合は、
          "[都道府県比較住所]"を代入して処理
          市区町村からのデータを選択置換する場合は、
          "[市区町村比較住所]"を代入して処理
    
>全国では、確か同じ市の名前が2つあったと思いますので、そこだけは、
>手入力でしょう。
・・調べてみました。府中市のみでしたが・・よかったですか?
また、よみが同じで、漢字違いの住所も調べてみました。
この住所(別リストとして投稿)に関しては、市区町村からの住所入力だと
IMEの誤変換・思い違い入力等で混乱の可能性がありますね。
あとは、東区,西区,南区,北区,中央区,港区,緑区なども要注意でしたし、
四日市市,市川市,市原市,今市市などは、#文字位置関数で"市"を
代入して評価した場合、比較該当しなくなりますね。
あと、鳩ヶ谷市,**ケ村 等、"ケ"と"ヶ"の扱いにも注意が必要でした。

この、イレギュラーな部分だけ、順に選択して、手入力処理しました。

以上、こんな感じで処理してみましたが、私の至らぬ点、見逃している点、
もし、お気づきになりましたら、教えてください。

>今村さん
4時間の画面とのにらめっこが、30分時間ほどで、処理できました。
ありがとうございました。

>宮城さん
最終的に、上記のような形で処理しました。
いずれにしても、原始データがいいかげんだと困り者です。
お客様にも、やんわり指摘していきます。
ありがとうございました。
11402 Re:No.11401の要注意リストを別投稿します。 MSF 2001/06/02-12:31
記事番号11344へのコメント
●よみが同じで、漢字違いの住所のリスト等、要注意点

宮城県  泉市           ミヤギケン イズミシ
大阪府  和泉市          オオサカフ イズミシ
鹿児島県 出水市          カゴシマケン イズミシ
茨城県  鹿島郡 鹿嶋町      イバラキケン カシマグン カシママチ
石川県  鹿島郡 鹿島町      イシカワケン カシマグン カシママチ
茨城県  鹿嶋市          イバラキケン カシマシ
佐賀県  鹿島市          サガケン カシマシ
茨城県  古河市          イバラキケン コガシ
福岡県  古賀市          フクオカケン コガシ
宮城県  仙台市          ミヤギケン センダイシ
鹿児島県 川内市          カゴシマケン センダイシ
東京都  府中市          トウキヨウト フチユウシ
広島県  府中市          ヒロシマケン フチユウシ
秋田県  本荘市          アキタケン ホンジヨウシ
埼玉県  本庄市          サイタマケン ホンジヨウシ
福井県  三方郡 三方町     フクイケン ミカタグン ミカタチヨウ
兵庫県  美方郡 美方町     ヒヨウゴケン ミカタグン ミカタチヨウ

あとは、東区,西区,南区,北区,中央区,港区,緑区なども要注意でしたし、
四日市市,市川市,市原市,今市市などは、#文字位置関数で"市"を代入して評価した場合、比較該当しなくなりますね。
あと、鳩ヶ谷市,**ケ村 等、"ケ"と"ヶ"の扱いにも注意が必要でした。

11403 Re:No.11401の要注意リストを別投稿します。 今村 誠 2001/06/02-16:34
記事番号11402へのコメント
MSFさんこんにちは、府中市が2つあるのでした。
データベースは最初は大変ですが、計算式を作ってしまうとあとは簡単ですね。
私の場合、作業表に[連番],[元住所].[計算式県],[計算式市],[住所2]を作成して
県は簡単ですね、条件選択で今市市や郡山市などを最初に抜いたあと、文字位置関数で
4文字以内の区、次に6文字以内の市を抜いて、郡と町村を抜いていきます。
でも計算式は100文字を越えると思います。
鳩ヶ谷市や竜ヶ崎市等は最後まで残りますね。
あとは、表引きで[計算式県]と[計算式市]を足した[計算式県市]と宅配コードの
県と市を足したものが未定義値の時は、[計算市]と[コード表の市]で、合った部分を
[宅配コード]に指定すると、記入ミスや誤字脱字が残ると思います。
そこで、未定義値だけを選択して元住所を訂正すると良いと思います。
最後に作業表の連番と元表の連番で置換なり併合かけると宅配コードは求められると思います。

戻る