例えば、
「ABCD_001~ABCD_0100」という連番になっているデータを「EFG_251~EFG_350」と連番になっている形のデータを効率良く置換する方法はありませんか?
目的が達成できるフリーソフトあげば、教えてください。
連番になっていると分かっているならば、
ABCD_001となっているデータをEFG_251に書き換えて
EFG_251をフィルしてしまえばできます。
「ABCD_001~ABCD_0100」が、特定の「列」に入っているという前提で回答します。
A列に入っているのであれば、未使用の列(ここではZ列とします)に
="EFG_" & RIGHT($A1,3)+250
という式を入れてください。
次に、Z1セルを下方に向かってコピーしてください。(このとき式の $A1 はZ列に行に応じて $A2, $A3‥‥と変化していくものとします)
これで、Z列に変換後の文字列が入っていきます。
あとは、Z列をA列にコピー(形式を選択して貼り付け-値)とすれば、A列の内容を置換することができます。
上で書いた通りです。
置換する数値は、1~10と23~32と連番で対応しているのですが、
置換したいデータ自体が、重複しています。
ABCD_002はEFG_252
になりますよね。
ABDC_003は何に変換するんですか?
EGF_253とか?
何か規則性があるのでしょうか?
規則性は、連番だけで対応しておりません。
変換表をイメージしてください。
片方は1~500くらいまでの連番で表示されていますが、
変換前のデータは、1~50、1~80、1~125、1~245になっていると考えていただければと思います。
1対1の変換表が有りますが、EXCELの中にデータが散らばっており、500個のデータを500回置換する必要があるのが現状です。
変換表に基づいて一括で変換する方法は有りますでしょうか?
VLOOKUP 関数が適用できるケースではないですか?
変換表がA列に変換元、B列に変換先となっていた場合、変換表全体を選んで、
挿入⇒名前⇒定義で名前を付けてください(例:HENKANHYO)。
変換したいデータが、別のシートのA列にあるとすると、B1に
=VLOOKUP(A1, HENKANHYO, 2, FALSE )
として、B列全体にコピーします。
結果をコピーしそのままの状態で、編集⇒形式を選択して貼り付け⇒値を選んで張り付ければ、
データになりますので、それをA列に張り付けるなりして処理をしてはどうでしょうか。
シートのA列のデータをB列に置換するというような表を作ってシート名を変換表という名前にします。
後は、一括変換したいシートをアクティブにして以下のマクロを実行させてください。
Sub MacroTikan() Dim r As Range Dim i As Long With Worksheets("変換表") i = 1 While .Cells(i, 1).Value <> "" For Each r In ActiveSheet.UsedRange r.Value = Replace(r.Value, .Cells(i, 1).Value, .Cells(i, 2).Value) Next i = i + 1 Wend End With End Sub
ただし、上から順番に置換するので先に置換した内容が、後の置換に該当すると置換の上書きをしますが、
ABCD_001~ABCD_0100→EFG_251~EFG_350のようなデータなら大丈夫かな。
VBAを使ったことがなければ以下を参考に。
http://www.officepro.jp/excelvba/ini/index1.html
回答者 | 回答 | 受取 | ベストアンサー | 回答時間 | |
---|---|---|---|---|---|
1 | zsexdr | 2回 | 1回 | 0回 | 2008-08-08 00:56:38 |
すみません。
追加用件忘れていました。
一部
ABCD_002
ABDC_003
ABCD_003
ABCD_004
となっているケースがあり、一つずつ置換するしかないのが現状です。