• ベストアンサー

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

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

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

  • ベストアンサー
  • xls88
  • ベストアンサー率56% (669/1189)
回答No.3

試しにマクロを組んでみました。 検証が不十分ですが、ほぼ、いけてるかも知れません。 数式内に、ROUND関数が1個のみに限定です。 Sub test1()   Dim c As Range   Dim cf As String   Dim hf As String   Dim kf As String   Dim myflg As Boolean   Dim i As Long   Dim j As Long   Dim n As Integer   Dim k As Integer      kf = "ROUND"   For Each c In Range("A1:A10")     k = 0     myflg = False     cf = c.Formula     For i = 0 To UBound(Split(cf, "("))       If InStr(Split(cf, "(")(i), kf) Then         cf = Replace(cf, kf & "(", "")         n = UBound(Split(cf, ")"))         For j = n To 0 Step -1           If k = i Then             hf = Replace(cf, "," & Split(Split(cf, ")")(j - 1), ",")(1) & ")", "")             c.Formula = hf             myflg = True             Exit For           End If           k = k + 1         Next j       End If       If myflg = True Then Exit For     Next i   Next End Sub

その他の回答 (3)

  • hige_082
  • ベストアンサー率50% (379/747)
回答No.4

式の入っていそうな所を選択しておき、マクロを実行 Sub test() Dim a As Range For Each a In Selection If a.Formula = "=RAND()" Then a.Value = "" Next a End Sub

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

VBAを駆使してやれば、(どんな場合でもではなく)適した関数では、置換できるかも知れないが、一般には難しいでしょう。 ーー 関数ではまず無理です。そのセルに関数で別の関数を入れられない。 その関数を参照している関数もありえる。別列に作るにしても参照している式があれば複雑になる。作り変えたほうが早いでしょう。 ーー 引数の問題も有る。関数には引数があり、関数を変えると、今までの関数のその引数が不要になって抹消する必要性とか、増減・変更の必要もありえる。編集ー置換操作ではこれも難しい。 ーーー エクセルの関数入力は、1つのセルにだけまず入れて、式の複写で多数セルに展開する(列方向、行方向、列行方向複合(注))ことがほとんどである。(注)それなりに、多分ROW()やCOLUMN()を使って、式のカタチを工夫が必要だが。 だから大本を1箇所変えて、その式を複写すれば、部分的に全部変更できる場合が多いはずだ。 質問のようなことは、いままでこのコーナーにあまり質問に出てこない。思いつき、すぐの質問のようにおもう。 そういう観点からの質問に考えを切り替えてみては。 「数箇所の式の再設定および式の複写はでは無理か」。

  • xls88
  • ベストアンサー率56% (669/1189)
回答No.1

数式内で使われているROUND関数を消去したいということでしょうか? 対象の数式はどうなっていますか? ≪様式が同じ場合≫ 元の数式を変更し、他の数式セルにコピー ≪様式がバラバラの複数の数式の場合≫ 試しに、「置換」で関数のみを消去しようとすると、アラートが表示されます。 引数も同時に消去しなければなりませんが、数式のままでは無理だと思います。 一旦、数式を文字列にしておき、 (例、= を # に置換) ROUND関数を消去 (例、ROUND( を 置換後の文字列欄に何も入力せずに置換) ROUND関数の引数を消去 (例、,2) を 置換後の文字列欄に何も入力せずに置換) その後数式に戻す (例、# を = に置換) といった作業になると思います。

関連するQ&A