weversknoop
Gebruiker
- Lid geworden
- 18 jun 2012
- Berichten
- 10
Hallo iedereen, ik ben bezig met een matrixformule die moet werken in een array, d.w.z. dat er in een array overal dezelfde formule staat. Maar de formule in elke cel moet wijzen naar zijn eigen rij, en zijn eigen kolom.
Ik gebruik nu de formule:
{=SOM(ALS(R3K1:RK1=RK71; zoeken naar een naam in de eerste kolom
ALS(R3K3:RK3=R201K zoeken naar een naam in de derde kolom op dezelfde rij
;1))))) . Als beide voorwaarden goed zijn moet er een 1 komen. Dit kan maar 1 keer gebeuren.
Deze formules plaatsen gebeurt op de volgende manier:
For a = 72 To 77
For b = 202 To 207
Cells(b, a).Select
Selection.FormulaArray = _
"=If(OR(R[]C71="""",INDIRECT(""R"" & 201 & ""K"",FALSE) = """"),""""," & _
"SUM(IF(R3C1:RC1=INDIRECT(""R"" & " & 201 & " & ""K71"",FALSE),IF(R3C3:RC3=R201C[],1))))))"
Next
Next
Met een array van 20 op 20 duurt dit toch een tijdje.
Als ik de formule apart in alle cellen zet zoals hierboven werkt deze formule, dan krijg ik op een bepaalde plaats een 1 wat goed is.
Als ik in een array deze formule in een keer plaats, dan werkt deze formule niet meer.
VBA met de formule
Range(Cells(202, 72), Cells(207, 78)).Select
Selection.FormulaArray = _
"=If(OR(R[]C71="""",INDIRECT(""R"" & 201 & ""K"",FALSE) = """"),""""," & _
"SUM(IF(R3C1:RC1=INDIRECT(""R"" & " & 201& " & ""K71"",FALSE),IF(R3C3:RC3=R201C[],,1))))))"
De formule in een array plaatsen is 1 bewerking, in een array van 20 op 20 apart zijn dit 400 bewerkingen wat alles vertraagd. Beide formules zijn gelijk, maar apart werken ze en in arrayvorm niet.Heeft iemand hiervoor een oplossing? Weversknoop
Een voorbeeld:
Rij201 AAAA GGGG
Rij202 BBBB DDDD Op deze rij staan BBBB en DDDD op dezelfde rij, dit resulteert in onderstaande tabel dat in de kruising van de rij met BBBB en de kolom met DDDD er een 1 staat.
Rij203 CCCC HHHH
AAAA BBBB CCCC DDDD EEEE FFFF
AAAA 0 0 0 0 0 0
BBBB 0 0 0 1 0 0
CCCC 0 0 0 0 0 0
DDDD 0 0 0 0 0 0
EEEE 0 0 0 0 0 0
FFFF 0 0 0 0 0 0
Ik gebruik nu de formule:
{=SOM(ALS(R3K1:RK1=RK71; zoeken naar een naam in de eerste kolom
ALS(R3K3:RK3=R201K zoeken naar een naam in de derde kolom op dezelfde rij
;1))))) . Als beide voorwaarden goed zijn moet er een 1 komen. Dit kan maar 1 keer gebeuren.
Deze formules plaatsen gebeurt op de volgende manier:
For a = 72 To 77
For b = 202 To 207
Cells(b, a).Select
Selection.FormulaArray = _
"=If(OR(R[]C71="""",INDIRECT(""R"" & 201 & ""K"",FALSE) = """"),""""," & _
"SUM(IF(R3C1:RC1=INDIRECT(""R"" & " & 201 & " & ""K71"",FALSE),IF(R3C3:RC3=R201C[],1))))))"
Next
Next
Met een array van 20 op 20 duurt dit toch een tijdje.
Als ik de formule apart in alle cellen zet zoals hierboven werkt deze formule, dan krijg ik op een bepaalde plaats een 1 wat goed is.
Als ik in een array deze formule in een keer plaats, dan werkt deze formule niet meer.
VBA met de formule
Range(Cells(202, 72), Cells(207, 78)).Select
Selection.FormulaArray = _
"=If(OR(R[]C71="""",INDIRECT(""R"" & 201 & ""K"",FALSE) = """"),""""," & _
"SUM(IF(R3C1:RC1=INDIRECT(""R"" & " & 201& " & ""K71"",FALSE),IF(R3C3:RC3=R201C[],,1))))))"
De formule in een array plaatsen is 1 bewerking, in een array van 20 op 20 apart zijn dit 400 bewerkingen wat alles vertraagd. Beide formules zijn gelijk, maar apart werken ze en in arrayvorm niet.Heeft iemand hiervoor een oplossing? Weversknoop
Een voorbeeld:
Rij201 AAAA GGGG
Rij202 BBBB DDDD Op deze rij staan BBBB en DDDD op dezelfde rij, dit resulteert in onderstaande tabel dat in de kruising van de rij met BBBB en de kolom met DDDD er een 1 staat.
Rij203 CCCC HHHH
AAAA BBBB CCCC DDDD EEEE FFFF
AAAA 0 0 0 0 0 0
BBBB 0 0 0 1 0 0
CCCC 0 0 0 0 0 0
DDDD 0 0 0 0 0 0
EEEE 0 0 0 0 0 0
FFFF 0 0 0 0 0 0