• Privacywetgeving
    Het is bij Helpmij.nl niet toegestaan om persoonsgegevens in een voorbeeld te plaatsen. Alle voorbeelden die persoonsgegevens bevatten zullen zonder opgaaf van reden verwijderd worden. In de vraag zal specifiek vermeld moeten worden dat het om fictieve namen gaat.

Formule is te lang voor VBA

Status
Niet open voor verdere reacties.

alexander321

Gebruiker
Lid geworden
25 jun 2012
Berichten
76
Met onderstaande formule krijg ik in een cel een uitkomst die ik wil hebben.
Code:
    Range("K4").Select
    ActiveCell.FormulaR1C1 = _
        "=IF(VLOOKUP(RC1,Invulblad!C1:C51,MATCH(""Mutatiesoort"",Invulblad!R9,0),0)=""Vervallen"",IF(VLOOKUP(RC1,Invulblad!C1:C51,MATCH(""Mutatiesoort"",Invulblad!R9,0),0)=""Vervallen"",IF(VLOOKUP(RC1,Artikelstambestand!C1:C104,MATCH(R1C[-7],Artikelstambestand!R1,0),0)>0,IF(MID(VLOOKUP(RC9,INDIRECT(""Artikelstambestand!$A:$CZ""),MATCH(R1C,Artikelstambestand!R1,0),0),2,1)="" "",IF(MID(VLOOKUP(RC9,INDIRECT(""Artikelstambestand!$A:$CZ""),MATCH(R1C,Artikelstambestand!R1,0),0),3,99),VLOOKUP(RC9,INDIRECT(""Artikelstambestand!$A:$CZ""),MATCH(R1C,Artikelstambestand!R1,0),0)),""""),""""),VLOOKUP(RC9,INDIRECT(""Artikelstambestand!$A:$CZ""),MATCH(R1C,Artikelstambestand!R1,0),0))"

Als ik deze echter via VBA wil hebben en opneem via de recorder, wordt deze afgebroken en mist hij een stukje.
Hoe krijg ik hem wel werkend via VBA?
Code:
    Range("K4").Select
    ActiveCell.FormulaR1C1 = _
        "=IF(VLOOKUP(RC1,Invulblad!C1:C51,MATCH(""Mutatiesoort"",Invulblad!R9,0),0)=""Vervallen"",IF(VLOOKUP(RC1,Invulblad!C1:C51,MATCH(""Mutatiesoort"",Invulblad!R9,0),0)=""Vervallen"",IF(VLOOKUP(RC1,Artikelstambestand!C1:C104,MATCH(R1C[-7],Artikelstambestand!R1,0),0)>0,IF(MID(VLOOKUP(RC9,INDIRECT(""Artikelstambestand!$A:$CZ""),MATCH(R1C,Artikelstambestand!R1,0),0),2,1)="" " & _
        "LOOKUP(RC9,INDIRECT(""Artikelstambestand!$A:$CZ""),MATCH(R1C,Artikelstambestand!R1,0),0),3,99),VLOOKUP(RC9,INDIRECT(""Artikelstambestand!$A:$CZ""),MATCH(R1C,Artikelstambestand!R1,0),0)),""""),""""),VLOOKUP(RC9,INDIRECT(""Artikelstambestand!$A:$CZ""),MATCH(R1C,Artikelstambestand!R1,0),0))"
 
INDIRECT in een VLOOKUP. Een prima recept voor een bestand dat onnodig traag rekent, omdat INDIRECT altijd herberekent. En dan ook nog meerdere keren exact dezelfde MATCH functie nesten in die formule. Zet de match in een aparte cel. En voorkom dat je INDIRECT moet gebruiken.
 
Status
Niet open voor verdere reacties.
Terug
Bovenaan Onderaan