こんにちはゲストさん。会員登録(無料)して質問・回答してみよう!

解決済みの質問

文字列の状態で電話番号からハイフンを抜きたい

電話番号データを検索用にハイフンを抜いたデータに置き換えたいのですが、「置換」や「区切り位置」等でハイフンを抜いても、数値に置き換わってしまい、先頭に入っている「0」はカットされてしまいます。
もちろん、セルの書式設定は文字列にしていますが、どうやってもハイフンを抜いた時点で数値に置き換わってしまいます。
先頭の「0」を消さずにハイフン無のデータに置き換える方法を教えてください。
簡単に出来そうな気がするのですが、意外と苦戦しています。

投稿日時 - 2005-03-18 13:27:57

QNo.1276669

困ってます

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

Excelのことだと思いますが、
 =SUBSTITUTE(A1,"-","")
で、抜いてみたらいかがですか?

その後を、コピー-右クリック-形式を選択して貼り付け
「値」
で、貼り付けてしまえば、良いと思います。

区切り位置の場合は、列のデータ形式を文字列(T)に選べば、「0」がなくなることはないと思います。

投稿日時 - 2005-03-18 13:47:49

お礼

ご回答ありがとうございます。
そうです。エクセルです。うっかり書くのを忘れていました。すいません。
出来ました!こんな便利な関数があったのですね。助かりました。
今後よく使う関数の1つになると思います。
ありがとうございました。

投稿日時 - 2005-03-30 09:35:04

ANo.1

このQ&Aは役に立ちましたか?

1人が「このQ&Aが役に立った」と投票しています

回答(6)

ANo.6

セルA1に0を入力 B1が電話番号 例9077776666
C1に =CONCATENATE(A1,B1) と入力
C1には 09077776666 と表示されます。

投稿日時 - 2005-03-19 11:16:55

補足

ご回答ありがとうございます。
今回はたまたまわかりやすい電話番号を例に出したのですが、頭に入る0の数が様々なデータの場合も知りたいです。

投稿日時 - 2005-03-30 09:32:04

ANo.5

わたしも「区切り位置」の使い方を教えてgooで最近知りました。

推測ですが、質問者さんは最初の列のみ「文字列」に設定しているのでは?
「列のデータ形式」の設定は、「データのプレビュー」にて各列をクリックし、それぞれの列に「文字列」を設定できます。
言い変えると、2列目以降を指定しない場合、列のデータ形式は「G/標準」となって、先頭の0は無視されてしまいます。

投稿日時 - 2005-03-18 17:02:22

補足

ご回答ありがとうございます。
シート全体を文字列にしてもダメなのです・・・。
「データのプレビュー」というのは使ったことないのですが、どのような機能ですか?
いろいろ触ってみましたが、どこで設定するのか見つかりません。

投稿日時 - 2005-03-30 09:32:37

お礼

わかりました。
区切り位置の中のプレビューですね!
この機能は適当に触ってみて全貌をよく理解しないまま使っていました。
とても参考になりました。ありがとうございました。

投稿日時 - 2005-03-30 09:44:08

ANo.4

こんなのはどうでしょうか?
置き換える前に、電話番号データの書式設定を変更します。
★電話番号データを範囲選択→セルの書式設定→表示形式→ユーザー定義→0######### と入力する→OK
その後に置き換えてください。先頭に0が表示されるようになりますよ。(実際にやってみましたので)

投稿日時 - 2005-03-18 17:01:35

補足

ご回答ありがとうございます。
今回はたまたまわかりやすい電話番号を例に出したのですが、頭に入る0の数が様々なデータの場合も知りたいです。

投稿日時 - 2005-03-30 09:33:27

ANo.3

>先頭の「0」を消さずにハイフン無のデータに置き換える方法を教えてください。

そうですねー。実際やってみると意外とうまくいかなかったです。そこで、安直ですみませんが、マクロで一括処理です。

電話番号のセル範囲を選択した状態で、実行して下さい。

【手順】
1. EXCEL画面で[Alt]+[F11]キーを同時に押す。
  -->Visual Basic Editor起動(以下VBE)
2. VBE画面のメニュー[挿入]-[標準モジュール]クリック
3. 2.で開いたウインドウに以下のVBAコードをコピー&ペースト
4. VBEを閉じる
5. [ツール]-[マクロ]-[マクロ]から実行

【以下VBAコード:場所=標準モジュール】(次行から終わりまで)

Sub Sample()

  Dim rngCurrent As Range
  Dim strVal As String
  
  On Error Resume Next
  For Each rngCurrent In Selection
    With rngCurrent
      '全角ハイフン半角化
      strVal = StrConv(.Text, vbNarrow)
      'ハイフンカット
      strVal = Replace(strVal, "-", "")
      'セル表示形式を文字列に
      .NumberFormat = "@"
      '書込み
      .Value = strVal
    End With
  Next rngCurrent

End Sub

投稿日時 - 2005-03-18 13:55:19

補足

いつもありがとうございます。
他の人達にも教えたいので、出来ればマクロじゃない方法を探しています。
上記の内容はマクロ勉強のネタ帳に加えさせていただきます。

投稿日時 - 2005-03-30 09:34:01

ANo.2

こんにちは。
もっとスマートなやり方があるかもしれませんが、私がやっている方法をご紹介しますね^^

A列(A2~A10)に電話番号が入っていると仮定しますね。(置換後の0が抜けた数値で結構です。)

1) 任意のセル(仮にA1)に「'0」という値を入力します。
2) B2に「=$A$1&A2」と入力し、その式をB10までコピーします。('0が入っているセルの指定をする場合必ず$○$○の形式で入力してくださいね^^)
3) B列をまるごとコピーして、A列にかぶせ、「形式を選択して貼り付け」で「値」を選びます。

これで電話番号の表示ができますが、説明すると長いですね。実際の作業は簡単です^^

投稿日時 - 2005-03-18 13:49:15

補足

ご回答ありがとうございます。
今回はたまたまわかりやすい電話番号を例に出したのですが、頭に入る0の数が様々なデータの場合も知りたいです。

投稿日時 - 2005-03-30 09:34:27

あなたにオススメの質問