【大喜利】【投稿~10/21(月)】買ったばかりの自転車を分解してひと言

Excelの置換が上手くいかない

Microsoft® Excel® 2019 MSO (バージョン 2207 ビルド 16.0.15427.20182) 64 ビット
Office2016でも同じ現象

Excelに以下のテキストを書いて保存。
【test(E)】【test】 【test (J)】

【*(E)】▶空白 で置換。

こうなることを期待。
【test】 【test (J)】

しかし結果は、全部消えてしまう。
なんで?

A 回答 (5件)

おはようございます


>全部消えてしまう。
【*(E)】このパターンマッチですべてが消える事は通常ないと思います
VBAでも同様です(事象の様に処理するオプション設定もないと思います)
たしかに不具合が発生しているかもですね(私も知らないだけかも)

通常、不具合が疑われ場合は、切り分けを行っていきますが、
2019・2016も同じとはちがうPCでも同じと言うじょとでしょうか?
少し気になりますが、新規ブックに作成しても同じなのでしょうか・・
ブックに問題があるのかオフィスに問題があるのか・・
はたまた更新時のバグ、不具合なのか、切り分ける事が出来ませんね

解決策では無いですけれど
検索や置き換えのオプションは引き継がれてしまうので何だかの不具合が引き継がれているのかも知れません
VBAをご存知であれば、不具合ブックのコピーを作り、Replaceメソッドを実行してみるのはいかがでしょう
もう試されているかも知れませんが、

処理対象はアクティブセルのみ
(結果を得るために値のあるセルを選択して実行してください

先ずは、ワークシート関数のSUBSTITUTEと同様の Replace関数
Sub test1()
ActiveCell.Value = Replace(ActiveCell.Text, "【test(E)】", "", 1, -1, 1)
End Sub
やっぱりセルの値全てが消えたかな?

次に
シートの置き換え操作と同じ処理の Replaceメソッドです
オプションをあいまい検索以外、Falseに設定

Sub test2()
ActiveCell.Replace What:="【*(E)】", Replacement:="", LookAt:=xlPart, _
SearchOrder:=xlByRows, MatchCase:=False, MatchByte:=False, _
SearchFormat:=False, ReplaceFormat:=False
End Sub

期待通りの結果が得られた場合は、シート機能の置き換えで再度試してみてください。

得られなかった場合は、振出しに戻りますが、
原因の切り分け作業を行って修復などを行う必要があるかも知れません
    • good
    • 0
この回答へのお礼

VBAは分かりません。PCを変えても同じです。エクセルの置換について昨日ググッてみたんだけどやり方は間違ってないようなので、マイクロソフトに聞いてみます。

お礼日時:2022/08/18 15:05

#2です。


(E)の文字列を含むセルだけを空白に置換、以外は置換しないのですね。
私もワイルドカードを使った文字置換は、経験ないのですが、substitute関数とif関数の組み合わせで、別シートに(E)の文字列のあるセルだけを空白として結果を取り出すことなら可能です。
今はスマホからなので、式を作って提示はできません。ごめんなさい。
    • good
    • 0
この回答へのお礼

セルじゃなくて文字列です。
ひとつのセルに
【test】【test(E)】【test(J)】
を記載した場合に、【test(E)】だけ削除したいのです。
前はできていたのに7月?くらいから突然出来なくなった、と思います。

お礼日時:2022/08/18 00:02

誤解してましたでしょうか?



(E)だけを消すんではなくtest(E)を削除するんですか?
だとしたら【*(E)】でうまくいきませんか?
自分でやってみましたがtest(E)のみ消えましたが。
    • good
    • 0
この回答へのお礼

私も、つい2ヶ月ほど前までは通常業務でしょっちゅうできていたのですが、突然出来なくなってしまって、なんだ?と思ってます。先日も似た質問をして、その時に確認したらマクロだと全部消えてしまう感じでした。でも今日はエクセルファイルでも消えてしまいます。
バグでは?と思ったのだけど調べてもそれっぽい情報が出てこないので、こちらで質問させて頂きました。

お礼日時:2022/08/17 23:01

【test(E)】▶︎空白で置換では?。

    • good
    • 0
この回答へのお礼

あの。。
そういう単純な置換でしたらそうしてますが、
【あ(E)】【い(E)】【あ】【い】。。などが数百パターン書かれたデータなので
【*(E)】▶空白 にしました。

お礼日時:2022/08/17 22:51

ワイルドカードの意味を間違っています。


*は任意の長さの任意の文字です。
したがって"*(E)→空白"は末尾に(E)を持つ文字列すべてを空白にしてしまいます。

(E)だけを空白に置き換えるのであれば*(E)ではなく(E)にしてください。

ちなみに置換後の値を何も入れなければ(E)は空白ではなく、消されます。
    • good
    • 0
この回答へのお礼

【test(E)】【test】 【test (J)】
のうち
【test(E)】だけ削除したいので
【*(E)】▶空白
で正しいのではないでしょうか?

お礼日時:2022/08/17 22:39

お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!


おすすめ情報