• ベストアンサー

エクセルにて「間違った数値→正しい数値」を一気に置換したい

 あるエクセルデータの数値を一気に置換したいのですが、そのようなことはエクセルで可能なのでしょうか? ファイルデータが二つありまして、 ・間違った数値が載っているデータ ・間違った数値と正しい数値が順番に載っているデータ の二つがあります。 前者のデータの数値を、正しい状態に変えたいのですが、あまりに数が膨大で困っています。 もう一つの方ですが、A列に現在の間違った数値、B列に正しい数値が入っております。各々の行を見れば「Before→After」が分かるというわけです。 一気に置換する方法が分かる方が居ましたら、是非教えて下さい。宜しく御願いします。

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

  • ベストアンサー
  • mitarashi
  • ベストアンサー率59% (574/965)
回答No.3

Excelは数値も置換してくれるのだろうか? と疑問に思って、試しにやってみました。 結果 ・文字列形式でなくても、置換される ・表示桁数ではなく、実際に入っている桁数で比較される (従って、末端の桁まで全て合致していないと置換されない!!) ・置換後も数値扱いのままでした。(文字列形式にはならない) 但し、当方環境はExcel2000です。 単純化させて、試験してみたコードです。とりあえずは動きましたが、置換速度等は保証の限りではありません。 前提 ・Sheet1のA列に、訂正したい数値が入っている ・Sheet2のA列に訂正前の数値、B列に訂正後の数値という対照表が入っている。 Sub test()   Dim shs As Worksheet, sht As Worksheet   Dim whatStr As String, replaceStr As String   Dim i As Long   Set shs = ThisWorkbook.Sheets("Sheet2")   Set sht = ThisWorkbook.Sheets("Sheet1")   For i = 1 To 10 '対照表の行数を適当に与えた     whatStr = Trim(Str(shs.Cells(i, 1).Value))     replaceStr = Trim(Str(shs.Cells(i, 2).Value))     sht.Columns(1).Replace What:=whatStr,       Replacement:=replaceStr, LookAt:= _       xlWhole, SearchOrder:=xlByRows, MatchCase:=False   Next i End Sub ちなみに、Cells(i, 1).Textだと、表示されている桁数が返りました。

その他の回答 (2)

noname#46899
noname#46899
回答No.2

正しいデータを間違っているデータのセルにコピーすれば良いだけでは?

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

人間がやれば理論的にはやれる。ただ時間がかかったり、根気が続かない、という類の作業でしょう。(あと間違いやすいとかの理由で) それであればVBAを勉強して、プログラムを組めばできるでしょう。 置換はマクロの記録で祖形は出てきます。 行ごとの繰り回しをするためにどうするかですが、For Nextループでできるでしょう。 別ブックにまたがっているようなので、それなりの知識がいる。 しかし、急にはVBAプログラムを作るのは、無理でしょうね。 ーーー それと質問の内容が例も挙げてなくて、大雑把です。 それにA->C、C->Bのような変更前、変更後の組み合わせは無いのかな。2段で置換でA->Bになっても良いのかな(1回で変換はやめるようなルールないし実体はない?。) 数字はセル単位で対照表があるのか、文字単位か? ーー 質問に具体的にシート・行・列を決めて、またその実例データを挙げてないので、ご好意の回答者がいたとしても、コードを挙げてくれるとしても、書きにくいよ。