![](http://oshiete.xgoo.jp/images/v2/pc/qa/question_title.png?e8efa67)
No.6ベストアンサー
- 回答日時:
No.3です。
>”アクティブセルのみ”に作用するよう変更できませんか。
↓に変更してみてください。
Sub Sample2()
Dim c As Range, myRng As Range
Set myRng = Selection
For Each c In Worksheets("Sheet2").Range("A1").CurrentRegion
If c <> "" Then
myRng.Replace what:=c, replacement:="", lookat:=xlPart
End If
Next c
MsgBox "完了"
End Sub
連日お忙しい中ありがとうございます。
おかげさまで何とか次の段階に進むことができそうです。
しかし複雑なVBAコードを書ける方というのは
私のような者からすると天才としか思えないのですが
学校とかに通ってその後何年も勉強してらっしゃるのか、
そもそもオツムの出来具合が違うのか、、、
下らない弱音を書いてお目汚ししてしまいすみません。
ありがとうございました。
No.7
- 回答日時:
こちらの質問には答えていただいていないので、こちらで、想像で作らせていただきました。
私の想像とは違うものなのか、それさえわからないけれども、言葉どおりに(抜けは存在するかもしれませんが)作れば、こうなるという見本のようなものです。これは、アクティブセルのみです。しょせん、納得いかないものを作ったものですから、返事は、つけてもつけなくても、どちらでもよいです。Unicodeに統一したかったのですが、できずじまいでした。数式は、当たり前ですが、「=」 がなくなります。
'//
Sub DeleteOthers()
Dim RegEx As Object
Dim Ms, m
Dim kata_h, kata_z, alpha_z, alpha_h, hira
Dim entTxt As String
Dim buf As String
Set RegEx = CreateObject("VBScript.RegExp")
With RegEx
'カタカナ、カタカナ、アルファベット(ABC)、アルファベット(ABC)、
'数字(123)、数字(123)、漢字、ひらがな
kata_h = Chr(&HA6) & "-" & Chr(&HDF) '半角カタカナ
kata_z = ChrW(&H30A1) & "-" & ChrW(&H30F6) '全角カタカナ
alpha_z = Chr(&H8260) & "-" & Chr(&H829A) 'アルファベット全角
alpha_h = "A-Za-z"
hira = ChrW(&H3041) & "-" & ChrW(&H3093) 'ひらがな
.Global = True: .IgnoreCase = False: .MultiLine = True
.Pattern = "([^一-龠\d\0-9" & kata_h & _
kata_z & alpha_z & alpha_h & hira & "]+)"
End With
If ActiveCell.HasFormula Then
entTxt = ActiveCell.Formula
Else
entTxt = ActiveCell.Value
End If
Set Ms = RegEx.Execute(entTxt)
buf = entTxt
For Each m In Ms
buf = Replace(buf, m.Value, "")
Next
ActiveCell.Value = buf
End Sub
ご回答ありがとうございます。
今朝確認いたしましたもので質問にお答えせず、
大変申し訳ございませんでした。
当方の質問が説明不足でしたが、エラーになる式というのは
別シートにあるデータをINDIRECT関数で引っ張る式です。ただその素データは複数の人間が手打ちで入力する、式ではない固有名詞で、それ自体にカッコやらスラッシュやらハイフンやら様々よけいなモノが混じっております。(最初から入力するなというのは難しい…)
基本的にはちゃんと働く式なのですが、エラーが出る場合があり、その理由を調べたら、元データに&や’が含まれている時にエラーが出ることがわかりました。
そのため、現時点では頻度の高い、検討のつく記号は元データを事前に置換し、それでもエラーの出る場合、目視で探してさらに置換をする、という手順をふんでおりました。(元データの量が多いので、エラーの元となる記号がたとえ2.3個だったとしても探すのがきつい。)
なので、元データ(式ではない)の時点で余計な文字を一括で排除できれば、と思って質問させていただきました。
No.5
- 回答日時:
>エクセルの関数で、
>毎回消したい文字が変わります。
関数として成立していないから、それを置換で直すなんて、ちょっと考えられません。
それが、6万件とか、Excelの表に載せる前の段階で加工するなりすればよいのではなかったのですか?
具体例のパターンを出来る限り上げてほしいです。
自信のある人は、それを見ないで可能なのかもしれませんが、私は、そんなことは言えないですね。
文字でエラーになるのではなく、数式スタイル上でのエラーになっているのではないでしょうか。つまり、その対象は、数式でエラーを出しているという所のはずです。そして、数式を文字列として扱うわけです。
私は、おそらく、VBAマクロとしても特殊なスタイルで、単純な置換ではないと考えました。エラーが出る原因が、そういう文字が入るという単純な理由なのでしょうか。そんなことはあり得ないと思います。なぜ、そんな文字が入ったのでしょうか?
>&、()、’、'、”、←のような文字が含まれている場合エラーになる式
これらの文字が含まれているだけではエラーにはなりません。
「カタカナ、カタカナ、アルファベット(ABC)、アルファベット(ABC)、
数字(123)、数字(123)、漢字、ひらがな」
以下のこれらの文字を省いたら、エラーでない所もエラーになります。
=を始め 、+,-,*,/ ,(,)
数式が数式と成り立つような文字列にし直さなくてはならないはずです。
そんなにかんたんにできるとは思えません。
No.3
- 回答日時:
こんばんは!
手っ取り早くVBAでの一例です。
元データはSheet1にあるとします。
まずSheet2に削除する文字列を羅列しておきます。
(薄い黄色が半角、その他が全角になります。)
※ 注意点 ※
絶対に「?」と「*」は入れないでください。
ワイルドカードになりますので、すべてのセルが空白になります。
標準モジュールです。
Sub Sample1()
Dim c As Range
For Each c In Worksheets("Sheet2").Range("A1").CurrentRegion
If c <> "" Then
Worksheets("Sheet1").Cells.Replace what:=c, replacement:="", lookat:=xlPart
End If
Next c
MsgBox "完了"
End Sub
※ 画像はこちらが勝手に削除する文字を選んだだけです。m(_ _)m
![「エクセルの関数で、記号などを抽出もしくは」の回答画像3](http://oshiete.xgoo.jp/_/bucket/oshietegoo/images/media/b/667667_59e08c4e22830/M.jpg)
No.2
- 回答日時:
》 カタカナ
》 ひらがな
》 漢字
》 アルファベット
》 数字
》 上記以外を抽出または削除する
ひらがな、漢字以外は半角と全角があるけど「上記」の意味は両方ともですか?
》 &、()、’、'、”、←のような文字…削除したい
その中の「’」は半角文字「'」の全角文字なんだけど、分かってます?
他の3つは全角文字ということも?
No.1
- 回答日時:
>その都度SUBSTITUTEで指定するのが大変なのですが(置換機能も含む)
いやいや、面倒なら「置換」しましょう。
たかだか十数文字でしょ。
十数回「置換」するだけで6万件分すべてを対象とした「置換」が終わるのです。
これって凄いことですよね。
…まさかエラーになるセルをエラーの都度一つずつ置換などで修正しているなんて落ちはありませんよね?
・・・余談・・・
個人的には半角カナは全角カナに直すべきと思うんだ。
お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!
このQ&Aを見た人はこんなQ&Aも見ています
-
初めて自分の家と他人の家が違う、と意識した時
子供の頃、友達の家に行くと「なんか自分の家と匂いが違うな?」って思いませんでしたか?
-
文字列から英数字のみを抽出する関数
Excel(エクセル)
-
EXCELで、漢字のみ抽出する式を教えてください。
Excel(エクセル)
-
EXCELで、セル内の半角カナのみを削除する関数
Excel(エクセル)
-
-
4
エクセルでセルの中身が漢字かどうか識別する方法は?
Excel(エクセル)
-
5
エクセルの削除
Excel(エクセル)
-
6
Excel2007でカタカナの文字のみを抽出、表示するには?
その他(Microsoft Office)
-
7
セル内文章から、英数字のみ取り出す関数を教えてください
Excel(エクセル)
-
8
エクセルでひらがな・漢字はそのままでカタカナを全角・英数字を半角にする方法
Excel(エクセル)
-
9
EXCELで=より左の文字を一括で削除したい
Excel(エクセル)
-
10
Excel2003のセルから漢字のセルだけ取り出す方法
その他(Microsoft Office)
-
11
EXCEL VBA 記号の削除
Excel(エクセル)
-
12
エクセル関数で記号から記号の間の文字を取り出す
Excel(エクセル)
-
13
文字列に数字を含むセルを調べたい
Excel(エクセル)
-
14
全角・半角混在の文字列から半角文字のみ取り出す
Excel(エクセル)
-
15
エクセルでアルファベットか数値の判定をしたいのですが
Excel(エクセル)
-
16
VBAで保存しないで閉じると空のBookが残る
Excel(エクセル)
-
17
自分の部署・担当を言うとき、どういう言い方が正しいでしょうか?? 会社のときは、弊社といいますが、部
その他(ビジネス・キャリア)
-
18
エクセル関数またはVBAについて
Excel(エクセル)
関連するカテゴリからQ&Aを探す
おすすめ情報
このQ&Aを見た人がよく見るQ&A
デイリーランキングこのカテゴリの人気デイリーQ&Aランキング
-
エクセルで文字の入力がセルの...
-
多数の計算セルに一括で同一の...
-
Excelの入力済みセルに一括で、...
-
エクセルのセルをカンマに、改...
-
小数点を消す方法
-
Excelからテキストへのコ...
-
Excelのシートにある1行...
-
エクセルで「4」「9」抜けの...
-
置換機能を使わずに先頭に「'」...
-
エクセルの表ををメモ帳などに...
-
【エクセル VBA】置換処理について
-
Excel 「k」の単位表示を数値に...
-
エクセルのセルの中の,よりも前...
-
Excelの関数、文字列操作
-
別シートのリストから置換する方法
-
エクセルでスペースの記号を表...
-
エクセルでの括弧内データの抽...
-
表をコピペして、その表のオー...
-
エクセル マクロで転記したら...
-
EXCEL ワイルドカードを...
マンスリーランキングこのカテゴリの人気マンスリーQ&Aランキング
-
エクセルで文字の入力がセルの...
-
多数の計算セルに一括で同一の...
-
Excelからテキストへのコ...
-
エクセルのセルの中の,よりも前...
-
置換機能を使わずに先頭に「'」...
-
Excelの入力済みセルに一括で、...
-
excelで可視セルのみ置換
-
Excelで、半角スペースをTABに...
-
Excelのmatch関数エラー原因が...
-
Excelの空文字セルの削除方法を...
-
【エクセル】ピボットテーブル...
-
エクセルでセル内の一部分だけ...
-
小数点を消す方法
-
Excelで特定の文字の前だけに空...
-
Excelのアポストロフィーの削除
-
エクセルの表ををメモ帳などに...
-
エクセルの関数で、記号などを...
-
企業名簿で(株)や(有)を無視し...
-
EXCELで"Tab"を"@"に置換したい
-
エクセルでスペースの記号を表...
おすすめ情報
毎回消したい文字が変わります。
特定の文字ではないので、現時点では↓以外の文字を探して置換しています。
カタカナ、カタカナ、アルファベット(ABC)、アルファベット(ABC)、
数字(123)、数字(123)、漢字、ひらがな
以外の文字を抽出(抽出できれば削除も可能なので)、削除したいのですが
何か良い方法がわかる方がいらっしゃいましたら、教えていただけないでしょうか。
よろしくお願いいたします。
後から追加で大変申し訳ないのですが
”アクティブセルのみ”に作用するよう変更できませんか。
こちらの都合で本当にすみません!!