
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

No.2
- 回答日時:
》 カタカナ
》 ひらがな
》 漢字
》 アルファベット
》 数字
》 上記以外を抽出または削除する
ひらがな、漢字以外は半角と全角があるけど「上記」の意味は両方ともですか?
》 &、()、’、'、”、←のような文字…削除したい
その中の「’」は半角文字「'」の全角文字なんだけど、分かってます?
他の3つは全角文字ということも?
No.1
- 回答日時:
>その都度SUBSTITUTEで指定するのが大変なのですが(置換機能も含む)
いやいや、面倒なら「置換」しましょう。
たかだか十数文字でしょ。
十数回「置換」するだけで6万件分すべてを対象とした「置換」が終わるのです。
これって凄いことですよね。
…まさかエラーになるセルをエラーの都度一つずつ置換などで修正しているなんて落ちはありませんよね?
・・・余談・・・
個人的には半角カナは全角カナに直すべきと思うんだ。
お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!
似たような質問が見つかりました
- 政治 私の発明した「二階建て漢字」は使えるでしょうか? 3 2023/02/08 16:40
- Excel(エクセル) エクセルについて教えてください。 一度入力した文字や数字を誤って削除や変更しないために、削除や変更を 3 2022/10/30 10:36
- Visual Basic(VBA) VBA 「,」・空白・カタカナ等の複数条件のマクロ 2 2023/08/23 11:57
- その他(プログラミング・Web制作) 2つのテキストファイルを比べて文字列を特定する方法を教えて下さい 5 2022/05/01 15:22
- Excel(エクセル) エクセルで重複データから重複を削除して指定の列に抽出したい 11 2022/05/11 11:26
- Visual Basic(VBA) VBAで、特定の文字より後を削除して残った数値を文字列に変換と特定の文字より前も削除したい 3 2022/04/15 19:21
- Excel(エクセル) 【エクセル関数】アルファベットで以上だったらカウントする 4 2022/07/09 14:07
- Visual Basic(VBA) 特定の文字を簡単な操作で半角スペースに変換するか削除したい 2 2022/11/01 10:35
- Excel(エクセル) VBA 文字列変換と指定した列にある日時データから時間を削除する方法について 2 2022/04/14 15:23
- その他(データベース) Accessのクエリで1フィールドの抽出条件設定をNullでなく全角半角含む空白のみの文字列でない文 1 2023/04/24 15:20
このQ&Aを見た人はこんなQ&Aも見ています
-
文字列から英数字のみを抽出する関数
Excel(エクセル)
-
EXCELで、漢字のみ抽出する式を教えてください。
Excel(エクセル)
-
EXCELで、セル内の半角カナのみを削除する関数
Excel(エクセル)
-
-
4
Excel2007でカタカナの文字のみを抽出、表示するには?
その他(Microsoft Office)
-
5
エクセル関数で記号から記号の間の文字を取り出す
Excel(エクセル)
-
6
エクセルでアルファベットか数値の判定をしたいのですが
Excel(エクセル)
-
7
エクセル、関数でセル内の半角カタカナ漢字、を分けて他のセルへ表示する方法
Excel(エクセル)
-
8
セル内文章から、英数字のみ取り出す関数を教えてください
Excel(エクセル)
-
9
エクセル関数またはVBAについて
Excel(エクセル)
-
10
エクセルの削除
Excel(エクセル)
-
11
数値とアルファベットに分ける(エクセル)
Excel(エクセル)
-
12
エクセルで文字化けしているセルを検索するには?
Excel(エクセル)
-
13
エクセルで、2種類のデータを交互に入れなおす方法はありますでしょうか??
Excel(エクセル)
-
14
エクセルでの漢字、カタカナ、ひらがななどの抽出について
Excel(エクセル)
-
15
エクセルで小数を含む数値の抽出
その他(Microsoft Office)
-
16
COUNTIF 半角全角区別せずに探したい
Excel(エクセル)
-
17
全角・半角混在の文字列から半角文字のみ取り出す
Excel(エクセル)
-
18
エクセル特定記号で囲まれた数字、文字を抽出
Excel(エクセル)
-
19
vba クリップボードクリアについて教えてください
その他(プログラミング・Web制作)
関連するカテゴリからQ&Aを探す
おすすめ情報
このQ&Aを見た人がよく見るQ&A
デイリーランキングこのカテゴリの人気デイリーQ&Aランキング
-
エクセルで文字の入力がセルの...
-
多数の計算セルに一括で同一の...
-
Excelの入力済みセルに一括で、...
-
excelで可視セルのみ置換
-
Excelで特定の文字の前だけに空...
-
Excelからテキストへのコ...
-
エクセルのセルの中の,よりも前...
-
Excelで、半角スペースをTABに...
-
SUBSTITUTE関数とREPLACE関数に...
-
エクセルでセル内の一部を一括...
-
Excelのアポストロフィーの削除
-
置換機能を使わずに先頭に「'」...
-
別シートのリストから置換する方法
-
Excelのシートにある1行...
-
EXCELエクセル長文の置き換え
-
excelからメモ帳への貼り付け
-
エクセルでの括弧内データの抽...
-
Excelのmatch関数エラー原因が...
-
【COUNTIFが上手く表示されない】
-
エクセルの数式の置換
マンスリーランキングこのカテゴリの人気マンスリーQ&Aランキング
-
エクセルで文字の入力がセルの...
-
多数の計算セルに一括で同一の...
-
Excelで、半角スペースをTABに...
-
Excelからテキストへのコ...
-
excelで可視セルのみ置換
-
Excelのシートにある1行...
-
Excelの空文字セルの削除方法を...
-
Excelの入力済みセルに一括で、...
-
エクセルのセルの中の,よりも前...
-
【エクセル】ピボットテーブル...
-
小数点を消す方法
-
置換機能を使わずに先頭に「'」...
-
Excelのアポストロフィーの削除
-
エクセルでセル内の一部分だけ...
-
Excelで特定の文字の前だけに空...
-
一括でダブルクリックした状態...
-
エクセルの関数で、記号などを...
-
エクセルでセル内の一部を一括...
-
企業名簿で(株)や(有)を無視し...
-
エクセルで「4」「9」抜けの...
おすすめ情報
毎回消したい文字が変わります。
特定の文字ではないので、現時点では↓以外の文字を探して置換しています。
カタカナ、カタカナ、アルファベット(ABC)、アルファベット(ABC)、
数字(123)、数字(123)、漢字、ひらがな
以外の文字を抽出(抽出できれば削除も可能なので)、削除したいのですが
何か良い方法がわかる方がいらっしゃいましたら、教えていただけないでしょうか。
よろしくお願いいたします。
後から追加で大変申し訳ないのですが
”アクティブセルのみ”に作用するよう変更できませんか。
こちらの都合で本当にすみません!!