abonnement Unibet Coolblue Bitvavo
  donderdag 28 juni 2012 @ 16:31:18 #31
377809 xyntarsus
ex nihi omnia creata est
pi_113516618
en wederom ben ik er met een vraag.

Ik wil in het bestand dat ik aan het bouwen ben nog 2 extra dingen toevoegen.
1. een lijst van alle tabbladen (in mijn geval projectnummers)
waarbij dan een aantal gegevens uit het tabblad worden gezet in een lijst

2. een zoekfunctie waarbij ik een artikelnummer opgeef en die door meerdere tabbladen heen zoekt en kijkt of er in een bepaalde range cellen
(gedefinieerd door een artikelnummer aan het begin van de regel) niet lege cellen zijn.
deze regels met gegevens (dus de regels waarin in gegevens zijn ingevoerd) moet dan in een lijst
komen die weer begint met het projectnummer en dan de rest van de regel erachter zet
(en voor elk product in de zoekopdracht een lijst maakt)

Ik heb bij deze twee echter geen idee hoe ik moet beginnen :(

Wie helpt mij???
pi_113534381
quote:
0s.gif Op donderdag 28 juni 2012 16:31 schreef xyntarsus het volgende:
en wederom ben ik er met een vraag.

Ik wil in het bestand dat ik aan het bouwen ben nog 2 extra dingen toevoegen.
1. een lijst van alle tabbladen (in mijn geval projectnummers)
waarbij dan een aantal gegevens uit het tabblad worden gezet in een lijst

2. een zoekfunctie waarbij ik een artikelnummer opgeef en die door meerdere tabbladen heen zoekt en kijkt of er in een bepaalde range cellen
(gedefinieerd door een artikelnummer aan het begin van de regel) niet lege cellen zijn.
deze regels met gegevens (dus de regels waarin in gegevens zijn ingevoerd) moet dan in een lijst
komen die weer begint met het projectnummer en dan de rest van de regel erachter zet
(en voor elk product in de zoekopdracht een lijst maakt)

Ik heb bij deze twee echter geen idee hoe ik moet beginnen :(

Wie helpt mij???
Voor het eerste deel is er zover ik weet geen normale formule die je daar bij kunt helpen en moet je dus naar VBA en krijg je iets in de trant van:
1
2
3
For i = 1 To Sheets.Count
ActiveCell.Offset(i - 1, 0).Value = Sheets(i).Name
Next i
Het eerste deel is gewoon een loop maken van 1 tot het aantal sheets dat je hebt. Vervolgens ga je voor elke sheet vanaf je huidige cel de namen onder elkaar opslaan. (De offset zorgt ervoor dat je i-cellen naar beneden vanaf de huidige cel iets wegschrijft).

Het tweede deel van je vraag begrijp ik niet helemaal. Kan je niet beter alle activiteiten op 1 tabblad opslaan en wanneer je iets voor een specifiek project wilt zien daar op filteren of een view daarvoor maken. Het verspreiden over al die tabbladen lijkt me eigenlijk niet handig.
  vrijdag 29 juni 2012 @ 10:00:44 #33
377809 xyntarsus
ex nihi omnia creata est
pi_113547228
dank je, dat eerste deel is al erg nuttig,
kan ik daar dan ook, als ik die lijst eenmaal gegenereerd heb, gegevens uit dat specifieke blad achter hangen op een geautomatiseerde manier

de code die ik nu heb:
1
2
3
4
5
6
7
8
Private Sub CommandButton4_Click()

  Sheets.Add Before:=Sheets("totaal")
  ActiveSheet.Name = "Projectenlijst"
    
For i = 4 To Sheets.Count -1
ActiveCell.Offset(i - 1, 1).Value = Sheets(i).Name
Next i

Wat ik ook graag wil is een aantal bladen uitsluiten in de lijst (totaalblad en 'basis'tabel)
Kan dat ook?
boerenlogica zegt: als bladnaam = totaal, dan niets doen en doorgaan met de volgende
edit: ik heb hem nu in het 4e blad laten beginnen en het laatste niet meenemen, dan krijg ik in ieder geval te zien wat ik wil. Weet alleen niet of dit de beste oplossing is

voor het tweede deel van mijn vraag:
omdat ik ook een lijst per project wil kunnen uitdraaien, en ik iedere keer dezelfde tabel heb
voor een project (in de rijen de producten en in de kolommen 52 weken) wordt het heel onoverzichtelijk om dat in 1 blad te doen.
vandaar de keuze om voor elk project (pakweg 50 tegelijk meestal) een apart tabblad te maken, mijn 1e blad is dan een totaalblad dat optelt door de bladen heen.

Ik heb laatst een vergelijkbare opzet gezien, maar helaas krijg ik daar de code niet van :S

[ Bericht 7% gewijzigd door xyntarsus op 29-06-2012 10:10:59 (trial and error werkt :P) ]
pi_113551142
Zoiets? Je moet zelf nog even met de variabele j puzzelen om de lijst op de goeie plek te krijgen.
Waarom begin je trouwens pas vanaf sheet 4 te tellen?
1
2
3
4
5
6
7
8
9
10
11
12
13
14
Sub test()

j = 0

For i = 4 To Sheets.Count -1
    If Sheets(i).Name = "totaalblad" Or Sheets(i).Name = "basistabel" Then
    j = j
    Else
    ActiveCell.Offset(j, 1).Value = Sheets(i).Name
    j = j + 1
    End If
Next i

End Sub
Supra Groningam Nihil
Postjubilea: 10.000 15.000 20.000 25.000
Sit jou kop in die koei se kont en wag tot die bul jou kom holnaai
Wat niemand je vertelt over de bioindustrie, geen bloed maar feiten
  vrijdag 29 juni 2012 @ 13:15:53 #35
377809 xyntarsus
ex nihi omnia creata est
pi_113554205
omdat de eerste drie bladen de bladen zijn die ik niet wil mee tellen, dus ik had het eigenlijk omzeild :P
dat stukje 'if' functie is denk ik de nette manier ;)

zo lukt het in ieder geval wel :P

blijven de punten van het invullen van andere gegevens uit de betreffende bladen en de zoekfunctie over...
na wat zoek en stoeiwerk denk ik dat ik met vert.zoeken een eind moet kunnen komen,
maar dan moet ik dat over meerdere bladen trekken en vervolgens van de gevonden regels een kopie in een nieuw blad zetten (en dan alle gevonden regels in hetzelfde blad onder elkaar)
pi_113555019
Maar als iemand dan je bladen husselt dan gaat dat dus wel mis.

Als je veel uitzonderingen hebt is het misschin mooier om met case select te werken in plaats van de If....then...else
Dus in plaats van het hele stuk code tusen IF en END IF doe je onderstaande code
1
2
3
4
5
6
7
Select Case Sheets(i).Name
Case "totaal", "test"
j = j
Case Else
ActiveCell.Offset(j, 1).Value = Sheets(i).Name
j = j + 1
End Select

Aangezien je een lijst wilt op basis van projectnummer en alle tabbladen projectnumemrs zijn zou je een vert.zoeken kunnen combineren met indirect?
Supra Groningam Nihil
Postjubilea: 10.000 15.000 20.000 25.000
Sit jou kop in die koei se kont en wag tot die bul jou kom holnaai
Wat niemand je vertelt over de bioindustrie, geen bloed maar feiten
  vrijdag 29 juni 2012 @ 13:46:10 #37
377809 xyntarsus
ex nihi omnia creata est
pi_113555587
met indirect?
nu ben ik overvraagd....
pi_113555910
Stel naam van tabblad is "project1"
Om nu een waarde uit dat tabblad te halen doe je ='project1'!C2

Echter als je nou de naam van het tabblad variabel wilt maken omdat je al een lijst hebt met alle tabbladnamen dan kun je met INDIRECT dat bereiken.

Voorbeeld:
zet de naam van het tabblad op een ander blad in cel A1 (bijvoorbeeld)
en zet in de cel eronder de volgende formule

=indirect("'"& A1 &"'!C2") (let op alle leestekens)

deze haalt de waarde uit cel C2 van het tabblad waarvan de naam in A1 staat.

met het & teken kun je tekststrings aan elkaar plakken. Je plakt hier dus een ' voor de naam van het tabblad (A1) en erachter '!C2 voor het afsluiten van de tabblad naam en de verwijzing naar de cel.
Supra Groningam Nihil
Postjubilea: 10.000 15.000 20.000 25.000
Sit jou kop in die koei se kont en wag tot die bul jou kom holnaai
Wat niemand je vertelt over de bioindustrie, geen bloed maar feiten
  vrijdag 29 juni 2012 @ 14:15:30 #39
377809 xyntarsus
ex nihi omnia creata est
pi_113556927
ok thx, dit werkt, ik kan nu een projectenlijst maken en updaten :D

enige wat hij nu niet doet, is projecten die er niet meer zijn weghalen,
is er een mogelijkheid dat ik dta kan invoegen?
pi_113558414
quote:
0s.gif Op vrijdag 29 juni 2012 14:15 schreef xyntarsus het volgende:
ok thx, dit werkt, ik kan nu een projectenlijst maken en updaten :D

enige wat hij nu niet doet, is projecten die er niet meer zijn weghalen,
is er een mogelijkheid dat ik dta kan invoegen?
Ik ben er van uitgegaan dat de sheetnamenlijst in b1 en daaronder staat, anders in de activesheet regel b1 veranderen in de gewenste cel
De hele regel van de sheet die niet meer bestaat wordt verwijderd

1
2
3
4
5
6
7
8
9
10
11
12
Sub sheetbestaatnietmeer()

On Error Resume Next

ActiveSheet.Range("b1", ActiveSheet.Range("b1").End(xlDown)).Select

For Each c In Selection
If Sheets(c.Value).Name = "" Then c.EntireRow.Delete
Next c
On Error GoTo 0

End Sub
Supra Groningam Nihil
Postjubilea: 10.000 15.000 20.000 25.000
Sit jou kop in die koei se kont en wag tot die bul jou kom holnaai
Wat niemand je vertelt over de bioindustrie, geen bloed maar feiten
pi_113573715
quote:
0s.gif Op vrijdag 29 juni 2012 10:00 schreef xyntarsus het volgende:
voor het tweede deel van mijn vraag:
omdat ik ook een lijst per project wil kunnen uitdraaien, en ik iedere keer dezelfde tabel heb
voor een project (in de rijen de producten en in de kolommen 52 weken) wordt het heel onoverzichtelijk om dat in 1 blad te doen.
vandaar de keuze om voor elk project (pakweg 50 tegelijk meestal) een apart tabblad te maken, mijn 1e blad is dan een totaalblad dat optelt door de bladen heen.

Ik heb laatst een vergelijkbare opzet gezien, maar helaas krijg ik daar de code niet van :S
Tja eigenlijk blijf ik wel van mening dat je eigenlijk al je data in 1 tabblad moet zetten. Wanneer je verschillende dwarsdoorsnedes wilt maken van je gegevens set kan je dat veel makkelijker via een pivot tabel regelen. Dan kan je tenminste zeggen ik wil alles van 1 project zien, of 1 product over alle projecten heen.

Ook scheelt dit heel veel macro gedoe, wat in mijn ogen er alleen maar voor zorgt dat je programma onbeheersbaar wordt.
pi_113590478
Access
pi_113661959
quote:
0s.gif Op zaterdag 30 juni 2012 12:54 schreef DaFan het volgende:
Access
Dat is eigenlijk wel beter voor xyntarsus' gebruik. Maar ja, access is eng :@
Supra Groningam Nihil
Postjubilea: 10.000 15.000 20.000 25.000
Sit jou kop in die koei se kont en wag tot die bul jou kom holnaai
Wat niemand je vertelt over de bioindustrie, geen bloed maar feiten
pi_113662787
quote:
3s.gif Op maandag 2 juli 2012 08:20 schreef Deetch het volgende:

[..]

Dat is eigenlijk wel beter voor xyntarsus' gebruik. Maar ja, access is eng :@
Faler :P
  maandag 2 juli 2012 @ 10:43:22 #45
377809 xyntarsus
ex nihi omnia creata est
pi_113664076
access is niet eng hoor :P

maar acces is niet beschikbaar op het netwerk hier :P
moet het doen met word en excel....
en wat betreft de aparte tabbladen, ook dat is een soort van
'opgelegde eis' :S

pivot tables zouden inderdaad kunnen als alles in 1 blad stond.
pi_113664435
quote:
0s.gif Op maandag 2 juli 2012 10:43 schreef xyntarsus het volgende:
access is niet eng hoor :P

maar acces is niet beschikbaar op het netwerk hier :P
moet het doen met word en excel....
en wat betreft de aparte tabbladen, ook dat is een soort van
'opgelegde eis' :S

pivot tables zouden inderdaad kunnen als alles in 1 blad stond.
zucht, IT op de werkplek :X }:|
Supra Groningam Nihil
Postjubilea: 10.000 15.000 20.000 25.000
Sit jou kop in die koei se kont en wag tot die bul jou kom holnaai
Wat niemand je vertelt over de bioindustrie, geen bloed maar feiten
  maandag 2 juli 2012 @ 11:07:58 #47
