• 締切済み

EXCELデータ上で複数のキーワードを一括置換したい

apple→りんご、book→本、cat→猫・・・ というように、複数の用語を置換しなければならないのですが、ひとつひとつ置換作業を行うには数が膨大で困っています。 テキストファイルならば専用のシェアウェアがいくつか販売されているようですが、エクセル上でこのような一括置換を行うことは可能でしょうか?エクセル上で作られている図表をそのまま生かした形で置換ができないかと思っています。

みんなの回答

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

#2です。 >構成→structure」と「構成部品→component・・・ 先ほど思い出して、「アドバイスを入れようかどうか」迷いましたが、先にお礼のコメントが入ってしまいました。下記はぜひ考えるべき要領(テクニック)です。 合成語などについて特に 「変換前の単語に付いて、文字数の多い単語を先に(エクセルの表ならより上の行に)もって来るべきです。」 先に変換されてしまうと、短い語句の方で変換は起こらないからです。 =len(A1)などで文字数を余分列にだし、この列も入れて ソート(降順)することをお勧めします。 降順がいやなら、=12-LEN(A1)など考えてください。12は適当文字数を見繕ったもの。

  • coco1
  • ベストアンサー率25% (323/1260)
回答No.3

遅くなってしまいました。 要点は#2さんが作成されていますので、既にご理解されていると思います。 >>「構成→structure」と「構成部品→component」が並 >>存していると、どちらにも置換されませんでした。 という現象ですが、作成済みの対照表を日本語の文字列が長い順にソートして実行する、などしてはダメでしょうか。

tentama
質問者

お礼

ありがとうございます。 それもやってみたのですが・・・それと、 「構成→structure」「structure部品→component」などともしてみたのですが、やはりどちらも変換されないようです。

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

For Next文とReplaceメソッドだけを使ってやって見ました。 Sub test01() Dim sh1 As Worksheet Dim sh2 As Worksheet Set sh1 = Worksheets("sheet1") Set sh2 = Worksheets("sheet2") d1 = sh1.Range("a1").CurrentRegion.Rows.Count For i = 1 To d1 a = sh1.Cells(i, "A") b = sh1.Cells(i, "B") sh2.Cells.Replace a, b Next i End Sub さて、質問者のケースに合わせて上記コードを少し変更できるでしょうか。 Sheet1を変換語句の対照表の辞書シート、Sheet2を文書シートとします。 まず慎重にやるため、文書シートを別シートとしてコピーしてやってください。元に戻すは出来ませんから。 (1)Sheet1、Sheet2のシート名を自分に合わせて変えること。 (2)変換語句の対照の辞書シートはSheet1で「apple」がA列、「りんご」がB列にあるものとします。「Apple」を含んだ文章はSheet2にあるものとします。 (3)大文字小文字、全角・半角文字、複合語(例whitehouse)を「白い」「家」と置換して良いのか、など問題はあろうが考慮してません。翻訳的な考慮は一切なし。 (4)変換時間にしても、大丈夫と思いますが、多量データでは未テストです。 (5)SearchOrder:=xlByRows, MatchCase:=False,などのパラメーター指定も、略してますが、必要か考えて下さい。

tentama
質問者

お礼

ありがとうございます!変換されてます。 語句の一部がバッティングしてしまうと、変換されないようですね。 たとえば「構成→structure」と「構成部品→component」が並存していると、どちらにも置換されませんでした。このあたりは、やむをえないんでしょうか?

  • coco1
  • ベストアンサー率25% (323/1260)
回答No.1

マクロを作成した方が早いと思います。

tentama
質問者

お礼

回答ありがとうございます。 マクロを作ってみたところ、以下のようなものができました。 Cells.Replace What:="目次", Replacement:="CONTENTS", LookAt:=xlPart, _ SearchOrder:=xlByRows, MatchCase:=False, SearchFormat:=False, _ ReplaceFormat:=False あとは、これをたくさんコピーして「目次」「CONTENTS」の部分にそれぞれの単語を入れていけばいい訳ですが、その作業はエディタか何かでできないものでしょうか? 現在、別のエクセルファイルで日英対照単語集を持っています。これを一括加工してマクロの式が書ければと思っています。

関連するQ&A