- ベストアンサー
エクセルにて「間違った数値→正しい数値」を一気に置換したい
あるエクセルデータの数値を一気に置換したいのですが、そのようなことはエクセルで可能なのでしょうか? ファイルデータが二つありまして、 ・間違った数値が載っているデータ ・間違った数値と正しい数値が順番に載っているデータ の二つがあります。 前者のデータの数値を、正しい状態に変えたいのですが、あまりに数が膨大で困っています。 もう一つの方ですが、A列に現在の間違った数値、B列に正しい数値が入っております。各々の行を見れば「Before→After」が分かるというわけです。 一気に置換する方法が分かる方が居ましたら、是非教えて下さい。宜しく御願いします。
- みんなの回答 (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)
正しいデータを間違っているデータのセルにコピーすれば良いだけでは?
- imogasi
- ベストアンサー率27% (4737/17069)
人間がやれば理論的にはやれる。ただ時間がかかったり、根気が続かない、という類の作業でしょう。(あと間違いやすいとかの理由で) それであればVBAを勉強して、プログラムを組めばできるでしょう。 置換はマクロの記録で祖形は出てきます。 行ごとの繰り回しをするためにどうするかですが、For Nextループでできるでしょう。 別ブックにまたがっているようなので、それなりの知識がいる。 しかし、急にはVBAプログラムを作るのは、無理でしょうね。 ーーー それと質問の内容が例も挙げてなくて、大雑把です。 それにA->C、C->Bのような変更前、変更後の組み合わせは無いのかな。2段で置換でA->Bになっても良いのかな(1回で変換はやめるようなルールないし実体はない?。) 数字はセル単位で対照表があるのか、文字単位か? ーー 質問に具体的にシート・行・列を決めて、またその実例データを挙げてないので、ご好意の回答者がいたとしても、コードを挙げてくれるとしても、書きにくいよ。