abonnement Unibet Coolblue Bitvavo
pi_128814533
quote:
0s.gif Op woensdag 10 juli 2013 21:55 schreef qu63 het volgende:

[..]

Zo ver was ik ook al, maar nu nog uitzoeken hoe lang het getal is. Dan moet ik op zoek naar de tweede komma en vanaf die positie weer 2 tekens aftrekken. Maar hoe vind ik die 2e komma?
Met een kleine vba macro moet dat toch wel lukken. Ik zou eerst dan de string inkorten tot het begin van het getal, dus 3 posties na de bij of af dan hoef je alleen nog maar de komma te vinden, en 2 posties verder weer de string af te kappen.
  woensdag 10 juli 2013 @ 22:41:58 #62
62215 qu63
..de tijd drinkt..
pi_128816742
quote:
0s.gif Op woensdag 10 juli 2013 22:02 schreef Basp1 het volgende:

[..]

Met een kleine vba macro moet dat toch wel lukken. Ik zou eerst dan de string inkorten tot het begin van het getal, dus 3 posties na de bij of af dan hoef je alleen nog maar de komma te vinden, en 2 posties verder weer de string af te kappen.
Ha, das ook een goeie ja! Komma + 2 :)
It's Time To Shine
[i]What would life be like without rhethorical questions?[/i]
pi_128817255
Zo simpel mogelijk is alles in een macro :P
Open je Excel. Download het bestandje van de site. Vanuit dit gedownloadde bestand vervolgens F9 om de macro te runnen en de rest gaat vanzelf. (anders moet je zus nog dingen lopen kopieren enzo)

quote:
Sub qu63
Dim numberofrows As Integer
If [a3] <> "" Then
Range("A1").Select
Selection.End(xlDown).Select
numberofrows = ActiveCell.Row
Else
numberofrows = 2
End If
Windows("geld.xls").Activate
Rows("2:" & numberofrows).Select
Selection.Insert Shift:=xlDown
Windows(mijnnaam).Activate
Range("a2:a" & numberofrows).Cut
Windows("bestand.xls").Activate
Range("A2").Select
ActiveSheet.Paste

Selection.TextToColumns Destination:=Range("A2"), DataType:=xlDelimited, _
TextQualifier:=xlDoubleQuote, ConsecutiveDelimiter:=False, Tab:=True, _
Semicolon:=False, Comma:=True, Space:=False, Other:=False, FieldInfo _
:=Array(Array(1, 4), Array(2, 1), Array(3, 1), Array(4, 1), Array(5, 1), Array(6, 1), _
Array(7, 1), Array(8, 1), Array(9, 1)), TrailingMinusNumbers:=True
Columns("A:A").NumberFormat = "m/d/yyyy"

Dim myrow As Range
For Each myrow In Range("F1:F" & numberofrows + 1)
If myrow.Value = "Af" And myrow.Offset(0, 1) > 0 Then
myrow.Offset(0, 1).Value = "-" & Replace(myrow.Offset(0, 1).Value, ",", ".")
End If
Next myrow
Range("K2").Select
If ActiveCell.Value <> "" Then End
While ActiveCell.Value = ""
ActiveCell.Offset(1, 0).Select
Wend
Dim i As Integer
i = ActiveCell.Row
Range("J" & i & ":M" & i + 1).Select
Selection.AutoFill Destination:=Range("J2:M" & i + 1), Type:=xlFillDefault

End Sub
Ik gebruik .xls want daar had je nog niet dat gezeur met xlsm
De macro kopieert de logica die ik zelf had gebouwd en had toegevoegd in de laatste 3 kolommen. In deze kolommen heb ik zelf via vlookups een categorie gemaakt op basis van tegenrekening. Je zal alleen zelf iets moeten bouwen voor de nieuwe IBAN structuur.
  woensdag 10 juli 2013 @ 22:58:31 #64
62215 qu63
..de tijd drinkt..
pi_128817836
Ha! Het werkt!
Uitgaande bedragen:
1=ALS.FOUT(LINKS(RECHTS(Transacties_Raw!A1;(LENGTE(Transacties_Raw!A1)-VIND.SPEC("Af";Transacties_Raw!A1))-4);VIND.SPEC(",";RECHTS(Transacties_Raw!A1;(LENGTE(Transacties_Raw!A1)-VIND.SPEC("Af";Transacties_Raw!A1))-4))+2)*1;0)
Inkomende bedragen:
1=ALS.FOUT(LINKS(RECHTS(Transacties_Raw!A2;(LENGTE(Transacties_Raw!A2)-VIND.SPEC("Bij";Transacties_Raw!A2))-5);VIND.SPEC(",";RECHTS(Transacties_Raw!A2;(LENGTE(Transacties_Raw!A2)-VIND.SPEC("Bij";Transacties_Raw!A2))-5))+2)*1;0)