377809 xyntarsus
ex nihi omnia creata est
pi_113664551
idd, maja, ik zal t moeten doen met wat we hebben :P

kan thuis wel een Access dbase bouwen in office 2010, maar daar gaan we in
excel 2003 weinig aan hebben :P:P

zal dus wat meer moeite moeten doen, maar heb er wel vertrouwen is dat t gaat lukken...

(denk ik....)
pi_113693461
Mwa je kan vanuit Excel gewoon een koppeling maken naar je Access database.
Daarnaast kan je bij het dubbel-klikken in je pivot tabel je betreffende benodigde tabblad creëren. Het maakt in ieder geval die zoekfunctie makkelijker (query) ipv via vertikaal zoeken over alle tabbladen of een ctrl f functie via macro's.
  dinsdag 3 juli 2012 @ 08:08:35 #49
377809 xyntarsus
ex nihi omnia creata est
pi_113704513
Dat klopt, maar blijf het probleem bestaan dat op t netwerk hier geen access beschikbaar is :'(


Is die zoekfunctie overigens wel mogelijk??

[ Bericht 15% gewijzigd door xyntarsus op 03-07-2012 08:48:05 ]
  dinsdag 3 juli 2012 @ 13:32:08 #50
85514 ralfie
!Yvan eht nioj
pi_113712556
Zoiets voor de zoekfunctie?

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
Sub zoek(ByRef Sheet As Worksheet, ByRef Targetcell As Range, ByRef qrySearch As String, ByRef numcolumns As Integer)
    Dim zoekrange As Range, lastrow As Integer, cell As Range
    Set zoekrange = Sheet.Range("A:A")'Waar gaan we zoeken?
    Set cell = Sheet.Cells(1, 1)'De eerste cell in de kolom
    lastrow = 0
    Do
        Set cell = zoekrange.Find(qrySearch, cell, xlValues, xlPart, xlByColumns, xlNext)
        If cell Is Nothing Then Exit Sub'zoekopdracht nergens gevonden
        If cell.Row < lastrow Then Exit Sub'voorbij einde van kolom
        lastrow = cell.Row
        Targetcell.Value = Sheet.Name
        If WorksheetFunction.CountA(Sheet.Rows(lastrow)) > 1 Then'Er zitten niet-lege cellen in deze rij
            Sheet.Range("A" & lastrow).Resize(ColumnSize:=numcolumns).Copy Targetcell.Offset(ColumnOffset:=1).Resize(ColumnSize:=numcolumns)
            Set Targetcell = Targetcell.Offset(Rowoffset:=1)
        End If
    Loop
