• ベストアンサー

エクセルで複数ファイルのセルの数式を一部置換

同じフォルダ内にある複数のエクセルファイルを1セルの一部分の数式を一括で置換したいのですが・・・ 例えば =int(sum(a1:a10))→=int(average(a1:a10)) sumをaverageに置換可能なのでしょうか? ファイルが大量にあるため全部のファイルをまとめて置き換えが出来ればと思いまして!よろしくお願いします。

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

  • ベストアンサー
  • ja7awu
  • ベストアンサー率62% (292/464)
回答No.3

次のマクロを実行すると、ご希望の置換え状態になるかと思います。 宜しかったら、新規ブックでテストしてみてください。 一応、ご存知とは思いますが、操作手順を詳しく書いておきます。 1.Alt + F11 で VBE(Visual Basic Editor)を開きます。 2.VBE のメニューから[挿入] -->[標準モジュール] を指定します。 3.モジュールウィンドウに下記コードをコピーして貼り付けます。 4. コードの 3~5 行目の「設定事項」を実情に合わせて変更します。  (今は、例えばの =int(sum(a1:a10))→=int(average(a1:a10))にしています。) 5.Alt + Q (または、右上隅の×)でウィンドウを閉じ、シートに戻ります。 6.もし、保存して何回か使用するときは、メニューから[ツール]-->[マクロ]-->  [セキュリティ]で「セキュリティレベル」を「中」にして[OK]します。 7.実行するときは、Alt + F8 (メニューから[ツール]-->[マクロ]-->[マクロ])で  「フォルダ内全ブック全シート計算式置換え」を指定し、[実行]ボタンを押します。 これで、フォルダ内の全ブックの計算式が指定したものに全部置換えになると思います。 ・ 検索対象ブックのシート内で、他ブックのセル参照が設定されている場合は、   その旨のダイアログボックスが表示されます。(手動で対応) ・ ブックやシートが保護によって書き換えられない状態が、無いものとします。 ・ 検索を終了すると、検索対象ブック数と、置換え総件数が表示されます。 Sub フォルダ内全ブック全シート計算式置換え() '--- 設定事項 ----------------- Const Mypath = "C:\DATA\" '             <--- 検索フォルダ名を指定 Const OldStr = "=INT(SUM(A1:A10))" '       <--- 置換え旧計算式(部分可) Const NewStr = "=INT(AVERAGE(A1:A10))" '   <--- 置換え新計算式(部分可) '----------------------------- Dim WB As Workbook Dim Rng As Range Dim FName As String Dim Bcnt As Integer Dim Dcnt As Integer Dim Scnt As Integer Dim N As Integer Application.ScreenUpdating = False Application.DisplayAlerts = False FName = Dir(Mypath & "*.xls", vbNormal) Do While FName <> ""   Set WB = Workbooks.Open(Mypath & FName)   Bcnt = Bcnt + 1   Scnt = 0   Windows(WB.Name).Visible = False   For N = 1 To WB.Worksheets.Count     Set Rng = WB.Worksheets(N).Cells.Find(OldStr)     If Not Rng Is Nothing Then       Scnt = Scnt + 1       Do         Rng.Formula = Replace(Rng.Formula, OldStr, NewStr)         Dcnt = Dcnt + 1         Set Rng = WB.Worksheets(N).Cells.FindNext(Rng)       Loop Until Rng Is Nothing     End If   Next N   If Scnt = 0 Then     WB.Close SaveChanges:=False   Else     Windows(WB.Name).Visible = True     WB.Close SaveChanges:=True   End If   FName = Dir   If FName = ThisWorkbook.FullName Then FName = Dir Loop Application.DisplayAlerts = True Application.ScreenUpdating = True If Bcnt = 0 Then   MsgBox "指定したフォルダに、ブックは見つかりませんでした。", , "検索完了" Else   MsgBox Bcnt & " のブックを検索し " & Dcnt & " 箇所を置換えました。", , "置換え完了" End If Set WB = Nothing Set Rng = Nothing End Sub

reonarudo8888
質問者

お礼

まず最初にお礼が遅くなりまして申し訳ございません。週末は自宅に不在でしたのでさきほどこちらのサイトをみました。 このマクロを実行すると、驚きました。一部を改正しただけで複数のファイルが一度で置き換えを行うことができました。勉強になりました。ありがとうございました。

その他の回答 (2)

  • sakeman
  • ベストアンサー率43% (67/153)
回答No.2

[Ctrl]+[G](ジャンプ)→[ジャンプ]→[セル選択]→[選択オプション]→[数式]をチェック→[OK] 数式の入っているセルが選択される。 [Ctrl]+[H](置換)→[検索と置換]→[置換]→[検索する文字列]→「sum」と入力→[検索後の文字列]→「average」と入力→[すべて置換]→[閉じる] これで可能かと思いますが、お試し下さい。

reonarudo8888
質問者

お礼

まず最初にお礼が遅くなりまして申し訳ございません。Sakemanさんがおっしゃてるのは、たぶん単独のファイルの置き換えだと思います。私の質問は、数千もある大量のエクセルファイルを一度の操作で簡単に関数の数式を置き換えしたかったのです。私の質問がわかりにくかったもしれません。すいませんでした。何かありましたらよろしくお願いします。ありがとうございました。

  • neKo_deux
  • ベストアンサー率44% (5541/12319)
回答No.1

そういう業務向けのオンラインソフトがあります。 こちらが簡単そうです。 OfficeGrep http://www.vector.co.jp/soft/win95/util/se190183.html -- VBAを利用して操作を自動化することも可能です。 [ツール]-[マクロ]-[新しいマクロの記録]で個人用マクロブックに記録、それぞれのファイルを開いて実施とか、ファイルを開く~保存までもVBAで記述とか。