*O*
It's Time To Shine
[i]What would life be like without rhethorical questions?[/i]
  woensdag 10 juli 2013 @ 23:00:40 #65
62215 qu63
..de tijd drinkt..
pi_128817951
quote:
0s.gif Op woensdag 10 juli 2013 22:49 schreef snabbi het volgende:
Zo simpel mogelijk is alles in een macro :P
Open je Excel. Download het bestandje van de site. Vanuit dit gedownloadde bestand vervolgens F9 om de macro te runnen en de rest gaat vanzelf. (anders moet je zus nog dingen lopen kopieren enzo)

[..]

Ik gebruik .xls want daar had je nog niet dat gezeur met xlsm
De macro kopieert de logica die ik zelf had gebouwd en had toegevoegd in de laatste 3 kolommen. In deze kolommen heb ik zelf via vlookups een categorie gemaakt op basis van tegenrekening. Je zal alleen zelf iets moeten bouwen voor de nieuwe IBAN structuur.
Hmm, jammer dat ING het exporteerd als rekeningnummer_begindatum_einddatum.csv, zal ik t met jouw macro alsnog zelf moeten kopieëren als ik t goed zie..
It's Time To Shine
[i]What would life be like without rhethorical questions?[/i]
pi_128820422
de csv is het bestand dat je constant weg gooit en je excel bestand is wat je transacties over een langere periode kan bewaren.

doordat je de naam van je vaste excel bestand weet, heb je de csv actief staan en kan je switchen van je csv naar het bestand waar je de naam wel van weet.

Enige waar je op moet letten is dat het juiste tabblad is geselecteerd, via PM voorbeeld gestuurd.
  woensdag 10 juli 2013 @ 23:58:10 #67
62215 qu63
..de tijd drinkt..
pi_128820673
quote:
0s.gif Op woensdag 10 juli 2013 23:52 schreef snabbi het volgende:
de csv is het bestand dat je constant weg gooit en je excel bestand is wat je transacties over een langere periode kan bewaren.

doordat je de naam van je vaste excel bestand weet, heb je de csv actief staan en kan je switchen van je csv naar het bestand waar je de naam wel van weet.

Enige waar je op moet letten is dat het juiste tabblad is geselecteerd, via PM voorbeeld gestuurd.
Hmm, ik denk dat mijn bestand (zie PM) toch handiger is voor een absolute Excel-n00b..

In mijn geval hoeven de rijen uit de cvs alleen gekopieerd en geplakt te worden in transacties_raw, that's it..
It's Time To Shine
[i]What would life be like without rhethorical questions?[/i]
pi_128821171
Leuke sheet, ook leuk voor de analyse.
Pak alleen het eerste deel van de macro voor de kopieer actie. De rest was specifiek op mijn functionaliteit:

quote:
'dit moet het csv bestand van ING voorstellen qua naam voor Excel
Dim mijnnaam As String
mijnnaam = ActiveWorkbook.Name
'aantal regels
Dim numberofrows As Integer
If [a3] <> "" Then
Range("A1").Select
Selection.End(xlDown).Select
numberofrows = ActiveCell.Row
Else
numberofrows = 2
End If
Windows("Format financieren.xlsx").Activate
Sheets("Transacties_Raw").Select
'hier zorgen we dat je genoeg nieuwe regels krijgt om vanaf bovenaf aan te vullen
Rows("2:" & numberofrows).Select
Selection.Insert Shift:=xlDown
Windows(mijnnaam).Activate
Range("a2:a" & numberofrows).Cut
Windows("Format financieren.xlsx").Activate
Range("A2").Select
ActiveSheet.Paste
  donderdag 11 juli 2013 @ 09:37:24 #69
249182 Holy_Goat
mhèèhèhè
pi_128826407
edit: heb de vraag zelf al beantwoord. Weet niet precies waarom het antwoord ook echt zo is, maar empirisch vastgesteld dat het zo is. Lezen is alleen interessant als je geinteresseerd bent (eventueel) in snelheidsoptimalisatie van je macro's in excel