End Sub
Je zoekt dan bijvoorbeeld:
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
Sub test()
dim rngDoelwit as Range
dim strQry as string
dim numCols as integer

'hoeveel kolommen moeten er gekopieerd worden
numCols = 10
'Je zoekopdracht
strQry = "1*"
'Waar moeten de resultaten komen
set rngDoelwit = ActiveCell

For i = 4 To Sheets.Count -1
    If Sheets(i).Name <> "totaalblad" And Sheets(i).Name <> "basistabel" Then
        zoek Sheets(i), rngDoelwit, strQry, numCols
    End if
Next i
End Sub
  dinsdag 3 juli 2012 @ 16:29:51 #51
377809 xyntarsus
ex nihi omnia creata est
pi_113719551
ik denk dat dit een heel eind doet wat ik in gedachten had,
maar wat ik even niet kan zien in de gauwigheid is of hij een nieuw blad aanmaakt
waarin hij alle gevonden regels als kopie zet (met als naam: 'art "ingegeven nummer" '.
(dit laatste lijkt me de regel:
1
2
item = textbox
activesheet.name = ' "art"' &item'

tenminste zo had ik het zelf verzonnen :P)

Van de (artikel)nummers waarop ik ga zoeken weet ik overigens zeker dat ze bestaan en gevonden zullen worden.
pi_113843317
Ik heb in excel een sheet met 2 lijsten naast elkaar

Lijst 1 heeft een aantal namen
Lijst 2 heeft getallen die bij de namen horen

In plaats van:
Banaan 2
Appel 3

Wil ik zo een lijst

Banaan
Banaan
Appel
Appel
Appel

Weet iemand hoe ik dit snel en makkelijk kan doen? :)
  vrijdag 6 juli 2012 @ 13:13:21 #53
