• ベストアンサー

エクセル 置換中の値の更新

01月→02月と置換をしたいのですが、ネットワーク内の他のシートやファイルを参照するため(他のPCから入力してもらう日報等)、1つ置換するたびにそのシートを参照しているようで非常に時間がかかっています。(1シート10万個ほど置換する必要があるファイルもあり・・・) 「置換だけ先に実行する方法はないでしょうか?」 シート名が同じファイルがあるため参照するシートを先に読み込んでおくことも出来ず・・・集計する項目が増えたり年度末は置換作業が多く、置換したまま帰宅→次の朝PCフリーズ・・・というトホホな状態が続いております。 皆様の知恵をお貸しください。宜しくお願いします。

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

  • ベストアンサー
回答No.2

ツール→オプションの計算方法のタブを開いて、計算方法を 手動にしてみてはいかがでしょうか。 置換作業が完了してから F9で再計算を実行することが出来ます。

popo_april
質問者

お礼

回答ありがとうございました!「手動にする」+「置換範囲を小さくする」で時間が短縮されました。一気に複数シートを置換していたのも原因だったようでした(途中でフリーズなど・・・)

その他の回答 (3)

  • isoyujin
  • ベストアンサー率21% (145/662)
回答No.4

一旦外部ファイルに書き出した後に、エディーター(ワープロみたいの)に読み込んで、エディターの機能で一斉に置換する。その後、エクセルに読み込む:って言うのはどうですか?一斉に置換するソフトがあればですが。。一太郎は行けそうに思います。 簡単なC言語を使って簡単に出来そうな気もしますが。 手元にソフトがなくて具体的なアドバイスが出来ずにm(__)m

popo_april
質問者

お礼

職場のPCに一太郎がなくインストールも不可で試すことができませんでした^^;  これだ!と思ったのですが残念・・・ 回答ありがとうございました!

  • pauNed
  • ベストアンサー率74% (129/173)
回答No.3

こんにちは。 >(1シート10万個ほど置換する必要があるファイルもあり・・・) というのはやはり多いと思います。 もしマクロに抵抗ないなら、サンプルですが、 選択範囲に対して、一旦配列に入れて、VBAのReplace関数で置換して元に戻す、という処理です。 置換したい範囲を選択して実行する必要があります。(試す場合はテスト環境で) Sub sample()   Const s1 As String = "01月" '置換前文字列   Const s2 As String = "02月" '置換後文字列   Dim i As Long   Dim j As Long   Dim v      '選択しているものがセル範囲でなければ何もしない   If TypeName(Selection) <> "Range" Then Exit Sub   Application.ScreenUpdating = False   With Selection     If .Count > 1 Then       v = .Formula       For i = 1 To UBound(v, 1)         For j = 1 To UBound(v, 2)           v(i, j) = Replace(v(i, j), s1, s2)         Next j       Next i       .ClearContents       .Formula = v     End If   End With   Application.ScreenUpdating = True End Sub #あまり参考にならなかったらごめんなさい。

popo_april
質問者

お礼

回答ありがとうございました!勉強不足で試すことも出来ませんでしたが・・・置換作業が一段落ついたら試してみたいと思います。

  • isoyujin
  • ベストアンサー率21% (145/662)
回答No.1

置換と言うのが良く分からないのですが・・・ そんなにデータが多くて時間が掛かるようなら、マクロとか、あるいは、エクセルではなくDBを直接プログラムで扱うようなシステムを考えた方が現実的では無いでしょうか?DBソフトでもいけそうな気がしますが、置換というのはイマイチ イメージできません。

popo_april
質問者

お礼

回答ありがとうございます。定型の報告資料に値だけコピーできるようにしているようで、新しいシステムは難しいかもしれません・・・。 参考にしてみます。

関連するQ&A

専門家に質問してみよう