quote:
0s.gif Op woensdag 10 juli 2013 18:07 schreef qu63 het volgende:

[..]

Nou ja, het is wel makkelijk als je al je data in Excel hebt dat je het dan ook leuk weer kan geven ;)

Maar voor de meeste dingen zal wel specifieke software geschreven zijn die standaard in die branche is :P
oh zeker weten ja :)

Momenteel ben ik overigens bezig met een stukje optimalisatie. Weet niet of jij / iemand anders er ook verstand van hebt, maar heb er een vraag bij:

Zou optie1 vergeleken optie 2 veel inefficienter zijn?

1) N 1-d arrays met lengte L, in een array gestopt
2) 1 NxL 2-d array

oproepen van willekeurige data kan voor de verschillende opties op de manieren:
1) array(1 .. N)(1 .. L)
2) array(1 .. N, 1 .. L)

Het voordeel is voor mij dat ik verschillende kolommen van verschillende sheets eenvoudig in de array kan stoppen met methode 1 met bv

1
2
3
4
5
6
7
dim rngarray(ubound(allranges)) as variant

i=1
for each rng in allranges
          rngarray(i)=application.worksheetfunctions.transpose(rng) 'dit geeft me een 1d array
          i=i+1
next rng

en dit gaat een stuk minder eenvoudig (heb iig nog geen methode gevonden zonder te handmatig te loopen) bij methode 2. Weet niet hoe ik makkelijk / efficient verschillende even lange ranges in een 2d array stoppen kan.

Alleen de vraag is nu, is het oproepen van data in methode 1 veel inefficienter dan in methode 2? De array populaten is in methode 1 dan wel sneller, maar 21098312098 keer iets opvragen is wellicht weer sneller in methode 2?

Gedachte hierachter is dat ik het idee heb dat methode 1 eerst een array ergens uit op moet halen en daarna pas het item daaruit kan vissen, terwijl methode 2 directe toegang heeft tot het juiste element...

------------------
achterliggend verhaaltje: ben bezig met een proof of concept projectje, een worksheetfunction welke zeer snel de juiste data uit een tabel kan fietsen, gebruik makend van sql-achtige statements in een query. (ja ik weet dat je ook echt via odbc een connectie naar eigen werkblad kan opzetten, maar gaat om het idee).

Een en ander werkt overigens al prima, alleen is de eerste keer de query opbouwen nog traag en dit wil ik verbeteren (omdat het kan). Na opbouwen kost een query ong 0.0001 seconde, waardoor het in een lijst van 30.000+ regels alsnog sneller is dan gangbare vlookup/sumif combinaties.

1=lookup("ORDERCOUNT from DATATABLE where YEAR = 2012 and MONTH = 4 and PRODUCT = product123")

Edit: een en ander empirisch vergeleken. Bij een tabelgrootte van 15000 regels en 10 kolommen, kost het opzoeken van 1.000.000 waarden gemiddeld 10% minder tijd bij het gebruik van optie 1 (een array met daarin meerdere arrays) dan bij het gebruik van een grote 2D array. Let wel, we hebben het over ordegrootte ~0.01 seconden verschil. Not much, maar toch ;) Om eea af te sluiten ook nog een korte vergelijking met het gebruik van de kolommen met data in een dictionary. Voor 1000 (1000x minder!) willekeurige requests was gemddeld al 0.88 seconde nodig . Dit maakt het gebruik van dictionaries dus ~10.000 x langzamer. Niet doen dus.

nog even onder elkaar:

inladen
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
Dim keys As Variant
    Dim data(10) As Variant
    Dim TwoDData As Variant
    Dim dct As Dictionary
    Set dct = New Dictionary
    'headers
    keys = ThisWorkbook.Sheets("data").Range("A1:J1")
    '2d data ineens inladen
    TwoDData = ThisWorkbook.Sheets("data").Range("A2:J15721")
    'dictionary vullen en array met arrays vullen
    For i = 1 To 10
        
        data(i) = Application.WorksheetFunction.Transpose(ActiveSheet.ListObjects("sales").ListColumns(keys(1, i)).DataBodyRange)
        dct.Add keys(1, i), data(i)
        
    Next

Tests welke 100x worden uitgevoerd met 1.000.000 (1.000 bij dict) willekeurige row en cols.

1
2
3
4
5
6
7
8
'option 1 : array in array to form a fake 2d array
        tmp = data(lcol)(lrow)
        
        'option 2 : 2d array
        tmp = TwoDData(lrow, lcol)
        
        'option 3 : dictionary with arrays
        tmp = dct.Item(keys(1, lcol))(lrow)


[ Bericht 7% gewijzigd door Holy_Goat op 11-07-2013 11:30:27 ]
  donderdag 11 juli 2013 @ 11:52:54 #70
62215 qu63
..de tijd drinkt..
pi_128829816
quote:
0s.gif Op donderdag 11 juli 2013 09:37 schreef Holy_Goat het volgende:
Momenteel ben ik overigens bezig met een stukje optimalisatie. Weet niet of jij / iemand anders er ook verstand van hebt, maar heb er een vraag bij:
Voor optimalisatie kom ik altijd hier heen ;)

En mijn sheets hebben (gelukkig) nooit zoveel datapoints dat optimalisatie nodig is. MOA en MOU uit de OP zijn voor mij dan vaak voldoende (al heb ik ze pas 1x echt geïmplementeerd)
It's Time To Shine
[i]What would life be like without rhethorical questions?[/i]
  donderdag 11 juli 2013 @ 13:42:55 #71
249182 Holy_Goat
mhèèhèhè
pi_128833206
quote:
0s.gif Op donderdag 11 juli 2013 11:52 schreef qu63 het volgende:

[..]

Voor optimalisatie kom ik altijd hier heen ;)

En mijn sheets hebben (gelukkig) nooit zoveel datapoints dat optimalisatie nodig is. MOA en MOU uit de OP zijn voor mij dan vaak voldoende (al heb ik ze pas 1x echt geïmplementeerd)
ik kom de laatste tijd meuk tegen (werk) waarin meerdere workbooks van 200mb+ aan elkaar geknoopt moeten worden ter analyse
  donderdag 11 juli 2013 @ 13:51:33 #72
62215 qu63
..de tijd drinkt..
pi_128833513
quote:
0s.gif Op donderdag 11 juli 2013 13:42 schreef Holy_Goat het volgende:

[..]

ik kom de laatste tijd meuk tegen (werk) waarin meerdere workbooks van 200mb+ aan elkaar geknoopt moeten worden ter analyse
Auw!
It's Time To Shine
[i]What would life be like without rhethorical questions?[/i]
  donderdag 11 juli 2013 @ 14:03:33 #73
85514 ralfie
!Yvan eht nioj
pi_128833957
quote:
0s.gif Op donderdag 11 juli 2013 09:37 schreef Holy_Goat het volgende:
edit: heb de vraag zelf al beantwoord. Weet niet precies waarom het antwoord ook echt zo is, maar empirisch vastgesteld dat het zo is. Lezen is alleen interessant als je geinteresseerd bent (eventueel) in snelheidsoptimalisatie van je macro's in excel

[..]

oh zeker weten ja :)

Momenteel ben ik overigens bezig met een stukje optimalisatie. Weet niet of jij / iemand anders er ook verstand van hebt, maar heb er een vraag bij:

Zou optie1 vergeleken optie 2 veel inefficienter zijn?

1) N 1-d arrays met lengte L, in een array gestopt
2) 1 NxL 2-d array

oproepen van willekeurige data kan voor de verschillende opties op de manieren:
1) array(1 .. N)(1 .. L)
2) array(1 .. N, 1 .. L)

Het voordeel is voor mij dat ik verschillende kolommen van verschillende sheets eenvoudig in de array kan stoppen met methode 1 met bv
[ code verwijderd ]

en dit gaat een stuk minder eenvoudig (heb iig nog geen methode gevonden zonder te handmatig te loopen) bij methode 2. Weet niet hoe ik makkelijk / efficient verschillende even lange ranges in een 2d array stoppen kan.

Alleen de vraag is nu, is het oproepen van data in methode 1 veel inefficienter dan in methode 2? De array populaten is in methode 1 dan wel sneller, maar 21098312098 keer iets opvragen is wellicht weer sneller in methode 2?

Gedachte hierachter is dat ik het idee heb dat methode 1 eerst een array ergens uit op moet halen en daarna pas het item daaruit kan vissen, terwijl methode 2 directe toegang heeft tot het juiste element...

------------------
achterliggend verhaaltje: ben bezig met een proof of concept projectje, een worksheetfunction welke zeer snel de juiste data uit een tabel kan fietsen, gebruik makend van sql-achtige statements in een query. (ja ik weet dat je ook echt via odbc een connectie naar eigen werkblad kan opzetten, maar gaat om het idee).

