richard1970
Terugkerende gebruiker
- Lid geworden
- 12 mei 2005
- Berichten
- 2.660
Hoi,
In een model dat ik aan het maken ben heb ik elf cellen: A1 t/m K1.
Hierin moeten de letters A, B, C, D, E, F, G, H, I, J en K komen te staan in een willekeurige volgorde.
In L2 controleer ik of er 11 verschillende letters staan in de elf cellen. In cel L1 volgt na diverse controleberekeningen het cijfer 0 (fout) of 1 (goed). Bij goed is een juiste combinatie gevonden die ik wil weten.
Ik gebruik nu een hulptabel met de cijfers 1 t.m. 11 en daarnaast de letters A t.m. K, en in de cellen A1 t.m. K1 staat de formule:
Er is altijd minimaal één goede combinatie van letters mogelijk.
In VBA heb ik staan:
Na iedere controle of in L1 een 0 of 1 staat, bepaalt via het commando Calculate de functie ASELECTTUSSEN een nieuwe waarde.
Het vervelende is nu dat ik 11 cellen heb met 11 mogelijke waardes wat resulteert in meer dan 285.mld combinaties. Met vier processoren en 6 Gb intern geheugen, duurt het nu bijna 1 seconde per berekening. Dat zit 'm in de controleberekeningen en die kunnen niet eenvoudiger. Maar op deze manier duurt het te lang en dat moet slimmer kunnen. Zes cellen met de letters A, B, C, D, E en F ging nog wel.
Kan dit met VBA opgelost worden , of met slimmere formules? Want als in A1 de letter A staat, hoeft in de overige tien cellen de A niet meer komen te staan.
En een tweede vraag. Hoe stop ik de macro als het me te lang duurt? Vroeger gebruikte in Ctrl+Break, maar ik zie op dit toetsenbord nergens een Break staan.
Richard
In een model dat ik aan het maken ben heb ik elf cellen: A1 t/m K1.
Hierin moeten de letters A, B, C, D, E, F, G, H, I, J en K komen te staan in een willekeurige volgorde.
In L2 controleer ik of er 11 verschillende letters staan in de elf cellen. In cel L1 volgt na diverse controleberekeningen het cijfer 0 (fout) of 1 (goed). Bij goed is een juiste combinatie gevonden die ik wil weten.
Ik gebruik nu een hulptabel met de cijfers 1 t.m. 11 en daarnaast de letters A t.m. K, en in de cellen A1 t.m. K1 staat de formule:
Code:
=VERT.ZOEKEN(ASELECTTUSSEN(1;11);$O$1:$P$11;2;0)
Er is altijd minimaal één goede combinatie van letters mogelijk.
In VBA heb ik staan:
Code:
Sub test()
Do Until Sheets("test").Range("L1").Value = 1
Calculate
Range("M2").Value = Range("M2").Value + 1
Loop
End Sub
Na iedere controle of in L1 een 0 of 1 staat, bepaalt via het commando Calculate de functie ASELECTTUSSEN een nieuwe waarde.
Het vervelende is nu dat ik 11 cellen heb met 11 mogelijke waardes wat resulteert in meer dan 285.mld combinaties. Met vier processoren en 6 Gb intern geheugen, duurt het nu bijna 1 seconde per berekening. Dat zit 'm in de controleberekeningen en die kunnen niet eenvoudiger. Maar op deze manier duurt het te lang en dat moet slimmer kunnen. Zes cellen met de letters A, B, C, D, E en F ging nog wel.
Kan dit met VBA opgelost worden , of met slimmere formules? Want als in A1 de letter A staat, hoeft in de overige tien cellen de A niet meer komen te staan.
En een tweede vraag. Hoe stop ik de macro als het me te lang duurt? Vroeger gebruikte in Ctrl+Break, maar ik zie op dit toetsenbord nergens een Break staan.
Richard