• ベストアンサー

ExcelのROUND関数を一括解除したい。

ExcelのROUND関数を一括解除(削除)したいのですが、 やり方を教えてください。 具体的には、 以下のような計算式 =ROUND('収入データ'!A176/'収入データ'!A181,3) を ='収入データ'!A176/'収入データ'!A181 にしたいのです。 sheet内の表中あちこちに、 =ROUND('収入データ'!A26/'収入データ'!A31,3) =ROUND('収入データ'!A56/'収入データ'!A61,3) =ROUND('収入データ'!A86/'収入データ'!A91,3) などのROUND関数が設定されています。 置換で、*や?を使って試してみましたが、 「入力した数式にはエラーがあります。」という エラーメッセージが出て、うまく実行できません。 そもそも置換機能では一括解除(削除)できないのでしょうか。 以上、よろしくお願いします。

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

  • ベストアンサー
  • imogasi
  • ベストアンサー率27% (4737/17068)
回答No.4

VBAですが、標準モジュールに下記を貼り付けて、実行する。 Sub test01() Dim cl As Range For Each cl In Selection If cl.HasFormula Then f1 = cl.Formula p = InStr(f1, "ROUND") If p <> 0 Then s1 = Split(f1, ",") s2 = Split(s1(0), "(") f2 = "=" & s2(1) cl.Formula = f2 End If End If Next End Sub ROUNDという式のありそうな(大き目の)、セル範囲全体を範囲指定して、実行してください。ROUNDDOWN、ROUNDUPも省かれます。 上記VBAは式のあるセルを対象にし、ROUNDがあるか。あれば、初め式をカンマでわけ、その1番目をとり、再度その1番目を対象に、 それを(でわけその2番目をとり、=と結合したものを式として設定してます。 他の関数はそのままのはずです。 質問者はVBAがはじめてらしいのですが、上げてみます。

inaooo
質問者

お礼

ご指摘どおりVBAは初めてです。 Visual Basic Editorを開いて、何とか「標準モジュール」を見つけて、 貼り付けて、実行してみたら、 (実行された数式の解読までは無理ですが・・・) 確かに出来ました! ありがとうございました。

その他の回答 (3)

noname#176215
noname#176215
回答No.3

何回かに分ければできます。 検索する文字列:=ROUND( 置換後の文字列:★ [すべて置換] 検索する文字列:,3) 置換後の文字列: [すべて置換] 検索する文字列:★ 置換後の文字列:= [すべて置換] 以上です。

inaooo
質問者

お礼

一度文字列にしてから、ということですね。 ありがとうございました。

noname#123709
noname#123709
回答No.2

こんな方法でもよいのでしょうか? Sub test() Dim i As Range Dim j As Long Dim k As String For Each i In ActiveSheet.UsedRange If i.FormulaLocal Like "=ROUND*" Then j = Len(i.FormulaLocal) k = Mid(i.FormulaLocal, 8, j) i.Value = "=" & Left(k, j - 10) End If Next End Sub

inaooo
質問者

お礼

ありがとうございました。 No4の方の情報をもとに何とか実行してみたのですが、残念ながら 「アプリケーション定義またはオブジェクト定義のエラーです。」と出てしまいました。 デバッグを見たら、 i.Value = "=" & Left(k, j - 10) のところに黄色マークが付いていました。

inaooo
質問者

補足

SuperMildさん、上記はもしかしてマクロを使う方法でしょうか。 上記方法を是非とも試してみたいのですが、 私はマクロ使用経験がなく、ハードルが高くて、 今すぐ内容を理解することができません。 ・・・申し訳ないです。

  • Ryokucha
  • ベストアンサー率25% (115/450)
回答No.1

数式のまま変換は出来ないので 1.=ROUND( を aaa= にする   これで文字列扱いになります aaaは何でも構いません 2.,3)を置換で消します。 3.aaa= を =に変換する。 これでどうでしょう?

inaooo
質問者

お礼

ありがとうございます。試してみたら出来ました。

関連するQ&A

  • エクセル、特定の関数の一括削除

    2種類の関数(SUM・ROUND)を使って作った表が沢山あるのですが、検索・置換 の様な感じで、特定の関数(ROUND)だけ一括して削除する方法は有りますでしょうか? よろしくお願いします。

  • エクセルでの数式の一括変換

    エクセル98及びエクセル2003を使用しています。 たとえば、シート中にROUND関数が多数あったとして、それをROUNDDOWN関数に一括変換(置換)する方法はありますか? ちなみに私は簡単なよく使う関数(ROUND,IF、SUMIF等)は使いますが、マクロはほとんど使ったことのない初心者です。 よろしくお願いします。

  • round関数について

    お世話になります。Sql初心者です。 round関数について質問があります。 double型のデータを少数点第一位までのデータを取得したいと思っています。 select round(double型の数値)ではデータが取得できますが、 double型のデータをselect round(double型の数値,1)という形で とするとエラーになってしまいます。 double型のデータをround関数で小数点指定で取得する場合は、どの様に 記述すればよいのでしょうか? どなたかご教授願えますでしょうか? 何卒よろしくお願いいたします。

  • Excelの一括置換について

    仕事で使用している報告書のことです。 1つのブックに1ヶ月の日数分のシートがあり、各シートには数式がたくさんはいっています。 このブックが人数分あり、全て一つの報告書にリンクされるように数式が入っているのですが、例えば6月から7月 になった時に全ブックの数式を変えなければいけなく、一括で置換したいのですが良い方法はないでしょうか? ブックを開きシート上で置換していましたが、かなりの時間がかかっており困っています。 よろしくお願い致します。

  • EXCEL-VBA の round関数

    EXCEL-VBAで Cells(1, 1) = Round(Cells(3, 3), 0) として、 C3 に28.5 を入力し、上のマクロを実行すると、 A1には、28と表示されてしまいます。 ワークシート関数の =round(c3,0) を他の適当なセルに入力すると、 その返り値は、29 とちゃんとなります。 c3が 28.5001 とかだと両者ちゃんと 29 となります。 これは、VBA関数のバグなりスペックなのでしょうか?

  • Excel2016で文字列の一括置換を行うVBA

    Excel中級者です。Windows10, Excel2016で、別の「マスタ」シートにある表に従い、「Data」シートにある文字列を一括置換するVBAを教えていただけますと幸いです。マスタ表は2列 100行で1列目に置換前の語、2列目に置換後の語があります。dataシートは1顧客1行で、20列に商品名が入っており、同シートで一括置換を実行したく存じます。どうぞよろしくお願い申し上げます。

  • 多数の計算セルに一括で同一の関数を追加したい

    エクセル2007で、 A1:=X/Y A2:=S/T A3:=A/B といった、すでに数式の入力されたセルに、 A1:=round(X/Y,3) A2:=round(S/T,3) A3:=round(A/B,3) となるようRound関数を追加したいのですが、手入力でコピーアンドペーストする以外に何か方法はあるでしょうか? 後々に計算が続くため、出来れば「B1=round(A1,3)」の様なやり方は避けたいと思っています。 置換でまずroundを追加しようとしても、括弧が対応していないとエクセルに怒られました。

  • EXCELのcountif関数について教えてください。

    countif関数の一つ目の引数には範囲を指定しますが、この範囲は別のシートにまたがっているとできないんでしょうか。「数式で使用されるデータの形式が正しくありません」というエラーになってしまいます。具体的には、 =COUNTIF('sheet1:sheet2'!H63,"ア") という数式です。countif関数で、3Dカウントをしたいのですが・・・。

  • エクセル VLOOP関数

    エクセル初心者です。 エクセル2003を練習中なのですが 今、下画像の上段のようなデータのシートを作成しました。 シートは左の日付を3行セル結合しています。 このシートのデータを、画像下段の表のように 関数で表引きしたいのです。 下段の表は、左の日付を2行セル結合しています。 関数(VLOOPUP関数とINDEX関数)の使い方が、今一つ分かりませんでした。 どんな数式を入力していけばいいのでしょうか。 お願いします。

  • Excelの関数について

    sheet1で作成した表の合計数(使用関数:sumproduct)を sheet2で作成している表に反映させたいのですが、 VLOOKUPを使うと必ずエラーになってしまいます。 VLOOKUPと同じような方法で条件ごとに検索して データを引き出す事が可能な関数はないでしょうか? 解り辛いかもですが、よろしくお願いします。

専門家に質問してみよう