Een en ander werkt overigens al prima, alleen is de eerste keer de query opbouwen nog traag en dit wil ik verbeteren (omdat het kan). Na opbouwen kost een query ong 0.0001 seconde, waardoor het in een lijst van 30.000+ regels alsnog sneller is dan gangbare vlookup/sumif combinaties.
[ code verwijderd ]

Edit: een en ander empirisch vergeleken. Bij een tabelgrootte van 15000 regels en 10 kolommen, kost het opzoeken van 1.000.000 waarden gemiddeld 10% minder tijd bij het gebruik van optie 1 (een array met daarin meerdere arrays) dan bij het gebruik van een grote 2D array. Let wel, we hebben het over ordegrootte ~0.01 seconden verschil. Not much, maar toch ;) Om eea af te sluiten ook nog een korte vergelijking met het gebruik van de kolommen met data in een dictionary. Voor 1000 (1000x minder!) willekeurige requests was gemddeld al 0.88 seconde nodig . Dit maakt het gebruik van dictionaries dus ~10.000 x langzamer. Niet doen dus.

nog even onder elkaar:

inladen
[ code verwijderd ]

Tests welke 100x worden uitgevoerd met 1.000.000 (1.000 bij dict) willekeurige row en cols.
[ code verwijderd ]

Ongetwijfeld klopt je bewering dat optie2 beter is als optie1 wanneer je het over lower level talen hebt, maar in vba wordt data niet direct via de index opgehaald (immers, je kunt een array van 85-100 laten lopen ipv 0-15) dus er wordt altijd een extra lookup gedaan per dimensie van je array. Hierdoor zal het ophalen van data niet wezenlijk anders zijn tussen geneste en tweedimensionale arrays.

Heb voor de gein een testje gemaakt (100*10000 assigns, 3 miljoen random reads met wegschrijven naar het werkblad):

1
2
3
        [][]              [,]
assign  18.1757812500     14.78125000000
read    445.7382812500    400.90234375000
Zoals je ziet is [][] in beide gevallen trager, maar bij het lezen zijn de verschillen minimaal. Ik heb het idee dat de verschillen meer te maken hebben met wat processen op de achtergrond doen, aangezien ik moeite moest doen deze getallen niet precies hetzelfde te krijgen. Zonder de getallen elke keer weg te schrijven naar een werkblad presteren beide arrays ongeveer hetzelfde (de ene keer is de ene wat sneller, de andere keer de andere).

Ik gok (als ik het zo gauw bekijk) dat je tijdswinst eerder zit in het direct kopieren van een range-achtig object naar een array.

Als je vaker dit soort ongein tegenkomt, waarom implementeer je niet wat code in C# of C. De overhead ben je snel overheen wanneer je dit soort dingen gaat doen.
  donderdag 11 juli 2013 @ 20:11:23 #74
249182 Holy_Goat
mhèèhèhè
pi_128845946
quote:
0s.gif Op
donderdag 11 juli 2013 14:03 schreef ralfie het volgende:


[..]

Ongetwijfeld klopt je bewering dat optie2 beter is als optie1 wanneer je het over lower level talen hebt, maar in vba wordt data niet direct via de index opgehaald (immers, je kunt een array van 85-100 laten lopen ipv 0-15) dus er wordt altijd een extra lookup gedaan per dimensie van je array. Hierdoor zal het ophalen van data niet wezenlijk anders zijn tussen geneste en tweedimensionale arrays.

Heb voor de gein een testje gemaakt (100*10000 assigns, 3 miljoen random reads met wegschrijven naar het werkblad):
[ code verwijderd ]

Zoals je ziet is [][] in beide gevallen trager, maar bij het lezen zijn de verschillen minimaal. Ik heb het idee dat de verschillen meer te maken hebben met wat processen op de achtergrond doen, aangezien ik moeite moest doen deze getallen niet precies hetzelfde te krijgen. Zonder de getallen elke keer weg te schrijven naar een werkblad presteren beide arrays ongeveer hetzelfde (de ene keer is de ene wat sneller, de andere keer de andere).

Ik gok (als ik het zo gauw bekijk) dat je tijdswinst eerder zit in het direct kopieren van een range-achtig object naar een array.

Als je vaker dit soort ongein tegenkomt, waarom implementeer je niet wat code in C# of C. De overhead ben je snel overheen wanneer je dit soort dingen gaat doen.
Daar wil ik wel iets meer over weten. Echter, dit kan waarschijnlijk niet zó ingesteld worden dat het ook overal werkt , zonder extra bestanden mee te moeten sturen / installs nodig heb? Vooral op locaties zonder enig admin rechten ben je snl de sjaak.

