Hallo Schu,
so sollten Deine Wünsche erfüllt werden: :)
Code:
Sub FormelnErsetzen()
Dim oWs As Worksheet
Dim rngZelle As Range
Dim strBezug(1 To 2) As String
On Error Resume Next
For Each oWs In ActiveWorkbook.Worksheets
For Each rngZelle In oWs.Columns(9).SpecialCells(xlCellTypeFormulas)
If rngZelle.Offset(, -1).Value = "Arbeitsstunden nichtWT:" Then
strBezug(1) = rngZelle.DirectPrecedents.Areas(1).Address(0, 0)
strBezug(2) = rngZelle.DirectPrecedents.Areas(2).Address(0, 0)
rngZelle.Formula = "=SUMPRODUCT((" & strBezug(1) & "=TRANSPOSE('arbeitsfreie Tage 2011-2013'!$A$1:$A$59))*(MOD(" & strBezug(1) & ",7)>1)*(" & strBezug(2) & "))+SUMPRODUCT((MOD(" & strBezug(1) & ",7)<2)*(" & strBezug(2) & "))"
End If
Next rngZelle
Next oWs
End Sub
Gruß Uwe
Hallo Edgar,
danke für den Hinweis. Das hatte ich glatt übersehen.
So sollte es dann mit Matrixformeln klappen:
Code:
Sub FormelnErsetzen()
Dim oWs As Worksheet
Dim rngZelle As Range
Dim strBezug(1 To 2) As String
On Error Resume Next
For Each oWs In ActiveWorkbook.Worksheets
For Each rngZelle In oWs.Columns(9).SpecialCells(xlCellTypeFormulas)
If rngZelle.Offset(, -1).Value = "Arbeitsstunden nichtWT:" Then
strBezug(1) = rngZelle.DirectPrecedents.Areas(1).Address(0, 0)
strBezug(2) = rngZelle.DirectPrecedents.Areas(2).Address(0, 0)
rngZelle.FormulaArray = "=SUMPRODUCT((" & strBezug(1) & "=TRANSPOSE('arbeitsfreie Tage 2011-2013'!$A$1:$A$59))*(MOD(" & strBezug(1) & ",7)>1)*(" & strBezug(2) & "))+SUMPRODUCT((MOD(" & strBezug(1) & ",7)<2)*(" & strBezug(2) & "))"
End If
Next rngZelle
Next oWs
End Sub
Gruß Uwe
Ein Traum!!
Vielen Dank Euch allen für die rege Teilnahme! Es funktioniert alles bestens!!!
Ihr seid ein gutes Team!!
:18: