[Excel] Moeilijke IF formule

Pagina: 1
Acties:

Onderwerpen

Vraag


Acties:
  • 0 Henk 'm!

  • MusicMaikel
  • Registratie: Maart 2016
  • Laatst online: 16:58
Hallo allemaal,

Voor een community project van Pokémon GO PvP is er een spreadsheet gemaakt om te zien welke Pokémon met welke typing de meeste wins krijgt. Omdat de lijst steeds groter word, zou ik graag het een en ander nog verder willen automatiseren.

Het idee is als volgt:

Op dit moment zijn er verschillende oefentoernooien aan de gang om te zien welke Pokémon het best uit de verf komt. Per punten categorie zijn er Pokémon die je mag selecteren. Deze Pokémon hebben bepaalde types en halen een aantal wins. Deze wins worden bij elkaar opgeteld in de rechter tabel van het bestand.

Ik zou het zo willen maken dat wanneer een Pokémon toegevoegd word aan de database met de juiste typings, deze toegevoegd word aan het totale van de type tabel. Ik heb dit met een IF formule willen maken, maar dat lijkt niet te werken.

Voorbeeld:

Altaria is een Dragon/Flying type die 10 punten kost om een team te bouwen. Tot dus ver heeft deze 7 wins opgepikt. In de type tabel bij O3 is dit hetzelfde aantal. Maar de formule in deze cel is =C4, wat natuurlijk niet ideaal is. Als er een extra flying type bij komt moet deze toegevoegd worden aan de formule, handmatig. Dat is niet helemaal wat ik wil.

Ik heb het volgende geprobeerd:

=IF(AND(Database!C:C); OR(Database!D:D = "Flying"), "OK", "")

Natuurlijk werkt dit niet, maar ik heb een aantal dingen geprobeerd, maar dit werkte zeker niet.


Zijn er misschien slimmere Tweakers die mij kunnen helpen met deze casus??

Link: https://drive.google.com/...yXpGdExG/view?usp=sharing

Alle reacties


Acties:
  • 0 Henk 'm!

  • g0tanks
  • Registratie: Oktober 2008
  • Laatst online: 20:16

g0tanks

Moderator CSA
Eigenlijk is je data niet goed ingericht voor optimaal gebruik in Excel.

De nette manier is denk ik om de sheet 'Database' volledig aan te vullen met de data in 'Win Counts'. Per Pokemon voeg je dan nog de win count toe.

Vervolgens heb je een nette lijst waarmee je bijvoorbeeld met draaitabellen of SUMIFs de overzichten kunt creëren.

[ Voor 4% gewijzigd door g0tanks op 28-05-2021 15:29 ]

Ultrawide gaming setup: AMD Ryzen 7 2700X | NVIDIA GeForce RTX 2080 | Dell Alienware AW3418DW


Acties:
  • 0 Henk 'm!

  • spank_mojoo
  • Registratie: Januari 2011
  • Laatst online: 09:56
wat @g0tanks voorsteld is naar mijn idee ook de mooiste oplossing.
Met één tabel waar de wins en points per Pokémon in staan is het veel gemakkelijker om deze overzichten te maken.

Acties:
  • 0 Henk 'm!

  • mathias82
  • Registratie: April 2017
  • Laatst online: 18-09 10:24
Het zal inderdaad niet makkelijk zijn met deze structuur.

Ik was aan zoiets aan het denken:

code:
1
=SUMIF(B2:B20; VLOOKUP(B2;Database!B:D;2;FALSE)=M3; C2:C20)


Maar het probleem is dat de B2 in VLOOKUP vast is. Je zou daar eigenlijk het eerste argument van SUMIF moeten terugkoppelen. Maar ik weet niet of dat kan...

Acties:
  • +1 Henk 'm!

  • g0tanks
  • Registratie: Oktober 2008
  • Laatst online: 20:16

g0tanks

Moderator CSA
mathias82 schreef op vrijdag 28 mei 2021 @ 15:36:
Het zal inderdaad niet makkelijk zijn met deze structuur.

Ik was aan zoiets aan het denken:

code:
1
=SUMIF(B2:B20; VLOOKUP(B2;Database!B:D;2;FALSE)=M3; C2:C20)


Maar het probleem is dat de B2 in VLOOKUP vast is. Je zou daar eigenlijk het eerste argument van SUMIF moeten terugkoppelen. Maar ik weet niet of dat kan...
Een oplossing in die richting had ik ook bedacht, maar vond ik zo omslachtig dat ik het maar niet had genoemd. Als je zoiets wil moet je INDEX gebruiken om een array terug te krijgen voor gebruik in SUMIF.

Jouw VLOOKUP staat volgens mij ook op de verkeerde plek. Je wil al in het eerste argument de pokemon converteren naar type, om vervolgens type als criteria op te geven in het tweede argument.

Stukje voorbeeldcode dat de win count sommeert van psychic-pokemon in kolom B:
code:
1
=SUM(SUMIF(INDEX(Database!$C$2:$C$106;MATCH('Win Counts'!$B$2:$B$7;Database!$B$2:$B$106;0));"Psychic";$C$2:$C$7))

Als je dit wil gebruiken moet je het generaliseren en aanpassen zodat het zowel naar primary als secondary type kijkt.

Het is een matrixformule, dus invoeren met CTRL+SHIFT+ENTER.

Ultrawide gaming setup: AMD Ryzen 7 2700X | NVIDIA GeForce RTX 2080 | Dell Alienware AW3418DW


Acties:
  • 0 Henk 'm!

  • MusicMaikel
  • Registratie: Maart 2016
  • Laatst online: 16:58
Ik heb de vraag ook op Reddit gesteld en heb daar het volgende antwoord gekregen:

=LET(a; B$2:B$10;
b; C$2:C$10;
c; ALS.FOUT(VERT.ZOEKEN(a;Database!$B:$D;2;0);0);
d; ALS.FOUT(VERT.ZOEKEN(a;Database!$B:$D;3;0);0);
e; SOM(ALS(c=$M3;b;0));
f; SOM(ALS(d=$M3;b;0));
e + f )

Dit werkt eigenlijk perfect zoals ik het wil hebben. Bedankt voor jullie antwoorden!

Acties:
  • +1 Henk 'm!

  • GRDavies75
  • Registratie: December 2014
  • Laatst online: 14:42

GRDavies75

PSN-id: GRDavies

Ik had je ook al een iets aangepaste sheet gegeven via een google share link op reddit.
Dat is precies wat je zocht, maar de thread was gedelete:

https://drive.google.com/...25FK2MCb/view?usp=sharing

[ Voor 22% gewijzigd door GRDavies75 op 31-05-2021 10:02 ]

Pagina: 1