Het viel mij overigens enorm op dat het gebruik maken van dictionaries zo mega veel trager is. Is dat niet raar?
  donderdag 11 juli 2013 @ 20:37:33 #75
85514 ralfie
!Yvan eht nioj
pi_128846873
quote:
0s.gif Op donderdag 11 juli 2013 20:11 schreef Holy_Goat het volgende:

[..]

Daar wil ik wel iets meer over weten. Echter, dit kan waarschijnlijk niet zó ingesteld worden dat het ook overal werkt , zonder extra bestanden mee te moeten sturen / installs nodig heb? Vooral op locaties zonder enig admin rechten ben je snl de sjaak.

Het viel mij overigens enorm op dat het gebruik maken van dictionaries zo mega veel trager is. Is dat niet raar?
Je zult wel op zijn minst een dlltje mee moeten zenden ja. Admin rechten maakt niets uit, maar een extra (.dll)bestandje is op zijn minst wel nodig ja. Zolang een overactieve system admin dlls niet blokkeert en de pc redelijk up to date is zouden er geen problemen moeten zijn.

En ik kan me voorstellen dat dictionaries met dergelijke hoeveelheden trager zijn ja. Ik geloof nooit dat de implementatie ervan in vb(a) nou zo optimaal is. Immer voor dergelijke hoeveelheden pakken mensen eerder een database-achtig iets of een andere omgeving.
  donderdag 11 juli 2013 @ 21:23:21 #76
249182 Holy_Goat
mhèèhèhè
pi_128848842
quote:
0s.gif Op donderdag 11 juli 2013 20:37 schreef ralfie het volgende:

[..]

Je zult wel op zijn minst een dlltje mee moeten zenden ja. Admin rechten maakt niets uit, maar een extra (.dll)bestandje is op zijn minst wel nodig ja. Zolang een overactieve system admin dlls niet blokkeert en de pc redelijk up to date is zouden er geen problemen moeten zijn.

En ik kan me voorstellen dat dictionaries met dergelijke hoeveelheden trager zijn ja. Ik geloof nooit dat de implementatie ervan in vb(a) nou zo optimaal is. Immer voor dergelijke hoeveelheden pakken mensen eerder een database-achtig iets of een andere omgeving.
Mwa. Bij grote bedrijven werken ze kennelijk toch nog best heel erg vaak met grote sheets om reportings op te draaien....

Even wat anders. Ik probeer (zo snel mogelijk, uiteraard) N arrays met zo'n 15000 items samen te voegen tot 1 array met 15000 items, liefst met een delimiter.

Nu loop ik er doorheen en plak ik alle kolommen achter elkaar met
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
for i = 1 to 15000)
    for j = 1 to N
        key = "-" key(j) 
    next k
    keys(i)=right(key,len(key)-1)
next i

of met 

for i = 1 to 15000)
    for j = 1 to N
        keyarray(j) = key(j) 
    next k
    keys(i)=join(keyarray,"-")
next i
wat even snel is. In mijn geval, met N = 3 duurt het nog zo'n hele seconde, ofwel 50% (!) van het totale proces van pre-genereren. Als dit sneller kan dan zit hier dus behoorlijk winst. Ben vooral geinteresseerd in een non-dll aanpak, maarja dat moet dan wel kunnen.

Ik neem aan dat er geen manier is om hups ineens meerdere arrays te joinen, maar vind het door de array heen loopen wel een beetje zo-zo...

Jij een idee?

---
edit: doevents eruit gesloopt (die zat er ook in, in die loop, was gewoonte van me). Kost nu nog maar 0.04 sec. nice. Overigens blijft de vraag staan, is nog steeds goed om te weten namelijk

edit2: ik kan alleen nog maar iets bedenken met een winapi call, of bv memcopy, maar kom daar niet uit en is maar de vraag of het wat oplevert

[ Bericht 10% gewijzigd door Holy_Goat op 12-07-2013 16:53:22 ]
  donderdag 18 juli 2013 @ 06:32:17 #77
249182 Holy_Goat
mhèèhèhè
pi_129072189
Je kunt wel merken dat het vakantie is :P al een week niets gepost hier.
pi_129212272
Ik heb een sheet met gegevens van verschillende projecten (elk project staat op een rij). De projecten zijn verdeeld in verschillende categorieën (welke categorie elk project in valt, staat in een kolom). Het ziet er dus zo ongeveer uit:
naam beginjaar categorie eindjaar etc

