• ベストアンサー

文字列内の記号、スペースなどを削除する方法

エクセル2000 OS:WinXPpro 本人の技量レベル:VBAはコピペして実行しても、修正が出来ないので、なるべく関数で処理したい。 半角カタカナ英数だけの文字列を作りたいのです。 元のデータには()などの記号、句読点、スペース等が含まれています。 一応TRIM関数で余分なスペースは削除しましたが文字列中の半角スペースが残っています。 これを半角カタカナ英数だけを残してベタの文字列にしたいのです。

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

  • ベストアンサー
noname#5584
noname#5584
回答No.4

=SUBSTITUTE(SUBSTITUTE(C1,"-","")," ","")

meikosan
質問者

お礼

たびたびありがとうございます。 試してみました。=SUBSTITUTE(SUBSTITUTE(SUBSTITUTE(C1,"-","")," ",""),"。","")・・・と、削除対象をそれぞれブランクに置換えていけばよいのですね。 削除対象は10個以上はありそうなので、かなり長い関数になりますが、作業は相当に省力化できます。 どうもありがとうございました。

その他の回答 (5)

  • sakenomo
  • ベストアンサー率52% (35/67)
回答No.6

#5です。 >9個繋ぐと数式エラーがでます。理由は不明です。 こちらのテストでは、最終列まで数式を入れてもエラーになりませんが…。(?_?) いろいろ試してみましたが、エラーを再現できませんでした。 エクセル(2003)の仕様によると関数のネストは7つまでとのことで、要求される処理を1つの数式でこなすことには無理がありそうです。 あと、 >削除対照が沢山あるということなら、 削除"対象"、でした。

meikosan
質問者

お礼

ごめんなさい、言葉が足りませんでした。 エラーが出るのは、SUBSTITUTE関数のことです。ネストの個数オーバーなのですね、すみません、知りませんでした。お手数かけてしまって、ほんとにごめんなさい。 半数カナに自動的に変換する作業はほぼ完全できるようになり、手修正はほとんど不要になりました。 ありがとうございました。

  • sakenomo
  • ベストアンサー率52% (35/67)
回答No.5

削除対照が沢山あるということなら、手間はかかりますが、 セルA2に文字列を入れ、B1、C1、D1・・・に削除したい記号や句読点を、1つずつ入力します。 B2に、=SUBSTITUTE(A2,B$1,"")  を入れて、右へオートフィルでいかがでしょうか。長い関数を書くよりもラクな気がしますが。

meikosan
質問者

お礼

9個繋ぐと数式エラーがでます。理由は不明です。 二つの方法を併用するとカバーできそうです。 どうもありがとうございました。

  • imogasi
  • ベストアンサー率27% (4737/17069)
回答No.3

編集-置換-(検索する文字列)半角1スペース(場合によっては全角1スペース)-(置換後の文字列)なにも入れない、で全て置換をクリックで半・全角スペースやその他の文字が削除できるはずです。

meikosan
質問者

お礼

回答ありがとうございます。 #4さんの関数式で解決できました。

noname#5584
noname#5584
回答No.2

ヘルプは読みましたか?

meikosan
質問者

補足

読みました。が、置換え文字列・置換え対象に当たるものが無いのです。説明不足で作業イメージが違うようなので、補足します。煩雑ですが、ご容赦ください。 作業の例を書きますと、1.フリガナを設定したA列に日本語「図08-1 参照」を入力する。2.B列に=PHONETIC、で「ズ08-1 サンショウ」を表示する。 3.C列に=ASC、で半角表示「ズ08-1 サンショウ」。(この欄は半角カナが表示されないので、全角カナになりますが) ここまではできました。 次に、スペース・記号・句読点等を削除して、半角英数カナだけの文字列にしたいのです。 4.D列に「ズ081サンショウ」と表示する。 A列に入力すると、順次D列に「半角英数カナのベタ文字列」が表示されるようにしたいのです。 入力データは最初のA列だけなので、SUBSTITUTE関数で要求される「置換える文字列」とか「置換対象」がないと、思ったのですが、なんとかなるでしょうか?

noname#5584
noname#5584
回答No.1

(1) ワークシート関数のSUBSTITUTE関数 (2) VBAのReplace関数 のどちらか。

meikosan
質問者

お礼

回答、ありがとうございます。 でも、ごめんなさい、使い方がよく解りません。 たとえば、セルA1に“()ヲサクジョ”と入力したら、B1に“ヲサクジョ”と表示させたいのです。 入力は一度だけで、自動的に変換して欲しいので、 「置き換え」とはちょっと違うかな、と思うのですが。

関連するQ&A