• 締切済み

セル中の式を追加したい式の中に入れ込みたい

タイトルわかりにくくてすみません。 質問したい内容は、例えば =SUM(A1:A10) この式にROUNDDOWN関数を加えて =ROUNDODOWN(  SUM(A1:A10)  ,3) というような式にしたいのです。 複数の計算式があり、全てに後から式を追加したい場合、簡単に出来る方法はありますか?

みんなの回答

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

あまり汎用的につくる必要はないと思うので Sub test01() Dim cl As Range For Each cl In Range("B3:C8") f = cl.Formula If Mid(f, 1, 5) = "=SUM(" Then cl.Formula = "=Rounddown(" & Mid(f, 2, Len(f) - 1) & ",3)" End If Next End Sub でよいでしょう。 (1)式のありそうなセル範囲を多めに In Range("B3:C8") のところを変えること。 (2)If Mid(f, 1, 5) = "=SUM(" Then cl.Formula = "=Rounddown(" & Mid(f, 2, Len(f) - 1) & ",3)" の辺を関数によって修正すること。 を行ってください。

hirumin
質問者

補足

ありがとうございます。 追加したい関数式の内側に入れたい数式が質問文で書いたSUM()だけではないので、このマクロでは対応仕切れなさそうです。

  • cockerel
  • ベストアンサー率46% (253/548)
回答No.3

訂正します: 「()が複数組ある場合」の2番目の「=A11&",3)」は、「=A11&",3)"」の誤りです。 ついでですが、何をしているかの説明: オリジナルの式の先頭に全角チルダ(「あ」や「式」でも意味を有していない文字なら任意)を挿入してテキストに変換し、テキストの状態で希望する「式のテキスト」が得られるように編集、その後、全角チルダを消去して式に戻すという作業を行っています。

  • cockerel
  • ベストアンサー率46% (253/548)
回答No.2

場当たり的な方法ですが・・・。 ()が一組しかない単純な場合: 1. 検察・置換を使用して=SUM(A1:A10)の「=」をたとえば「~=ROUNDDOWN(」に全置換します。 2. =SUM(A1:A10)の「)」を「),3)」に全置換します。 3. 「~」を「」(Null)に全置換します。 ()が複数組ある場合: 1. 検察・置換を使用して=SUM(A1:A10)の「=」をたとえば「~=ROUNDDOWN(」に全置換します。 2. 第11行に「=A11&",3)」を入力し、横にフィルします。 3. 第11行をコピーし、値として第10行にペーストします。 4. 「~」を「」(Null)に全置換します。 マクロ化すれば少しは「場当たり的」でなくなります。

hirumin
質問者

お礼

ありがとうございます。 「=」を文字に置き換えて、数式を文字列に変換するテクニックはよくやります。 やはりこういうやり方が無難なのでしょうか。 HP作成ソフトでタグをタグで簡単に囲えるように、数式も数式で簡単に囲えたら便利なのに…。

noname#22222
noname#22222
回答No.1

次に紹介する ChangeFormula関数の類を作成すれば可能ですが... 「簡単に」の物差しは、人それぞれですので... Option Explicit Private Sub CommandButton1_Click()   Dim isOK As Boolean      isOK = ChangeFormula(1, 11, 1, 10) End Sub Option Explicit Public Function ChangeFormula(ByVal RS As Integer, _                ByVal RE As Integer, _                ByVal CS As Integer, _                ByVal CE As Integer)   Dim I As Integer   Dim J As Integer      For I = RS To RE     For J = CS To CE       If Cells(I, J).Formula Like "=SUM(*)" Then         Cells(I, J).Formula = "=ROUNDDOWN(" & Mid$(Cells(I, J).Formula, 2) & ",3)"       End If     Next J   Next I End Function ※私は、Excel門外漢です。参考程度にして下さい。

hirumin
質問者

補足

ありがとうございます。 追加したい関数式の内側に入れたい数式が質問文で書いたSUM()だけではないので、このマクロでは対応仕切れなさそうです。

関連するQ&A