参考URL:
http://www.vector.co.jp/soft/win95/util/se190183.html
reonarudo8888
質問者

お礼

ありがとうございました。また何かありましたらよろしくお願いします。

関連するQ&A

  • エクセルの数式の置換

    エクセルの数式の置換 FileAの数式をFileBにコピーしたのですが、「FileA」の書式が残ってしまい、それを置換しようとしてもうまくいきません。 串刺し計算の数式 =SUM('[FileA.xls]Sheet1:Sheet4'!セル)を FileBの中で =SUM('Sheet1:Sheet4'!セル) となるように置換したいのですが、どのようにすればいいでしょうか?

  • 【エクセル】検索と置換で複数の数式の、範囲を変える

    タイトルの件、質問いたします。 下記の2つの数式があります。2つの数式のセルの範囲を →検索と置換を使い、【A3:A14】に変更する事はできますか?? →検索と置換機能ではなくても、OKです。現在は、手入力で全て変更しています。 ●C15セル=SUM(C3:C14) ●D15セル=SUM(D3:D14) ご存知の方、いらっしゃいましたら、宜しくお願いします。」 【エクセルバージョン】 2003 2007

  • エクセルのセル中の一部文字置換について

    エクセルのセルの中の、たとえば「赤い帽子」、「赤いズボン」、「赤い靴」・・・・・と大量にある列のセルの部分の、「赤い」という部分のみを「青い」に一括置換できるでしょうか。うまくいかないので、どなたかお教えください。

  • エクセルの置換について

    セルに次のような数式が入っているときに数式の部分だけ置換する方法がありましたらご指導お願いします。 [B1] =SUM(A1+A2) →置換後 =A1+A2 [B2] =SUM(A10+A20) →置換後 =A10+A20 [B3] =SUM(A100+A200) →置換後 =A100+A200 置換する方法は「編集」-「置換」で 検索する文字列と置換後の文字列が分かりません。 SUM(で置換をかけると数式エラーで置換が出来ず SUM(*)で置換をかけると当然ですが全て消えます。 お手数ですが宜しくお願致します。

  • excel 数式に含まれている名前を置換するには、

    こんにちは、 excelで、別EXCELからリンク貼り付けした数式に含まれているセルがあります。その数式内にあるファイル名を置換したいのですが、多数のセルがあるので一揆にできないかと考えています。何かいい方法がありましたら教えてください。 例) faile01.xls    file02.xls(参照元) A1:「\file02.xls\A1」 A2:「\file02.xls\A2」 A3:「\file02.xls\A3」 という数式が入っている。 上記で、使途全体より数式内にあるfile02.xlsを一気にfile03.xlsに変更する。 よろしくお願いします。 A1:

  • エクセルで複数語句の一括置換がしたい。

    1つのシートの複数のセルの中に文章が記入してあり、その中の文字を 一括で置換したいのです。 AAAA → BBBB 1234 → 5678 ○×△□ → ●×▲■ このように変更したい文字が数百とあります。 また、置換前の語句(セルA1~)と置換後の語句(セルB1~)というように エクセルの別のファイルに並べております。 どのようにすれば出来るのかお教え頂けませんでしょうか? もしマクロなどで出来るとしたら、初心者ですので細かいやり方などお教え頂けたらありがたいと思っております。 よろしくお願いいたします。

  • エクセルでセルの値によって数式を変えたい

    エクセル2003を使用しておりますが、セルの値によって数式を変えることはできますでしょうか。 例えば A1に切り上げの文字が入っていれば、B1はROUNDUP(100/3,0)に、 A1に切り捨ての文字が入っていれば、B1はROUNDDOWN(100/3,0)に、 A1に四捨五入の文字が入っていれば、B1はROUND(100/3,0)に、 のようにしたいです。 IF文を使えばもちろんできるのですが、すでに指定されている多数の 数式を、一括で置換したいと思っております。

  • EXCELのセル内複数行セルの置換方法

    EXCELの1つセル内に複数行入力してあります。 この内の複数行を一括変換する方法が知りたいです。 例) A1セルに 名前:マイケルジャクソン 住所:福岡県 性別:女 部活:パソコン部 年齢:17歳 とあった場合、 名前:マイケルジャクソン 住所:福岡県 を空白で置換して、 性別:女 部活:パソコン部 年齢:17歳 だけにしたい時、一括で置換することはできますでしょうか? 同様な形態で、A2、A3と数百行あります。 よろしくお願いいたします。

  • エクセル 数式のはいっているセルのコピー

    エクセルで、数式のはいっているセルをCtrl+ドラッグでコピーすると セル内の数式も変化しますよね? 例:SUM(A1:A5)を右にコピーするとSUM(B1:B5)のように。 これって、エクセルの基本で便利機能だと思うんですが、 これをSUM(A1:A5)のままコピーすることってできますか? 別のシートとリンクさせてグラフ化しているんですが、コピー後にひとつひとつ直すの、とても面倒で、ミスの元になりそうなんです。 よい方法ありましたら教えてください。 よろしくお願いします。

  • Excelで複数のセルを1つにする数式について

    こんにちわ。早速ですが質問です。 Excelで複数のセルを1つにする際、=A1&B1 のようにする方法があります。 この数式は=A1&+B1 にしても基本的に結果は同じだと思うのですが、 『&』と『&+』で違いはあるのでしょうか。 よろしくお願い致します。

専門家に質問してみよう