- 締切済み
カスタマバーコードにするには?
カスタマバーコードの形式にするにはどうしたら出来ますか? TXTデータをExcelにインポートまで出来たのですが、下記(1)の セルを(2)の形に出来るのでしょうか?宜しくお願いします。 *郵便番号 住所(郵便番号と住所は違うセルです) (1)123-4567 神奈川県鎌倉市鎌倉1-2-3 ↓ (2)123-45671-2-3
- みんなの回答 (4)
- 専門家の回答
みんなの回答
- Wendy02
- ベストアンサー率57% (3570/6232)
>#NAME? となるのは、正しく、数式を入れるブックの標準モジュールに、コードが書かれなかった可能性があります。 もうひとつは、PICKUPNUMBERS のつづりが間違っていることです。 =PICKUPNUMBERS まで入れて、Ctrl + Shift -->A と入れると、数式として正しく認識されていると、引数が出てきて、=PICKUPNUMBERS(rng1,rng2)と出てきます。
- tom04
- ベストアンサー率49% (2537/5117)
No.1です! たびたびごめんなさい。 補足を読ませてもらいました。 条件として、A列はハイフォンが入った7桁郵便番号、 B列は○○県△市□□1-2-3 とハイフォンが二つ入った5桁の文字列という大前提になりますが・・・ かなり強引な方法になります。 昨日同様、配列数式になりますので Shift+Ctrl+Enterで確定するのは一緒です。 C2セルに =IF(COUNTBLANK(A2:B2)>0,"",MID(A2,MATCH(TRUE,ISNUMBER(MID(A2,ROW($A$1:$A$10),1)*1),0),8)&ASC(MID(B2,MATCH(TRUE,ISNUMBER(MID(B2,ROW($A$1:$A$20),1)*1),0),5))) として、配列数式にしてみてください。 たぶん希望に近い形になると思います。 尚、一気に一つのセルに数式を入れるより、A列を一旦数字だけに表示し、 B列も半角の文字にした物を「&」で結びつける方が判りやすいかもしれませんね。 以上、お役に立てれば幸いです。 何度も失礼しました。m(__)m
- Wendy02
- ベストアンサー率57% (3570/6232)
こんにちは。 簡単な方法で、カタスマーバーコードのデータを出す、ユーザー定義関数を作ってみました。 ただ、 123-45671-2-3 これは違っていませんか?私のOffice の組み込みActiveX コントロールの「10-カスタマーバーコード」では、「12345671-2-3」としないと、バーコードが出てきません。 使い方は、ワークシート上で、このように入れます。 =PICKUPNUMBERS(A2,B2) '------------------------------------------- 以下のコードの設定の仕方は、 Alt + F11 (Altを押しながらF11)を押すと、Visual Basic Editor 画面が出てきます。 次に、メニューの[挿入]-[標準モジュール]と開けて、クリックすると、画面が現れますので、以下のコードを貼り付けて、 Alt + Q で、画面を閉じます。 ------------------------------------------- Function PickupNumbers(rng1 As Range, rng2 As Range) As String 'カスタマーバーコードを取り出すためのユーザー定義関数 Dim Matches As Object Dim Match As Object Dim buf As String Dim ret As String Dim c As Variant With CreateObject("VBscript.RegExp") .Pattern = "[\d\-]+" '正規表現パターン .Global = True For Each c In Array(rng1, rng2) buf = StrConv(c.Value, vbNarrow) Set Matches = .Execute(buf) For Each Match In Matches If ret = "" Then ret = Replace(Match.Value, "-", "") '- ハイフンを抜く Else ret = ret & Match.Value End If Next Next c End With PickupNumbers = ret End Function '------------------------------------------- もし、ハイフンを抜かないでよいなら、 > If ret = "" Then > ret = Replace(Match.Value, "-", "") '- ハイフンを抜く > Else > ret = ret & Match.Value > End If > Next ↓ ret = ret & Match.Value Next とします。 以前、一丁目と漢数字を取り出すものを考えたことがあるのですが、全国には、特殊な地名もありますし、単純には出来なかったような気がします。たとえば、一番町というような名称もあります。
- tom04
- ベストアンサー率49% (2537/5117)
こんばんは! 参考になるかどうか判りませんが・・・ 無理矢理って方法になります。 ↓の画像のC2セルに配列数式を入れて、オートフィルで下へコピーしています。 =IF(B2="","",A2&MID(B2,MATCH(TRUE,ISNUMBER(MID(B2,ROW($A$1:$A$20),1)*1),0),10)) もしこの画面からExcelにセルにコピー&ペーストする場合は 単に貼り付けただけではエラーになると思いますので 貼り付け後、F2キーを押すか数式バー内で一度クリックします。 編集可能になりますので、 Shift+Ctrl+Enterキーで確定してみてください。 数式の前後に{ }マークが入り配列数式になります。 尚、画像を見てもらえば判ると思いますが、 B列の最初に出てくる数字から10文字を表示させるようにしています。 ○丁目や○○アパートのように他の文字列があれば、それも拾い出してしまいます。 そして、B2セルの住所の文字数は20文字まで対応できるようにしています。 以上、参考になれば幸いですが、 他に良い方法があれば読み流してくださいね。m(__)m
補足
ありがとうございました。一応出来ましたが、もうひとつわかればおしえていただけませんか? 実際のA2セル内は ”123-4567”と”が入ってます。 B2セル内は ”神奈川県鎌倉市1-2-3”と”入ってます B2のセルの ”は取れました。A2のセルの ”を取りたいの ですが出来るでしょうか? もう1点B2セル内の数字が大文字になってます。これを半角数字にできないでしょうか? 昨日教わりました数式に組み込むことは出来るのでしょうか? 大変ご無理な質問で申し訳ありません。よろしくお願いいたします。
お礼
ありがとうございます。補足の欄にお願いがあります。 宜しくお願いいたします。
補足
ありがとうございます。ご説明の通り C2のセルに =PICKUPNUMBERS(A2,B2) を入れたのですが、#NAME? と表示されうまくいきません。 何か足りない操作があるのでしょうか? お忙しいところ申し訳ありませんアドバイスお願いいたします。