6 返信 最新の回答 日時: Jul 26, 2014 5:08 PM ユーザー:sunnyheights

    氏名フィールド中の特定文字を見つけて敬称を切り替える方法

    sunnyheights

      タイトル

      氏名フィールド中の特定文字を見つけて敬称を切り替える方法

      フォーラムに投稿

           またまたお世話になります。

            

           数百通の請求書の請求先氏名フィールドには個人の氏名やXXX 株式会社とかYYY 商店のような文字が含まれています。

           敬称は個人の場合は”様”、「会社」や「店」という単語が含まれている場合は”御中”を自動的に付けたいのです。

           Case (

            請求先氏名; * "会社" *  or  *"店" ; "御中" ; "様" ; 

           )

           という検索文字列を敬称フィールドに書き込もうとしましたが、最初の*の取扱いが不正なようで、書き込めません。

           ( * "会社" *  or  *"店")と言う風に括弧で包んでも、うまく行きません。

            このような場合は、何か関数を使うべきでしょうか。その関数がなかなか思いつきません。

            なにとぞよろしくご教示ください。

        • 1. Re: 氏名フィールド中の特定文字を見つけて敬称を切り替える方法
          sago350@未来Switch
               こんな感じに書きます
                
                
               Case (
               PatternCount ( 請求先氏名 ; "会社" ) > 0 ; 請求先氏名 & "御中" ;
               PatternCount ( 請求先氏名 ; "店" ) > 0 ; 請求先氏名 & "御中" ;
               請求先氏名
               )
          • 2. Re: 氏名フィールド中の特定文字を見つけて敬称を切り替える方法
            sunnyheights

                 sago35様

                  

                  あ、またもや適確なご教示ありがとうございます。

                  なるほどPatternCountは、検索テキストの文字がいくつあるかをカウントして、その数字を返すということを利用する訳ですね。

                  会社なら2、店なら1で、これらは>0であるので、結果を御中にできるということですね。

                  素晴らしいテクニックですね。

                  今、試してみたら見事にバッチリと制御できました。

                  本当に色々とお世話になりました。

                  

            • 3. Re: 氏名フィールド中の特定文字を見つけて敬称を切り替える方法
              user14047

                   PatternCount だけだと「店村(たなむら)」とか店がつく名字も "御中" になってしまいますよ。

              PatternCount ( 請求先氏名 ; "店" ) > 0 and 
              Position ( 請求先氏名 ; "店" ; 1 ; PatternCount ( 請求先氏名 ; "店" ) ) = Length ( 請求先氏名 ) 

                   のように、"店" の出現位置も考慮しないといけないかと思います。
                   それでも、◯◯商店 △△ みたく、真ん中に入ってしまうとうまくいきません。

                   こういった例外やらを考慮するくらいなら、個人か法人かのフラグのフィールドを設けて、そのフラグを元に判断されるほうがいいような気がします。

              会社なら2、店なら1で、これらは>0である
                   この部分、PatternCount ( 請求先氏名 ; "会社" ) で、請求先氏名の値が「株式会社◯◯」の場合、結果は 1 ですよ。 そのテキスト中にいくつ検索テキストが存在するかですから…。

              • 4. Re: 氏名フィールド中の特定文字を見つけて敬称を切り替える方法
                sunnyheights

                Chamoさん、

                      初めまして。

                      あ、なるほど、氏名の中に店が付く個人がいると確かに問題ですね。そのポジションも問題ですか。

                      今、1000件弱のデータを見たのですが、そのような個人名は存在しなかったので、今回はこれで行きたいと思います。

                      実は今の顧客でも既に3種類のフラグを立ててあり、請求単価が変わるようになっています。これ以上フラグを増やすのは、ネスティングが複雑になりそうで、ちょっと敬遠しております。

                      それから検索結果は文字数ではなくて、そのテキストの出現回数ですね。ご訂正をありがとうございます。

                      これからもよろしくお願いします。

                       

                • 5. Re: 氏名フィールド中の特定文字を見つけて敬称を切り替える方法
                  Shin

                       敬称を自動設定にすると、結構トラブルになる事も有ります。レコード毎に設定しておく、というのが一番確実かと思いますよ。

                       そのデフォルト値として、文字から自動入力させるのは、手間が省けていいと思います。

                  • 6. Re: 氏名フィールド中の特定文字を見つけて敬称を切り替える方法
                    sunnyheights

                         Shinさん、

                          

                          ご意見どうもありがとうございます。

                          やはり、氏名の中に検索テキストが含まれるケースが出てくるということでしょうか。

                          最初はレコードの敬称フィールドは値一覧に「様」、「御中」を入れておき、オペレーターに選ばせることを考えました。

                          しかし1000件弱の90%ぐらいは「様」に相当し、「御中」は10%ぐらいです。

                          デフォルトを「様」にして、該当レコードだけを「御中」を選ぶようにすることも考えたのですが、まったく順不同で「御中」が出現するのでオペレーターが見逃したりすることも考えて自動切り替えを選んだ訳です。

                          オペレーターに「店」、「会社」でフィールド検索させて、選ばれたレコードの氏名欄を確認しながら「御中」を選ばせる方式が良いかもしれませんね。でも、オペレーターが全くの素人で、どこまで理解してくれるか分からないのが辛いところです。

                          現在のところうまく動作しているのですが、将来のことを考えてもう一度見直してみたいと思います。