85514 ralfie
!Yvan eht nioj
pi_113847236
quote:
0s.gif Op vrijdag 6 juli 2012 11:29 schreef Pablooo het volgende:
Ik heb in excel een sheet met 2 lijsten naast elkaar

Lijst 1 heeft een aantal namen
Lijst 2 heeft getallen die bij de namen horen

In plaats van:
Banaan 2
Appel 3

Wil ik zo een lijst

Banaan
Banaan
Appel
Appel
Appel

Weet iemand hoe ik dit snel en makkelijk kan doen? :)
snel en makkelijk via VBA, maar het kan ook in excel (zij het omslachtig :) )

Ik ga even van de volgende indeling uit:
1
2
3
4
Fruit   Aantal
Banaan 2
Appel 3
Peer 4
Waar 'fruit' in A1 staat, 'banaan' in A2 etc.

stap 1) maak een lege kolom vóór de fruitkolom.
In A2 vul je de rij in waarin je uitkomst kolom moet beginnen. (bijvoorbeeld '2', indien je rij in D2 begint)
in A3 vul je =SOM(C$2:C2)+A$2
deze formule trek je naar beneden tot één rij onder je laatste fruit.
Dan, ik de kolom waar je je fruit wil hebben, vul je de volgende formule in
=VERT.ZOEKEN(RIJ();A:B;2;WAAR)
Deze formule trek je naar beneden zover je wil.
Indien je de nullen lelijk vindt zet je een spatie in de cel onder het laatste fruit.
Klaar.
pi_113850651
Clever... Chapeau.
pi_113852893
Om een nieuw werrkblad met een gewenste naam te maken gebruik je de volgende code:

