excel waarden zoeken in tabbladen

Pagina: 1
Acties:

Vraag


Acties:
  • 0 Henk 'm!

  • soepkippie
  • Registratie: Februari 2023
  • Laatst online: 14-03-2023
Beste mensen,

Ik ben een tijdje aan het vogelen, maar ik kom er niet uit:
Ik heb een excel bestand met een aantal tabbladen. Op elk tabblad staat een berekening, die een uitkomst geeft. Deze uitkomst staat op elk tabblad in dezelfde cel. Er is ook een tabblad met totalen. Ik zou graag zien dat er een formule is die een net lijstje maakt met de tabbladen die bij de uitkomst van de berekening een waarde heeft die groter is dan nul. Voor elk tabblad waar dit zo is wil ik dan van een aantal cellen van dat tabblad de waarde geretourneerd hebben. Dit dus zonder lege regels of cellen. De moeilijkheid zit hem erin dat ik de bestaande tabbladen niet gebruik, maar altijd een bestaand tabblad kopieer en een unieke naam geef, en dus nooit van te voren weet binnen welke tabbladen ik moet zoeken. Sterker nog, er zal altijd gezocht moeten worden in tabbladen die oorspronkelijk nog niet bestaan! De bestaande tabbladen zijn dus eigenlijk sjablonen.

Ik heb al van alles geprobeerd, maar kom maar niet tot een bevredigende oplossing.

(Het is een bestaand bestand waar meerdere personen mee werken. Niet iedereen zit te wachten op enorme veranderingen hierin. Ik ben dus op zoek naar een oplossing waarmee de structuur en manier van werken zoveel mogelijk onaangepast kunnen blijven.)

Wie heeft een mooie formule of een andere oplossing?

Alle reacties


Acties:
  • 0 Henk 'm!

  • Kartmans1
  • Registratie: Oktober 2009
  • Laatst online: 23:52
Heb het aan chatgpt voor je gevraagd. Snel doorgenomen maar dit zou wel eens kunnen werken:

Om dit te doen, zou je gebruik kunnen maken van een macro in Excel. Een macro is een reeks instructies die automatisch worden uitgevoerd en kan worden geprogrammeerd om specifieke taken uit te voeren.

Hier is een voorbeeld van een macro die kan zoeken naar tabbladen met waarden groter dan nul en de waarden retourneren van een aantal cellen van dat tabblad:
Sub FindValues()
Dim ws As Worksheet
Dim wsTotal As Worksheet
Dim LastRow As Long
Dim i As Long
Dim j As Long

Set wsTotal = ThisWorkbook.Sheets("Totalen") 'Vervang "Totalen" met de naam van het tabblad waarop je de resultaten wilt weergeven
j = 2 'Rij nummer van de eerste gevonden waarde in het totaaloverzicht

For Each ws In ThisWorkbook.Worksheets
If ws.Name <> "Totalen" Then 'Zoek alleen op tabbladen anders dan het totaaloverzicht
LastRow = ws.Cells(ws.Rows.Count, "A").End(xlUp).Row 'Zoek het laatste rijnummer van kolom A op dit tabblad

For i = 1 To LastRow 'Doorloop alle rijen
If ws.Cells(i, "A").Value > 0 Then 'Als de waarde in kolom A groter is dan nul
wsTotal.Cells(j, "A").Value = ws.Name 'Schrijf de naam van het tabblad in de eerste kolom van het totaaloverzicht
wsTotal.Cells(j, "B").Value = ws.Cells(i, "B").Value 'Schrijf de waarde van cel B op het gevonden rijnummer
wsTotal.Cells(j, "C").Value = ws.Cells(i, "C").Value 'Schrijf de waarde van cel C op het gevonden rijnummer
j = j + 1 'Ga naar de volgende rij van het totaaloverzicht
End If
Next i
End If
Next ws
End Sub
Het bovenstaande script doorloopt alle tabbladen in het werkboek (behalve het tabblad "Totalen"), zoekt naar rijen met een waarde groter dan nul en schrijft de naam van het tabblad en de waarden van cel B en C op het totaaloverzicht.

Om deze macro uit te voeren, moet je deze stappen volgen:

Open het werkboek en druk op "Alt + F11" om de VBA-editor te openen.
Klik op "Invoegen" en selecteer "Module".
Kopieer en plak de bovenstaande code in de module.
Sluit de VBA-editor en ga terug naar het werkboek.
Klik op "Ontwikkelaars" en selecteer "Macro's".
Selecteer de macro "FindValues" en klik op "Uitvoeren".
De macro zal nu worden uitgevoerd en de resultaten worden weergegeven op het tabblad "Totalen". Let op dat als er nieuwe tabbladen worden toegevoegd aan het werkboek, je de macro opnieuw moet uitvoeren om de resultaten bij te werken.


Regenerate respo

Acties:
  • 0 Henk 'm!

  • soepkippie
  • Registratie: Februari 2023
  • Laatst online: 14-03-2023
