- ベストアンサー
エクセル、特定の関数の一括削除
2種類の関数(SUM・ROUND)を使って作った表が沢山あるのですが、検索・置換 の様な感じで、特定の関数(ROUND)だけ一括して削除する方法は有りますでしょうか? よろしくお願いします。
- みんなの回答 (4)
- 専門家の回答
質問者が選んだベストアンサー
試しにマクロを組んでみました。 検証が不十分ですが、ほぼ、いけてるかも知れません。 数式内に、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)
式の入っていそうな所を選択しておき、マクロを実行 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)
VBAを駆使してやれば、(どんな場合でもではなく)適した関数では、置換できるかも知れないが、一般には難しいでしょう。 ーー 関数ではまず無理です。そのセルに関数で別の関数を入れられない。 その関数を参照している関数もありえる。別列に作るにしても参照している式があれば複雑になる。作り変えたほうが早いでしょう。 ーー 引数の問題も有る。関数には引数があり、関数を変えると、今までの関数のその引数が不要になって抹消する必要性とか、増減・変更の必要もありえる。編集ー置換操作ではこれも難しい。 ーーー エクセルの関数入力は、1つのセルにだけまず入れて、式の複写で多数セルに展開する(列方向、行方向、列行方向複合(注))ことがほとんどである。(注)それなりに、多分ROW()やCOLUMN()を使って、式のカタチを工夫が必要だが。 だから大本を1箇所変えて、その式を複写すれば、部分的に全部変更できる場合が多いはずだ。 質問のようなことは、いままでこのコーナーにあまり質問に出てこない。思いつき、すぐの質問のようにおもう。 そういう観点からの質問に考えを切り替えてみては。 「数箇所の式の再設定および式の複写はでは無理か」。
- xls88
- ベストアンサー率56% (669/1189)
数式内で使われているROUND関数を消去したいということでしょうか? 対象の数式はどうなっていますか? ≪様式が同じ場合≫ 元の数式を変更し、他の数式セルにコピー ≪様式がバラバラの複数の数式の場合≫ 試しに、「置換」で関数のみを消去しようとすると、アラートが表示されます。 引数も同時に消去しなければなりませんが、数式のままでは無理だと思います。 一旦、数式を文字列にしておき、 (例、= を # に置換) ROUND関数を消去 (例、ROUND( を 置換後の文字列欄に何も入力せずに置換) ROUND関数の引数を消去 (例、,2) を 置換後の文字列欄に何も入力せずに置換) その後数式に戻す (例、# を = に置換) といった作業になると思います。