• 締切済み

エクセル2007電話番号だけを抜き出したい

※内容を一部変えて再度質問させていただきます。 調べても分からなかったので、どなたかご教授お願いします。 エクセル2007を使用し、ある表から電話番号だけを抜き出したいのですが、 電話番号の書かれているセルに、余分なことが複数入れられているため、 オートフィルタでの抽出や、Alt+Hでの置き換えがうまくいきません。 同セルの中にこれだけの情報が入っています。 「車の年式・車名・担当者・電話番号」 ※データは・のように記号等で区切らず、スペースを空けたり、繋がったりしています。 また電話番号はハイフンがあったりなかったりと統一性がありません; 「車の年式・車名・担当者・電話番号」でゴチャゴチャになっているセルを 「電話番号」のみにしたいのです。 申し訳ありませんが、マクロ等VBAは分かりませんので、 それ以外の方法がありましたら教えていただけないでしょうか? どうぞよろしくお願いいたします。

みんなの回答

  • MackyNo1
  • ベストアンサー率53% (1521/2850)
回答No.5

>「車の年式・車名・担当者・電話番号」 >※データは・のように記号等で区切らず、スペースを空けたり、繋がったりしています。 >また電話番号はハイフンがあったりなかったりと統一性がありません; >残念なことに電話番号も先頭に入れたり半ばに入れたりと無茶苦茶です; このようなデータでも基本的に何らかの区切り文字があると思うのですが・・・ それはさておき、上記の条件では、電話番号の判断基準が無いのでマクロや関数では抽出できません。 例えば、文字列中の数字が最初に出てくる位置と最後に出てくる位置までの文字数がハイフンやカッコを除いて10桁のような判断基準が決まっていれば関数で対応することも可能です。 いずれにしろ、電話番号を判断するのは、エクセルにしろ人にしろ「数字」がポイントになるので、どのように記載されている数字を抽出したいのかを(複数ある場合は抽出したくない数字の例)などを、実際のデータ(特に電話番号部分)をそのままできる限り具体的に例示されたほうがより的確な回答が得られると思います。

  • mt2008
  • ベストアンサー率52% (885/1701)
回答No.4

電話番号以外のデータがきちんとリスト化された物があるなら話は別ですが、現状ではNo.2の方の仰る通り、「人間って素晴らしい」なんです。 遊びでマクロを作ってみました。 A1:A5の文字列から、数字の塊を切り分け、一番大きな塊が5個以上連続した数字であれば電話番号として抜き出し、隣のセルに表示しています。 電話番号っぽいものが無いときは「?」を表示します。 マクロ等は判らないとのことですので説明は省略しますが、このマクロも局番の区切りに「-」を使われるとOUTだったりして完璧なものではありません。 Sub PhoneNum()   Dim RE   Dim r As Range   Dim nOff, sTarget, sString, nAns, aAnsLen, i      Set RE = CreateObject("VBScript.RegExp") '正規表現使用   For Each r In Range("A1:A5") '対象データ   nOff = 1  '何列右側に電話番号を表示するか     sTarget = StrConv(r.Text, vbNarrow)     sTarget = Replace(sTarget, "-", "") '「-」を削除して電話番号を5個以上連続した数字に     RE.Pattern = "[^0-9\n]|^\n"     RE.Global = True     sString = RE.Replace(sTarget, ",") & ","     sData = Split(sString, ",")     nAns = 0     nAnsLen = Len(sData(0))     For i = 1 To UBound(sData)       If nAnsLen < Len(sData(i)) Then         nAns = i         nAnsLen = Len(sData(i))       End If     Next i     '5個以上連続した数字の塊があれば、電話番号として表示     If nAnsLen >= 5 Then       r.Offset(0, nOff) = "'" & sData(nAns)     Else       r.Offset(0, nOff) = "?"     End If   Next End Sub

  • ayataichi
  • ベストアンサー率42% (66/156)
