Ik ben een excel sheet aan het bouwen waarin ik meetresultaten kan verwerken.
Het idee is om in de eerste kolom het serienummer te zetten, en dan in de kolommen erna de metingen inclusief groeperingen van metingen.
Vervolgens wordt er de mean/max/min van de metingen bepaald, waarbij metingen die buiten de acceptabele grenzen vallen, niet worden meegenomen.
Zie plaatje voor de layout.

Ik heb via voorwaardelijk opmaak gezorgd dat als de cellen niet binnen de grenzen vallen, dat ze dan rood worden, en anders groen. Tevens heb ik het min/max/mean gedeelte voor elkaar via dbgemiddelde() achtige functies.
Nu wil ik echter per subgroep gaan tellen hoeveel tests er zijn gefaald. Zo zou in het plaatje bijvoorbeeld "C2" 0 weer moeten geven, "C3" zou 1 moeten zijn en C4 zou 2 moeten zijn.
Ik heb reeds gezocht, en onder andere deze thread doorgenomen: [Excel] AANTAL.ALS in kolom1 én in kolom 2
Echter werkt dit niet voor mijn eisen.
In principe wil ik alles automatisch schaalbaar hebben. Als ik een kolom invoeg, dan moet het subtotaal in de subgroep die meenemen in zijn berekening.
Mijn voorwaarde voor rood in kolom D: OF(D2>D$23;D2<D$24)*(ABS((D2="")-1))
Ik zou kunnen doen:
C2= OF(D2>D$23;D2<D$24)*(ABS((D2="")-1)) + OF(E2>E$23;E2<E$24)*(ABS((E2="")-1)) + OF(F2>F$23;F2<F$24)*(ABS((F2="")-1))
Maar als ik dan een vierde meting erbij gooi in subgroep 1, dan moet ik die handmatig toe gaan voegen.
Dus ik wil eigenlijk bovenstaande realiseren met een aantal.als().
C2 = aantal.als( D2:F2 ; OF( D2>D$23 ; D2<D$24 ) * ( ABS((D2="")-1) )
Maar dan checkt hij D2, E2 en F2 op de voorwaarde van D2.
Ik kom er maar niet uit, hoe ik kan zorgen dat hij daar de juiste verwijzingen pakt.
Ik kan het wel oplossen door een verborgen tabblad te maken waarop ik elke cel check en een 1 of 0 laat schrijven op die plaatsen als het rood of groen is, maar ik wil dat liever voorkomen.
Iemand enig idee hoe ik die aantal.als formule voor elke cel die hij telt een andere kolom als voorwaarde kan laten gebruiken?
EDIT:
Ik heb het nu opgelost met een functie.
Mocht iemand een mooiere oplossing hebben, dan hou ik mij aanbevolen.
Het idee is om in de eerste kolom het serienummer te zetten, en dan in de kolommen erna de metingen inclusief groeperingen van metingen.
Vervolgens wordt er de mean/max/min van de metingen bepaald, waarbij metingen die buiten de acceptabele grenzen vallen, niet worden meegenomen.
Zie plaatje voor de layout.

Ik heb via voorwaardelijk opmaak gezorgd dat als de cellen niet binnen de grenzen vallen, dat ze dan rood worden, en anders groen. Tevens heb ik het min/max/mean gedeelte voor elkaar via dbgemiddelde() achtige functies.
Nu wil ik echter per subgroep gaan tellen hoeveel tests er zijn gefaald. Zo zou in het plaatje bijvoorbeeld "C2" 0 weer moeten geven, "C3" zou 1 moeten zijn en C4 zou 2 moeten zijn.
Ik heb reeds gezocht, en onder andere deze thread doorgenomen: [Excel] AANTAL.ALS in kolom1 én in kolom 2
Echter werkt dit niet voor mijn eisen.
In principe wil ik alles automatisch schaalbaar hebben. Als ik een kolom invoeg, dan moet het subtotaal in de subgroep die meenemen in zijn berekening.
Mijn voorwaarde voor rood in kolom D: OF(D2>D$23;D2<D$24)*(ABS((D2="")-1))
Ik zou kunnen doen:
C2= OF(D2>D$23;D2<D$24)*(ABS((D2="")-1)) + OF(E2>E$23;E2<E$24)*(ABS((E2="")-1)) + OF(F2>F$23;F2<F$24)*(ABS((F2="")-1))
Maar als ik dan een vierde meting erbij gooi in subgroep 1, dan moet ik die handmatig toe gaan voegen.
Dus ik wil eigenlijk bovenstaande realiseren met een aantal.als().
C2 = aantal.als( D2:F2 ; OF( D2>D$23 ; D2<D$24 ) * ( ABS((D2="")-1) )
Maar dan checkt hij D2, E2 en F2 op de voorwaarde van D2.
Ik kom er maar niet uit, hoe ik kan zorgen dat hij daar de juiste verwijzingen pakt.
Ik kan het wel oplossen door een verborgen tabblad te maken waarop ik elke cel check en een 1 of 0 laat schrijven op die plaatsen als het rood of groen is, maar ik wil dat liever voorkomen.
Iemand enig idee hoe ik die aantal.als formule voor elke cel die hij telt een andere kolom als voorwaarde kan laten gebruiken?
EDIT:
Ik heb het nu opgelost met een functie.
Mocht iemand een mooiere oplossing hebben, dan hou ik mij aanbevolen.
code:
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
| Function SubgroupCounter(Search_Range As Range, Max_Row As Integer, Min_Row As Integer) As Integer
Dim cntr As Integer
Dim rRange As Range
cntr = 0
For Each rRange In Search_Range
If ((rRange.Value < Cells(Min_Row, rRange.Column).Value) Or (rRange.Value > Cells(Max_Row, rRange.Column).Value)) Then
cntr = cntr + 1
End If
Next rRange
SubgroupCounter = cntr
End Function |
[ Voor 11% gewijzigd door FireAge op 28-08-2009 13:31 . Reden: Oplossing toegevoegd ]
