重要なお知らせ

「教えて! goo」は2025年9月17日(水)をもちまして、サービスを終了いたします。詳細はこちら>

電子書籍の厳選無料作品が豊富!

カスタマバーコードの形式にするにはどうしたら出来ますか?
TXTデータをExcelにインポートまで出来たのですが、下記(1)の
セルを(2)の形に出来るのでしょうか?宜しくお願いします。
*郵便番号         住所(郵便番号と住所は違うセルです)
(1)123-4567      神奈川県鎌倉市鎌倉1-2-3
       ↓
(2)123-45671-2-3

A 回答 (4件)

こんにちは。



簡単な方法で、カタスマーバーコードのデータを出す、ユーザー定義関数を作ってみました。

ただ、
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
とします。

以前、一丁目と漢数字を取り出すものを考えたことがあるのですが、全国には、特殊な地名もありますし、単純には出来なかったような気がします。たとえば、一番町というような名称もあります。

この回答への補足

ありがとうございます。ご説明の通り C2のセルに
=PICKUPNUMBERS(A2,B2)
を入れたのですが、#NAME? と表示されうまくいきません。
何か足りない操作があるのでしょうか?
お忙しいところ申し訳ありませんアドバイスお願いいたします。

補足日時:2009/10/21 12:08
    • good
    • 0
この回答へのお礼

ありがとうございます。補足の欄にお願いがあります。
宜しくお願いいたします。

お礼日時:2009/10/21 12:22

>#NAME? 


となるのは、正しく、数式を入れるブックの標準モジュールに、コードが書かれなかった可能性があります。
もうひとつは、PICKUPNUMBERS のつづりが間違っていることです。
=PICKUPNUMBERS まで入れて、Ctrl + Shift -->A と入れると、数式として正しく認識されていると、引数が出てきて、=PICKUPNUMBERS(rng1,rng2)と出てきます。
    • good
    • 0

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
    • good
    • 0

こんばんは!


参考になるかどうか判りませんが・・・

無理矢理って方法になります。

↓の画像の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
「カスタマバーコードにするには?」の回答画像1

この回答への補足

ありがとうございました。一応出来ましたが、もうひとつわかればおしえていただけませんか?
実際のA2セル内は ”123-4567”と”が入ってます。
   B2セル内は ”神奈川県鎌倉市1-2-3”と”入ってます
   B2のセルの ”は取れました。A2のセルの ”を取りたいの   ですが出来るでしょうか?
もう1点B2セル内の数字が大文字になってます。これを半角数字にできないでしょうか?
昨日教わりました数式に組み込むことは出来るのでしょうか?
大変ご無理な質問で申し訳ありません。よろしくお願いいたします。

補足日時:2009/10/21 09:05
    • good
    • 0

お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!