回答No.3

 完全自動というわけにもいきませんが、以下の方法を参考までに。  エクセルの中身をワードにコピーする。  車の年式・車名・担当者・電話番号の、各項目の間にTabを挿入する。  それをエクセルに戻すと、項目毎にセル分けされる。  あとは電話番号を拾っていく(別セルに移動)。  一つのセルに書き込まれている電話番号だけを拾うより、わずかながらマシになると思います。  

  • misawajp
  • ベストアンサー率24% (918/3743)
回答No.2

質問の状況では無理です 質問者が ここが電話番号だ と判断するロジックを全てマクロプログラム化するしかありませんが、それでもカバーできるのは9割行けば上出来でしょう 試みにその列に書かれていることから 電話番号を抽出する判断基準を箇条書きにしてみることです そして、その書いた判断基準だけで 電話番号に該当するものを抜き出してみることです そのくらい 人間は優秀なのです 不用意にそのようなデータ形式を設計したことが諸悪の根源です 数百データなら バックアップを取り  目で見ながら別の欄に電話番号を入力するのが 一番速くできるでしょう または CSV出力し、それを空白区切りで読み込み、うまくいかなかったデータを手修正する バックアップを取っておいて、いろいろ試みると良いでしょう

  • MAMORUM
  • ベストアンサー率19% (4/21)
回答No.1

電話番号が常に最後にあるのであれば、 何をしたいかの検索で 同じように”単語”で検索するとRIGHTというのがあります。 この関数は末尾から指定文字数を返すもので、電話番号なら10~12文字ぐらいで指定してやれば できると思います。-や空白は手で直してください。

kurotbutasan
質問者

お礼

早速のご回答ありがとうございます。 残念なことに電話番号も先頭に入れたり半ばに入れたりと無茶苦茶です; 今後の参考にさせていただきます。

関連するQ&A

  • エクセル2007セルをまるごと置き換える

    調べても分からなかったので、どなたかご教授お願いします。 エクセル2007を使用し、ある表から担当者だけを抜き出したいのですが、 担当者名の書かれているセルに、余分なことが複数入れられているため、 オートフィルタでの抽出や、Alt+Hでの置き換えがうまくいきません。 同セルの中にこれだけの情報が入っています。 「車の年式・車名・担当者・電話番号」 もしくは該当の担当者以外の担当者のセルを空白にしたりする方法でもいいです。 マクロ等VBAは分かりませんので、それ以外の方法がありましたら教えていただけないでしょうか? どうぞよろしくお願いいたします。

  • EXCEL 電話番号の抽出について教えてください。

    EXCEL 初心者です。 1)A1のセルに電話番号03-0000-0000又は090-0000-0000とあります。   「-」ハイフンをとりB1 C1 D1にそれぞれのセルに入れたいのですが・・・ 2)上記のほか、E1には、「-」ハイフンのみ取り除き連番としたいのです。 よろしくお願いいたします。

  • エクセルで電話番号から市内局番だけを抜き出したいのですが

    エクセルで、「○○-△△-××××」というようにハイフンで区切られた電話番号が入力されたセルに対し 市内局番だけ(または最後の番号だけ)を抜き出したいのですが、そういうことは可能でしょうか? よろしくお願いします。

  • エクセルで電話番号を - で分割する方法

    エクセルで電話番号のデータが入っています。ハイフンごとで3つのセルに分けて取り出す関数があれば教えてください。 01-2345-6789 012-345-6789 0123-45-6789 01234-5-6789 050-1234-5678 とハイフンの位置も桁も種類があります。左右の部分はLEFTとRIGHTで取り出せるのですが真ん中がうまく取り出せません。 よろしくお願いします。

  • Accessの電話番号フィールド

    Access2000以降について質問です。 顧客記録の電話番号フィールドについてお尋ねします。 異なるデータソース(テキスト形式)から各々に電話番号フィールドを含む2つのテーブルを作成したのですが、電話番号のフィールドがテーブル1では「ハイフンつき」の電話番号、テーブル2のほうでは「ハイフンなし」の電話番号になっています。また、いずれのフィールドもデータ型は「テキスト型」になっています。 やりたいことはテーブル1の電話番号にはないテーブル2の電話番号を含むレコードを不一致クエリを用いて抽出したいのですが、ハイフンがあるために全て不一致になってしまいます。 ハイフンを入れるのは地方の電話番号が多いため市外局番が3桁や4桁などで不揃いのためLEFT、RIGHT関数を用いて入れるのは不可能です。 そこでテーブル1のハイフンつき電話番号フィールドからハイフンを取り除きたいのですが、なにか方法はありませんか?VBAは分からないのでそれ以外でやる方法があれば教えて下さい。お願いします。

  • Excel97で電話番号の桁揃えって出来ますか?

    Excel97でA列に電話番号が入力されています。 03-****-**** 044-***-**** ・ ・ などと続くのですが、 ハイフンを揃える為のいい方法はありますか? 03 -****-**** 044- ***-**** ・ ・ といった風にしたいのですが。 セルの書式設定の表示形式でユーザー定義などで 出来ればいいなぁと思っています。 宜しくお願いします。

  • エクセル2000で・・・

    電話番号が入っているセルがあります。 すべてハイフンが入っているのですがそのハイフンのみを消したい思っています。 件数がかなりあるのでまとめて消すにはどうすればよいのでしょう?

  • エクセル 同じデータなのに違うという判定

    2つのエクセルファイル(電話番号リスト)を比較し、一致するものだけを抽出するという操作をしています。 フィルタオプションを使い、一致するものを抽出しているのですが、まったく同じ電話番号なのに、フィルタオプションで抽出されないものがあり、困っています。 たとえば、0120-234567という電話番号がファイル1にあったとして、まったく同じ番号がファイル2にもあるのですが、この2つが違うデータとして扱われてしまうのです。 試しに2つのファイルから、セルをそのままコピーし、別のエクセルファイルに並べ、if(A1=A2,"一致","一致しない")という関数をしてみると、なんと「一致しない」でした。 見た目的には全く同じなのに、何故なのでしょうか。 ちなみにそれぞれの電話番号セルをダブルクリックし、文字列のみコピーして同じことをすると、「一致する」になりました。 セルに見えないデータでもあるのかと、cleanをしてみましたが、セルをそのままコピーする方法だと、cleanをしても「一致しない」です。 一つ一つのセルをダブルクリック→文字列コピーをすればよいのですが、件数が多く手間です。 この2つのデータが見た目通り同じものだとされるためには、どのような方法があるでしょうか。

  • エクセルのオートフィルタについて

    エクセルのオートフィルタについてですが、一番取り扱いに困っている所は、社員の給与リストとかで、ある特定のデータ、例として事務員(一つの行の例えば一つのセルに名前、一つ横のセルに給与の数字(数値データ)がはいっている)を抽出した場合(事務員の記号がどこか同じ行にはいっているとして)数値の列を開いているセルで関数処理したい場合、表示されている数字だけを処理する場合と隠れている(多分)データも処理してしまう場合があり大変戸惑っています。なんとかどちらかに統一したいのですが、自分なりに調べましたが分かりません。どなたかご存知ないでしょうか。また、このオートフィルタで特定の数字や文字を抽出しようとしてもうまくいく時とそうでない時があります。なぜなのでしょうか。これはバグと考えても?

  • 電話番号の桁数

    ホームページの問い合わせフォームで、電話番号の入力チェックを作成したいと思っております。 (ちなみにPHPで作成です。) ハイフンなどの記号を削除し、最終的に「数値が○桁であれば良し」としたいのですが、存在する電話番号は何桁があるのでしょうか? NTTに問い合わせても「桁数は○○です」という返答がいただけなかったので、こちらで聞いてみました。 <条件> 1.国内の電話番号 2.固定・携帯も含む 3.連絡先として電話をかける場合に使用することができる番号 自分で調べた限りは固定が10桁、携帯が11桁という情報のみだったので、10桁or11桁で良しにしようかと思っていますがどうでしょうか。 どうかよろしくお願いいたします。

    • ベストアンサー
    • CGI

専門家に質問してみよう