Wat ik wil doen is een incomplete data compleet maken. Ik heb een lijstje met getallen en als ik een waarde mis, wil ik deze gaan trenden. Het probleem is als bijvoorbeeld de twee getallen achter elkaar missen. Dan trend ik eerst de eerste en dan de andere op basis van de trended value.
Dit werkt, alleen excel berekent de waardes zo vreemd dat hij niet automatisch de eerdere pakt, en ik dus geen waarde krijg. Als ik op die cell ga, en recalc, heb ik wel een waarde.
Ik dacht dus om recursief elke missende te laten berekenen. Hiervoor wilde ik ActiveCell.Row/Column eerst en daarna Selection.Row/Column gebruiken. Maar bij elke recursieve aanroep blijven deze steken op de originele row/column en Excel flipt natuurlijk met circular reference na een tijdje
Hoe is dit op te lossen zonder dat ik een extra interne recursieve functie aanmaak met parameters voor de active-cell?
Ik heb ook dit geprobeerd, maar werkte ook niet
Dit werkt, alleen excel berekent de waardes zo vreemd dat hij niet automatisch de eerdere pakt, en ik dus geen waarde krijg. Als ik op die cell ga, en recalc, heb ik wel een waarde.
Ik dacht dus om recursief elke missende te laten berekenen. Hiervoor wilde ik ActiveCell.Row/Column eerst en daarna Selection.Row/Column gebruiken. Maar bij elke recursieve aanroep blijven deze steken op de originele row/column en Excel flipt natuurlijk met circular reference na een tijdje
Hoe is dit op te lossen zonder dat ik een extra interne recursieve functie aanmaak met parameters voor de active-cell?
Visual Basic:
1
2
3
4
5
6
7
8
9
10
11
12
13
14
| Public Function GetDataV(Cell As Range, Count As Single) As Variant GetDataV = Cell If Not IsNumeric(Cell) Then Dim MyRange As Range Set MyRange = Range(Cells(Selection.Row - Count, Selection.Column), Cells(Selection.Row - 1, Selection.Column)) ActiveCell.Offset(-1, 0).Select Selection.Calculate 'MyRange.Calculate ' force the recalculation of the precedents ' Count needs to be single otherwise #$@!#$ Excel gives an error GetDataV = Application.WorksheetFunction.Trend(MyRange, , Count + 1) End If End Function |
Ik heb ook dit geprobeerd, maar werkte ook niet
Visual Basic:
1
2
3
4
| ... Set MyRange = Range(Cells(ActiveCell.Row - Count, ActiveCell.Column), Cells(ActiveCell.Row - 1, ActiveCell.Column)) ActiveCell.Offset(-1,0).activate ... |
[ Voor 13% gewijzigd door Darkvater op 02-02-2006 16:26 ]
Windows Vista? *NEVER* Het waarom - Opera forever!!!
I've seen chickens that were more menacing. Chickens in a coma. On ice. In my fridge