• ベストアンサー

Excel 文字列の中から数字だけを削除したい

Excel 2007で各セルに文字列として入力されている、数字を削除し文字だけにしたい。 数字は先頭に入力されています。(顧客コード) 例: 12345-001 ABC株式会社 98765- ZYX有限会社ごお商会 等 数字を削除し文字列だけで元のセルにセットしたいです。 きっと簡単なことなんでしょうけど、過去を検索しても良くわかりませんでした。 よろしくお願いいたします。

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

  • ベストアンサー
noname#204879
noname#204879
回答No.5

[No.3お礼]へのコメント、 私が提示した式の意味が分かる(と思う)添付図を参照ください。 B1: =TRIM(ASC(A1)) C1: =FIND(" ",B1) D1: =MID(B1,C1+1,99) 最後の式中の B1、C1 に上2つの式を代入すれば、提示式になります。 セル A2 の「ZYX有限…」の直前は全角スペースだったので、半角スペース1個にするために、先ずはASC関数で全角スペース1個を半角スペース2個にし、TRIM関数で複数個の半角スペースを1個に置き換えています。ちなみに、文字列の左端や右端にスペースがあればそれらを除去します。 最初のスペースの「次」から文字列を切り出すので「+1」になっています。 A列の文字数は百文字以上は考えなくてよかろうと推測して「99」にしました。 【注意】3行目以降に示したように、全角アルファベットおよび全角カナは、何れも半角文字になってしまいます。 以上の解説で分からなければ、貴方の「レベル」に合った回答に従ってください。

happy_rio123
質問者

お礼

mike_gさん 大変丁寧な解説ありがとうございます。 早速手元のデータで試してみました。 「B1」「C1」「D1」のセルが何を行っているのかがわかり、それを結果として 1つの式にまとめたものだということが良くわかりました。 「99」の謎解きも出来、胸につっかえていたものがとれてすっきりしました。 関数は長くなると訳がわからなくなるので、このように短くご説明いただくと とてもわかりやすかったです。はい私のレベルでも。 この盆の期間中に作成しなければならないものがあるので、四苦八苦いたしております。 また質問するかもしれませんが、よろしくお願いいたします。 どうもありがとうございました。

その他の回答 (5)

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

参考までに。 分離したい位置に必ずスペースが入っているわけでなく、文字列中にある最後の数字より右側の部分を抽出したい場合は以下のような数式で抽出できます(10文字目までに数字がある場合の数式)。 =TRIM(MID(A1,MAX(INDEX(ISNUMBER(MID(A1,ROW($1:$10),1)*1)*ROW($1:$10),))+1,100))

happy_rio123
質問者

お礼

MackyNo1さん  早速の回答ありがとうございます。 前出のmike_gさんから色々とお教えいただいていたので、長い式でも少し理解出来るようになってきました。 お教えいただいた式も自分なりに分解して考えてみます。 どうもありがとうございました。

  • kagakusuki
  • ベストアンサー率51% (2610/5101)
回答No.4

=IF(ISNUMBER(FIND(" ",TRIM(ASC(A1)))),REPLACE(TRIM(ASC(A1)),1,FIND(" ",TRIM(ASC(A1))),),A1&"") と言う方法もあります。(こちらは文字数に限界はありません)

happy_rio123
質問者

お礼

kagakusukiさん 早速の回答ありがとうございます。 皆さんから沢山の方法をお教えいただき助かっております。 一つの答えを導き出すのにも多くの方法があって、EXCELは奥が深いですね。 私は中々やり方が思いつかなくて苦労しております。 どうもありがとうございました。

noname#204879
noname#204879
回答No.3

=MID(TRIM(ASC(A1)),FIND(" ",TRIM(ASC(A1)))+1,99)

happy_rio123
質問者

お礼

早速の回答ありがとうございます。 一番すっきり答えが出て助かりました。 ただ大変申し訳ございませんが、知識不足のために 関数の中身が良くわかってないなく、式の内容が理解できていません。 色々と変更してみたのですが、何がどう機能しているのか お時間がおありでしたら、お教えいただけると幸いです。 どうして最後に「1+99」があるのかも良くわかっておりません。 恥ずかしながらよろしくお願い申し上げます。

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

ご質問が、スペースの前の部分を削除したいという意味なら、ワイルドカード文字を使った置換操作が簡単です。 対象範囲を選択し、Ctrl+Hで置換ダイアログを出して、検索する文字列に「* 」(アスタリスクに半角スペース)を入力し、痴漢する文字列には何も入力せず「すべて置換」します。

happy_rio123
質問者

お礼

早速の回答ありがとうございます。 検索・置換にこんな機能があったのかと感心した次第でございます。 ただ私の説明が悪くデータの中に「半角スペース」が1個だけではなく 12345-001 ABC株式会社 営業管理部 ○○様 のように複数あるために、お教えいただいた方法ですと、一番最後の スペースの後のみが残ってしまいました。 検索・置換でもっと何か方法があると助かるのですが.... どうもありがとうございました。

  • mu2011
  • ベストアンサー率38% (1910/4994)
回答No.1

一例です。 前提ですが、顧客コードと顧客名はスペースで区切られている事とします。 該当データ列がA列とし、以下の操作をお試しください。 (1)B列を選択→右クリックで挿入 (2)A列を選択→データタブ→区切り位置→次へ→区切り文字でスペースを選択→完了 (3)A列を削除

happy_rio123
質問者

お礼

早速の回答ありがとうございます。 助かりました。 区切り文字を使うノウハウは盲点でした。 いただいた回答が私のレベルには一番理解しやすかったです。 この方法ですと、文字列の中にいくつスペースがあっても先頭の不要部分を削除するには とても便利ですね。 どうもありがとうございました。

関連するQ&A