Nu wil ik sheets per categorie toevoegen. In deze sheet moeten dus alleen de projecten komen die in één bepaalde categorie vallen. Met de if/als-functie kan ik het wel voor elkaar krijgen, maar dan komen er (veel) lege rijen in de sheets. Hoe doe ik dit dat er in elke sheet (van de categorie) alleen de projecten van die categorie komen? En het liefst dat ik dus kan kiezen welke gegevens (kolommen) uit de (moeder)sheet overgenomen worden in de (categorie)sheet.
  maandag 22 juli 2013 @ 09:42:33 #79
199535 DroogDok
Sandcastle
pi_129212297
quote:
0s.gif Op maandag 22 juli 2013 09:41 schreef Locutus-of-Borg het volgende:
Ik heb een sheet met gegevens van verschillende projecten (elk project staat op een rij). De projecten zijn verdeeld in verschillende categorieën (welke categorie elk project in valt, staat in een kolom). Het ziet er dus zo ongeveer uit:
naam beginjaar categorie eindjaar etc

Nu wil ik sheets per categorie toevoegen. In deze sheet moeten dus alleen de projecten komen die in één bepaalde categorie vallen. Met de if/als-functie kan ik het wel voor elkaar krijgen, maar dan komen er (veel) lege rijen in de sheets. Hoe doe ik dit dat er in elke sheet (van de categorie) alleen de projecten van die categorie komen? En het liefst dat ik dus kan kiezen welke gegevens (kolommen) uit de (moeder)sheet overgenomen worden in de (categorie)sheet.
Verticaal zoeken proberen.
"We are all atheists about most of the gods that humanity has ever believed in. Some of us just go one god further." - Richard Dawkins
pi_129213313
quote:
0s.gif Op maandag 22 juli 2013 09:42 schreef DroogDok het volgende:

[..]

Verticaal zoeken proberen.
Dat is een goede suggestie. Alleen voor zover ik het nu kan zien kun je dan maar één waarde teruggeven. Als er dus meerdere waardes aan de voorwaarde voldoen, is verticaal zoeken niet handig.

Ik probeer het nu met filter.
  maandag 22 juli 2013 @ 10:44:15 #81
199535 DroogDok
Sandcastle
pi_129213599
quote:
0s.gif Op maandag 22 juli 2013 10:31 schreef Locutus-of-Borg het volgende:

[..]

Dat is een goede suggestie. Alleen voor zover ik het nu kan zien kun je dan maar één waarde teruggeven. Als er dus meerdere waardes aan de voorwaarde voldoen, is verticaal zoeken niet handig.

Ik probeer het nu met filter.
De zoekwaarde kan (denk ik) ook een OF-functie zijn.
Maar filter is inderdaad een makkelijkere oplossing.
"We are all atheists about most of the gods that humanity has ever believed in. Some of us just go one god further." - Richard Dawkins
pi_129213607
quote:
0s.gif Op donderdag 18 juli 2013 06:32 schreef Holy_Goat het volgende:
Je kunt wel merken dat het vakantie is :P al een week niets gepost hier.
Viel mij ook al op ja.
Zelf heb ik de afgelopen 3 weken amper m'n laptopje gezien door een ander project :P (waarvoor ik mijn laptop niet nodig heb)
  maandag 22 juli 2013 @ 11:15:53 #83
249182 Holy_Goat
mhèèhèhè
pi_129214413
quote:
0s.gif Op maandag 22 juli 2013 10:44 schreef PAAC het volgende:

[..]

Viel mij ook al op ja.
Zelf heb ik de afgelopen 3 weken amper m'n laptopje gezien door een ander project :P (waarvoor ik mijn laptop niet nodig heb)
Mensen die buiten komen :r
  maandag 22 juli 2013 @ 11:17:48 #84
249182 Holy_Goat
mhèèhèhè
pi_129214476
quote:
0s.gif Op maandag 22 juli 2013 10:44 schreef DroogDok het volgende:

[..]

De zoekwaarde kan (denk ik) ook een OF-functie zijn.
Maar filter is inderdaad een makkelijkere oplossing.
Alleen jammer dat je daarna geen kont meer kunt doen met die filter waarden. Naja, dat kan wel met getpivotdata, maar heel handig is het niet.
pi_129216470
quote:
0s.gif Op maandag 22 juli 2013 11:17 schreef Holy_Goat het volgende:

