• ベストアンサー

【Excel VBA】携帯番号へ一括でハイフン挿入

ExcelのC列に携帯番号の一覧が400件程度入力されています。 番号が入力されたセルに触れると頭のゼロが取れてしまう為、C列全体の携帯番号を、4桁-3桁-4桁で間にハイフンを一括挿入したいです。 当該ブックのデータは加工して使用します。その加工処理のため、VBAを用いているのでExcel関数ではなくVBA希望です。ただマクロ初心者で上手くコードが書けません。コードを、ご教示頂けますと助かります。

質問者が選んだベストアンサー

  • ベストアンサー
  • m_and_dmp
  • ベストアンサー率54% (974/1797)
回答No.3

携帯番号を 標準書式では、 09012345678 と入力すると 9012345678 に変わってしまいます。 セル書式を、00000000000 にすると、09012345678 と表示されます。 セル書式を、000-0000-0000 にすると、090-1234-5678 と表示されます。これで対処したらいかがですか? VBA ならつぎのようになります。 変換するセル範囲を選択して実行します。 Sub hyphenate() Dim Target As Range For Each Target In Selection NN = Target.Value Target.Value = "0" & Left(NN, 2) & "-" & Mid(NN, 3, 4) & "-" & Right(NN, 4) Next Target End Sub

qoo0821qoo
質問者

お礼

言葉不足で失礼しました。 セルの書式設定で変更できる事は、知っています。 書式設定で「-」を入れ000-0000-0000にすると、仰る通り090-1234-5678と表示されます。但し、この場合はそのセルを選択すると頭のゼロが消えるのと、目には090-1234-5678と見えますが、このブックから携帯番号を別のブックへコピーしようとすると、9012345678となります。 桁区切り(3桁、4桁、4桁)は携帯番号と同じですが、本当は携帯番号ではなく3Gや4Gの回線番号です。業務上、別のもの(Excelブックであったり、会社の基幹システム)へコピー&ペーストをする事があるので、VBAで強制的に「-」を一括挿入してしまいたかったんです。 ご教示頂いたコードを実行すると、「02032448282」が「002-0324-8282」となりましたが、以下の部分を修正したらできました!ありがとうございます。 変更前)Target.Value = "0" & Left(NN, 2) & "-" & Mid(NN, 3, 4) & "-" & Right(NN, 4) 変更後)Target.Value = Left(NN, 3) & "-" & Mid(NN, 3, 4) & "-" & Right(NN, 4)

その他の回答 (2)

回答No.2

私は昔社内に対してそんな関数などをよくリリースしていましたが、 1セルの携帯番号を4桁-3桁-4桁で間にハイフンを一括挿入という目的のアルゴリズム 1つ目のセルを文字列Aに読み込む Aの1~4桁目を、文字列Bに新規追加、ハイフンを追加、 Aの5~7桁目を、文字列Bに追加、ハイフンを追加、 Aの8~11桁目を、文字列Bに追加 Bを1つ目のセルに書き込む を1セットにして、forループで2行目移行も回せば良いと思う。1個1個のステートメントは簡単である。エラーが出たらそのときまた考える。 文字列の一部を切り出すのは、Mid関数 https://www.sejuku.net/blog/32511 か。忘れていた。調べて思い出した。

qoo0821qoo
質問者

お礼

ありがとうございました。

  • kkkkkm
  • ベストアンサー率65% (1620/2459)
回答No.1

> 番号が入力されたセルに触れると頭のゼロが取れてしまう これがVBAでやるとどうなるか分からないのでとりあえず0が残ると仮定して以下で試してみてください。 (念のためにD列に書きだします) > 4桁-3桁-4桁 携帯番号という事なので3桁-4桁-4桁にしてますが 4桁-3桁-4桁でしたら-8を-7に - 7, 4を - 6, 3にしてください。 Sub Test() Dim i As Long For i = 1 To Cells(Rows.Count, "C").End(xlUp).Row Cells(i, "D").Value = Left(Cells(i, "C").Value, Len(Cells(i, "C").Value) - 8) & _ "-" & Mid(Cells(i, "C").Value, Len(Cells(i, "C").Value) - 7, 4) & _ "-" & Right(Cells(i, "C").Value, 4) Next End Sub もし頭の0が外れてしまうのでしたら以下の部分を変更してください。 Cells(i, "D").Value = Left(Cells(i, "C").Value, Len(Cells(i, "C").Value) - 8) & _ を Cells(i, "D").Value = "0" & Left(Cells(i, "C").Value, Len(Cells(i, "C").Value) - 8) & _