1
2
3
sheetnaam = InputBox("Geef artikelnummer: ", "Artikelnummer")
Sheets.Add After:=Sheets(Sheets.Count)
ActiveSheet.Name = "art." & sheetnaam

Als de sheetnaam (oftewel het artikelnummer) ergens vandaan komt dan moet je in plaats van de inputbox naar die plek verwijzen. Of in een eerder stadium in je macro het gevonden artikelnummer aan de variabele sheetnaam hangen.
Supra Groningam Nihil
Postjubilea: 10.000 15.000 20.000 25.000
Sit jou kop in die koei se kont en wag tot die bul jou kom holnaai
Wat niemand je vertelt over de bioindustrie, geen bloed maar feiten
pi_113940583
Hai, ben even een Excel-bestandje aan het inelkaar flanzen alleen kom ik er niet helemaal goed uit.

Op blad 1, moet worden ingevuld JA of NEE. Op blad 2, staan de antwoorden, ook in JA of NEE vorm. En op blad 3, moet de uitslag neer worden gezet. Als het goed is, dan moet hetzelfde vakje als in blad 1 en 2, in het groen komen te staan met de tekst 'GOED'. Als het fout is, dan in het rood met de test 'FOUT'.

Kom er niet uit. :(
pi_113942538
=als(Blad1!A1=Blad2!A1;"GOED";"FOUT")
pi_113942692
quote:
0s.gif Op zondag 8 juli 2012 20:59 schreef snabbi het volgende:
=als(Blad1!A1=Blad2!A1;"GOED";"FOUT")
Thanks!

Enig idee, trouwens. Ik heb bij de 'uitslag' pagina dus de uitslag staan, maar als ik niets invul bij de antwoorden zelf geeft hij 'fout' aan. Is er ook een manier om het zo in te stellen, dat hij pas 'goed' of 'fout' aangeeft als ik pas iets heb ingevuld?

[ Bericht 23% gewijzigd door einschtein op 08-07-2012 21:10:55 ]
pi_113943231
Lukt je dat niet zelf adhv de formule die je net hebt gekregen?

SPOILER
Om spoilers te kunnen lezen moet je zijn ingelogd. Je moet je daarvoor eerst gratis Registreren. Ook kun je spoilers niet lezen als je een ban hebt.
pi_113943725
quote:
7s.gif Op zondag 8 juli 2012 21:12 schreef DaFan het volgende:
Lukt je dat niet zelf adhv de formule die je net hebt gekregen?

SPOILER
Om spoilers te kunnen lezen moet je zijn ingelogd. Je moet je daarvoor eerst gratis Registreren. Ook kun je spoilers niet lezen als je een ban hebt.
Ik had zelf inderdaad even verder moeten denken, maar heb er niet aangedacht om een ALS in een ALS te verwerken.

=ALS(Vragen!A1="";"Blanco";ALS(Vragen!A1=Antwoorden!A1;"Goed";"Fout"))

En het werkt. :)
abonnement Unibet Coolblue Bitvavo
Forum Opties
Forumhop:
Hop naar:
(afkorting, bv 'KLB')