[..]

Alleen jammer dat je daarna geen kont meer kunt doen met die filter waarden. Naja, dat kan wel met getpivotdata, maar heel handig is het niet.
Hoe bedoel je dat precies, dat je er 'geen kont meer mee kunt doen'? Ik lees bepaalde waarde onder de voorwaarde (aangegeven in de filter) uit en geef deze in een de nieuwe sheet weer. Aan de hand van deze gefilterde database kan ik toch grafieken (per voorwaarde) gaan plotten?
pi_129218120
quote:
0s.gif Op maandag 22 juli 2013 11:15 schreef Holy_Goat het volgende:

[..]

Mensen die buiten komen :r
Zelf blijf ik liever binnen :)
En dat project was niet vakantie houden jammer genoeg(heb ik wel nodig als het klaar is :P)
  dinsdag 23 juli 2013 @ 09:10:20 #87
249182 Holy_Goat
mhèèhèhè
pi_129244924
quote:
0s.gif Op maandag 22 juli 2013 12:22 schreef Locutus-of-Borg het volgende:

[..]

Hoe bedoel je dat precies, dat je er 'geen kont meer mee kunt doen'? Ik lees bepaalde waarde onder de voorwaarde (aangegeven in de filter) uit en geef deze in een de nieuwe sheet weer. Aan de hand van deze gefilterde database kan ik toch grafieken (per voorwaarde) gaan plotten?
ja natuurlijk kun je er mee doen wat jij zo beschrijft :)
Ik bedoelde alleen: het automatisch weer uitlezen van allerhande gegevens uit pivots die je louter hebt gemaakt om eea te groeperen voor verdere automatische verwerking gaat soms wat lastiger.

(getpivotdata functie (which i dont like): http://office.microsoft.c(...)ata-HP005209107.aspx)

[ Bericht 1% gewijzigd door Holy_Goat op 23-07-2013 09:15:50 ]
pi_129308041
In Excel 2007 heb ik onderstaande tabel. Ik wil hier een grafiek van maken:
- op de X as de jaren
- op de Y as de winst
- vervolgens (en dit is het moeilijke gedeelte) 2 lijnen in dezelfde grafiek: een voor Urk, de ander voor Ede.
Het lukt me alleen niet, wat ik ook probeer, met Google kon ik het ook niet direct vinden

De enige oplossing die ik wist is sorteren op Stad en vervolgens 2 keer die data aan de grafiek toevoegen. Je snapt echter dat mijn tabel in de praktijk zich daar niet makkelijk voor leent.

bij voorbaat dank
1
2
3
4
5
6
7
8
9
JAAR STAD WINST
2003 Ede  240
2001 Urk   90
2000 Ede  300
2001 Ede  100
2000 Urk   50
2002 Urk  100
2003 Urk   30
2002 Ede  150
  woensdag 24 juli 2013 @ 23:26:37 #89
85514 ralfie
!Yvan eht nioj
pi_129312043
quote:
5s.gif Op woensdag 24 juli 2013 22:11 schreef LogiteX het volgende:
In Excel 2007 heb ik onderstaande tabel. Ik wil hier een grafiek van maken:
- op de X as de jaren
- op de Y as de winst
- vervolgens (en dit is het moeilijke gedeelte) 2 lijnen in dezelfde grafiek: een voor Urk, de ander voor Ede.
Het lukt me alleen niet, wat ik ook probeer, met Google kon ik het ook niet direct vinden

De enige oplossing die ik wist is sorteren op Stad en vervolgens 2 keer die data aan de grafiek toevoegen. Je snapt echter dat mijn tabel in de praktijk zich daar niet makkelijk voor leent.

bij voorbaat dank
[ code verwijderd ]

selecteer gegevens (inclusief titels)
ga naar tabje 'invoegen'. Klik op pijltje bij 'draaitabel' -> 'draaigrafiek'
OK
in het paneel rechts
sleep 'stad' (bovenaan) naar legendavelden (onderin)
sleep 'winst' naar waarden
sleep 'jaar' naar asvelden

Verander eventueel grafiek soort.
pi_129312298


[ Bericht 100% gewijzigd door snabbi op 24-07-2013 23:31:27 ]
abonnement Unibet Coolblue Bitvavo
Forum Opties
Forumhop:
Hop naar:
(afkorting, bv 'KLB')