Hartelijk dank! Dit lijkt al de goede kant op te gaan, maar het doet nog niet wat ik wil. Ik heb het al geprobeerd aan te passen naar mijn wensen maar mijn kennis (of inzicht?) schiet tekort. Misschien heb ik ook mijn vraag niet goed geformuleerd. Ik zal het proberen duidelijker en completer te formuleren: Alléén als de waarde in cel U2 op een tabblad groter is dan nul, dan wil ik de cellen R2 tot en met V2 van dat betreffende tabblad geretourneerd hebben. Als de waarde in U2 nul is, dan hoef ik geen info uit dat betreffende tabblad. De naam van het tabblad heb ik ook niet nodig.
Overigens zou ik ook nog graag de cellen ED33 tot en met ET100 geretourneerd hebben.
Kortom, ik heb nog een weg te gaan.. ;)

[ Voor 4% gewijzigd door soepkippie op 03-03-2023 00:38 ]


Acties:
  • +1 Henk 'm!

  • dix-neuf
  • Registratie: Juli 2018
  • Niet online
Je doet er verstandig aan om op het blad waarin je de waarden van andere bladen wil vermelden, de namen van die bladen steeds wél op te nemen. Als er een fout in de gegevens sluipt, dan is die dan gemakkelijk op te sporen. En als er - zoals je schrijft- meerdere mensen met het bestand moeten werken, dan is het ook niet verstandig om steeds nieuwe bladen te moeten aanmaken/kopiëren. Dat lijkt mij vragen om moeilijkheden.
Als alle bladen al bestaan, dan is een blad met samenvatting/totaal ook gemakkelijk en zonder macro te maken. Als je toch aan je huidige methode vast wil/moet houden, dan lijkt mij een macro de beste oplossing. Die kun je dan bv. steeds laten uitvoeren als je het blad met de samenvatting/totalen selecteert.

Acties:
  • 0 Henk 'm!

  • soepkippie
  • Registratie: Februari 2023
  • Laatst online: 14-03-2023
De naam van het tabblad is misschien idd wel handig. Dat er meerdere mensen met dit bestand moeten werken en dit niet wensen te veranderen is helaas niet mijn keus, ik zou het sowieso anders doen, maar om een hele organisatie een hele verandering door de strot te duwen is lastiger dan een macro maken (hoewel...).
Het is een bestand waarin we calculeren, en als het bestand er eenmaal is dan haalt de hele organisatie er informatie uit. Dit gebeurt ook automatisch door een ander programma die daar een speciale module heeft. Vandaar de wens om de bestaande structuur te handhaven.
Als het bestand eenmaal gemaakt is blijft het bestaan om er info uit te halen. Het wordt dus in feite maar door één persoon bewerkt en ingevuld. Nu zijn we voor elke calculatie een hele hoop aan het kopieren, plakken en verwijzingen maken, en daar wil ik vanaf vanwege tijd en risico.

Acties:
  • 0 Henk 'm!

  • dix-neuf
  • Registratie: Juli 2018
  • Niet online
Om hoeveel bladen gaat het maximaal (ongeveer) ?

Acties:
  • 0 Henk 'm!

  • soepkippie
  • Registratie: Februari 2023
  • Laatst online: 14-03-2023
in de basis zijn er iets van 35 tabbladen. Die worden eigenlijk nooit allemaal gebruikt, maar het kan wel voorkomen dat een blad meerdere keren gekopieerd en gebruikt wordt. Een stuk of tien gebruikte tabbladen is niet heel gek, 20 is al wel weer veel. Dus totaal is er al snel een tabblad of 50...

Acties:
  • 0 Henk 'm!

  • dix-neuf
  • Registratie: Juli 2018
  • Niet online
soepkippie schreef op vrijdag 3 maart 2023 @ 00:03:
Alléén als de waarde in cel U2 op een tabblad groter is dan nul, dan wil ik de cellen R2 tot en met V2 van dat betreffende tabblad geretourneerd hebben. Als de waarde in U2 nul is, dan hoef ik geen info uit dat betreffende tabblad. De naam van het tabblad heb ik ook niet nodig. Overigens zou ik ook nog graag de cellen ED33 tot en met ET100 geretourneerd hebben.
R2:V2 --> dat zijn 5 cellen, en ED33:ET100 --> dat zijn 17*68 = 1156 cellen,
die wil je allemaal van alle (voorafgaande) bladen op 1 blad ?

Acties:
  • 0 Henk 'm!

  • F_J_K
  • Registratie: Juni 2001
  • Niet online

F_J_K

Moderator CSA/PB

Front verplichte underscores

Het aantal is niet zo relevant: daar is de For Each ws In ThisWorkbook.Worksheets voor, je loopt alle sheets langs. Dan zal je op een of andere manier moeten bepalen of het een sheet is waar je wat mee wilt, obv. de naam of de inhoud.

En de als() is precies dat: If (cel > 0) then staat er al. Waar gaat het dus concreet mis? Als je VBA nog niet kent, ga dan heel erg NIET al een productie-document proberen te maken, ga er eerst mee oefenen.

Zonder VBA: zet alles in 1 sheet en filter de regels die niet relevant zijn. Of doe een draaitabel al lijkt dat net nodig.


-
Al zou ik liever zeggen: stop met rondmailen van een .xlsx. Bijv. 1 gedeeld online bestand, bijv. ieder een eigen bestand en dan voeg jij samen via een master document, oid.

En ga sowieso nooit een (niet netjes ondertekende) xlsm rondsturen, leer de mensen iet aan dat het OK is om macro's te starten in Office docs :X

'Multiple exclamation marks,' he went on, shaking his head, 'are a sure sign of a diseased mind' (Terry Pratchett, Eric)

Pagina: 1