dポイントプレゼントキャンペーン実施中!

01月→02月と置換をしたいのですが、ネットワーク内の他のシートやファイルを参照するため(他のPCから入力してもらう日報等)、1つ置換するたびにそのシートを参照しているようで非常に時間がかかっています。(1シート10万個ほど置換する必要があるファイルもあり・・・)

「置換だけ先に実行する方法はないでしょうか?」

シート名が同じファイルがあるため参照するシートを先に読み込んでおくことも出来ず・・・集計する項目が増えたり年度末は置換作業が多く、置換したまま帰宅→次の朝PCフリーズ・・・というトホホな状態が続いております。
皆様の知恵をお貸しください。宜しくお願いします。

A 回答 (4件)

ツール→オプションの計算方法のタブを開いて、計算方法を


手動にしてみてはいかがでしょうか。
置換作業が完了してから F9で再計算を実行することが出来ます。
    • good
    • 2
この回答へのお礼

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

お礼日時:2007/02/14 22:53

一旦外部ファイルに書き出した後に、エディーター(ワープロみたいの)に読み込んで、エディターの機能で一斉に置換する。

その後、エクセルに読み込む:って言うのはどうですか?一斉に置換するソフトがあればですが。。一太郎は行けそうに思います。
簡単なC言語を使って簡単に出来そうな気もしますが。
手元にソフトがなくて具体的なアドバイスが出来ずにm(__)m
    • good
    • 0
この回答へのお礼

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

お礼日時:2007/02/14 22:46

こんにちは。


>(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

#あまり参考にならなかったらごめんなさい。
    • good
    • 1
この回答へのお礼

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

お礼日時:2007/02/14 22:56

置換と言うのが良く分からないのですが・・・


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

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

お礼日時:2007/02/13 23:36

お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!

このQ&Aを見た人はこんなQ&Aも見ています