qoo0821qoo
質問者

お礼

実行時エラー'5': プロシージャの呼び出し、または引数が不正です と表示されてしまい上手くいきませんでした。

関連するQ&A

  • 携帯番号へ一括でハイフン挿入 の続き

    下記の質問に対する付随の質問です。 (最初の質問者ではありません。) 【Excel VBA】携帯番号へ一括でハイフン挿入 https://okwave.jp/qa/q9885570.html 個人的にA列が文字型でも数値型でも処理できるようにコードを考えていました。 (B列にハイフン挿入型に変換して書き込み) 最初は、文字型と数値型と分けてIF文で処理を選択できるようにしたのですが 偶然の産物ですが下記のコードではIF文が無くても処理できるようです。 どうして処理できるのか、理由は何でしょうか ? 突き詰めるとやはり不具合が出ますか ? ---------------------------------------- Sub test() Dim i As Long Dim NN As Variant Dim Target As Variant Dim UsedRow As Long Dim Sh1 As Worksheet Set Sh1 = Sheets("Sheet1") UsedRow = Cells(Rows.Count, 1).End(xlUp).Row For i = 1 To UsedRow Sh1.Cells(i, "B") = Right(Sh1.Cells(i, "A"), Len(Sh1.Cells(i, "A") - 1)) NN = Sh1.Cells(i, "B") Target = "0" & Left(NN, 2) & "-" & Mid(NN, 3, 4) & "-" & Right(NN, 4) Sh1.Cells(i, "B") = Target Next i

  • エクセルで電話番号にハイフンを入れるには?

    はじめまして、表題の通りですが、なかなか難しくてうまく解決できませんので、ここで質問させていただきます。 電話番号に半角のハイフン(-)を入れて見やすくしたいと考えています。 電話番号には090などで始まる携帯の番号、大阪のように06で始まる番号、京都のように075で始まる番号、西宮市のように0798で始まる番号といろいろ入力されています。それぞれの市外局番の後にハイフンを入れて、残りの番号が8桁なら4桁+ハイフン+4桁、7桁なら3桁+4桁、6桁なら2桁+ハイフン+4桁のようにハイフンを入れていくにはどうしたらよいでしょうか? (例) 09012345678→090-1234-5678 0612345678→06-1234-5678 0751234567→075-123-4567 0798123456→0798-12-3456

  • EXCEL2000:上書きするVBAのコードを教えてください。

    EXCEL2000のマクロを使用して以下のようなことをやりたいと考えています。 VBAに記載するコードを教えていただけますでしょうか。 ●シート構成 1.データシート A列:各データを識別するコード(3桁で000、001等) B列:氏名 C列:年齢 D列:性別 2.入力シート A列:各データを識別するコード(3桁で000、001等) B列:氏名 C列:年齢 ●やりたいこと 1.「入力シート」に識別コードをふり、データを入力しています。 2.そのデータとは別に、「データシート」にもデータを入力しています。 3.「データシート」に存在するデータに関しては、入力シート上のA列:識別コードと同じデータのB列:氏名とC列:年齢を、「入力シート」上のそれぞれの列に上書きします。 4.「データシート」に存在しないデータに関しては、「入力シート」上に存在するデータをそのまま残します。 マクロを作動させると、上記一連の作業が完了するようにできればと考えています。 まとめますと、「データシート」上にデータが存在すればそれを「入力シート」上に表示し、存在しなければ「入力シート」のデータをそのまま表示するというような仕組みにできればと考えています。 ご回答よろしくお願い致します。

  • EXCEL2010_VBAで cas番号を扱う

    化合物を特定するCAS番号というものがあり、これを利用したVBAマクロをEXCEL2003で 使用してたのですが、このたび2010にVerUPしたところ、エラーが頻発(>_<) あらかた直したのですが、どうしてもCAS番号が日付に認識され、そのまま取ることができません。  CAS番号は、「66-71-7」や「68441-17-8」のように   2~5桁の数字-2桁の数字-1桁の数字 で表されるものです。 最初が5桁の場合は、問題ないのですが、2or4桁だと日付と認識してしまいます。 下のような CAS番号「66-71-7」が文字列として入力されているセルから 文字型のCasNに入れる場合 Dim CasN As String Cells(4, 6).Activate   CasN = ActiveCell.Offset(0, code - 2).Text 2003までは、素直に「66-71-7」が入ったのですが、 2010では、「50017」 とMJD?の日数に返還されてしまいます。 66-71-7がどうして日付なのかとも思いますが、最初が2桁だと 無理やり日付になるようです。 なんとかCAS番号を文字列として、取り扱う方法がないか お知恵をお貸しください。 宜しくお願いいたします。

  • Excelで電話番号などの-(ハイフン)を一括で消す方法

    Excelで顧客名簿などを作成しております。 その際、電話番号などを例えば012-456-7890 と入力してるのですが、それを01234567890とハイフンを消して 入力したいのですが、ハイフンを一括で消す方法どなたかご存じ無いでしょうか? かなり困っております。 よろしくお願いします。

  • Excel2007のVBAについて

    Excel2007のVBAについて Excel2007以前では「マクロの記録」を実行して罫線や図形の描写を行って、「記録終了」を行うと作業していたコードが記述され、それを加工したりして使っていましたが、Excel2007で同じように行ってもコードが記述されてませんでした。 セルの操作等はコードが記述されていました。 どこか、私の操作方法が間違っているのでしょうか。また2003のようにコードを記述させる方法が別途あるのでしょうか、よろしくお願いします。 関係ないとおもいますが、 「Excelのオプション」で「開発タブをリボンに表示する」はチェック入れてあります。 「マクロの設定」では「すべてのマクロを有効にする」にチェックしています。

  • 電話番号をハイフンで3つに分割したい

    当方、Excel2000または2003環境です。 電話番号をハイフンで区切って3分割し、それぞれ別のセルに代入したいと考えています。 A列 電話番号(BB-CCCC-DDDD) B列 市外局番(BB部分) C列 2番目(CCCC部分) D列 3番目(DDDD部分) 固定電話、携帯電話、都道府県も異なることから、桁数がバラバラで困っております。 皆様のお知恵をお貸しください。 なにとぞ、よろしくお願いします。

  • 電話番号の-(ハイフン)を一括で消去する(Palm)

    OSはPalm4.1です。 使っているのはクリエSJ33なのですが、赤外線通信で携帯と電話番号をやりとり出来る事を最近になって発見。 しかしクリエに登録した電話番号には-(ハイフン)を入力していた為、携帯に取り込んでも消す作業が必要でせっかく便利な機能を発見しても実用出来てない状況です。 ハイフンを一括で消すような変換ソフトをご存知ないでしょうか?

  • Excel2003で携帯番号の簡単な入力方法はありませんか?

    EXCEL2003にて G列に毎回違った携帯番号入力を手入力しています。 入力の手間を省きたいので、090-の入力を省こうと思ったのですが、080-****-****の時もあるので困ります。 080-と入力したときだけ080-からの表示になり、****-****から入力すると自動で090-が頭に表示される等、書式設定・マクロなんでも良いので、なにか簡単な入力方法はないでしょうか?

  • 郵便番号のハイフンを入れたい エクセル2000

    エクセル2000で文字列のセルに 1234567 のように7桁郵便番号が入っています。 これを 123-4567 のように前から4桁めにハイフンを入れる方法を 教えていただけませんでしょうか。 *データ件数が3万件ほどあり、その変換のためです。

専門家に質問してみよう