2016-09-12 17 views
0

だから、私はこのシートを7行目毎に式を適用したいと思っています。しかし、それは同じ公式ではありません。公式を「相殺」する必要もあります。n番目の行ごとに異なる式を適用する

たとえば、最初の範囲の場合、式は "=(C4 + C5)-C3"になります。第2の範囲については、「=(C11 + C12)-C10」である。等々。

これは私がこれまで持っているものである:あなたのApplyCFサブのために

Sub ApplyFormula() 

    ApplyCF Range("C6") 
    ApplyCF Range("C13") 
'and so on, every 7 rows 
'is there any other way i can apply these ranges instead of typing them? 
'with an offset formula or something like that. 

End Sub 

    Sub ApplyCF(rng As Range) 


    rng.Formula = "=(C4+C5)-C3" 
    'i'd like the macro to "offset" the formula, 
    'so for the C13 Range it would be "=(C11+C12) - C10" 

    End Sub 

答えて

0

、あなたがこれを行うことができます:

Sub ApplyCF(rng As Range) 
If rng.Count <> 1 Then Exit Sub ' in case your range is more than one cell 

Dim prevCell As Range, twoPrevCell As Range, threePreCell As Range 
Set prevCell = rng.Offset(-1, 0) 
Set twoPrevCell = rng.Offset(-2, 0) 
Set threeprevcell = rng.Offset(-3, 0) 

rng.Formula = "=(" & twoPrevCell & "+" & prevCell & ")-" & threeprevcell 
End Sub 

をそれは間違いなくあなたは、例えば、ん微調整することができ必要数式バーの数式を表示するには?私たちは、VBAでその数学を評価し、ただで答えを置くあなたのコメントパー

、すべての第六のセル(それは、それらを分割する必要全体のマクロません)のためにこれを試すことができます。場合

Sub test() 
' I assume you want to run this for every 6th cell in column C, starting with C1 

Dim lastRow As Long 
lastRow = Cells(Rows.Count, 3).End(xlUp).Row ' gets us our last row in column C with data 

Dim cel As Range, rng As Range 

For i = 6 To lastRow Step 6 'have to start at row 4, since any other row less than that messes up the formula 
    Cells(i, 3).Select  ' because you can't have row 3-3 
    Cells(i, 3).Formula = "=(" & Cells(i - 2, 3).Address & "+" & Cells(i - 1, 3).Address & ")-" & Cells(i - 3, 3).Address 
Next i 

End Sub 
+0

これは素晴らしいことです。それは完璧に働いた。数式バーに数式を表示する方法はありますか?また、シートにデータがなくなるまで、 'Sub ApplyFormula'のn番目の行に範囲を適用できる方法はありますか?範囲によってはシートごとに異なる場合があります。 – Serveira

+0

@Serveira - うん、それは6セルごとに実行するように微調整することができます。より正確なステートメントは:列Cはすべてのセルにデータを持ちますが、6番目のセル、**または**列Cは6番目のセルごとにデータがあります。また、数式バーに数式が表示されません(セルC6などを選択した場合)。 – BruceWayne

+0

@ Serveira - 実際には、OPにサンプルテーブルを投稿するだけですか?そうすれば、どのようにレイアウトされているのかがわかります。ああ、フォーミュラバーに数式を追加する2つ目のポイントには、 'rng.Formula'行に' twoPreCell'などの後に '.Formula'を追加するだけです。 – BruceWayne

0

式を表示する必要があります。編集されました。以下のコードが動作します!セルを参照するにはparmateter "アドレス"を使用する必要があります。パラメータfalseまたはtrueは、相対(falseに設定)または絶対(trueに設定)参照が必要かどうかを表します。

Sub ApplyCF(rng As Range) 

     rng.Formula = "=(" & rng.Offset(-2, 0).Address(False, False) & _ 
     "+" & rng.Offset(-1, 0).Address(False, False) & ")-" & rng.Offset(-3, 0).Address(False, False) 

    End Sub