abonnement Unibet Coolblue
  vrijdag 10 juni 2011 @ 09:17:35 #226
62215 qu63
..de tijd drinkt..
pi_97970610
quote:
0s.gif Op vrijdag 10 juni 2011 09:11 schreef DaFan het volgende:

[..]

Sorry wel aanhalingstekens! Je hebt een spatie in je sheetnaam :)
Klopt, deze werkt wel:
1=VERGELIJKEN("*Adviseur*";INDIRECT("'"&A35&"'!A4:Q4");0)
It's Time To Shine
[i]What would life be like without rhethorical questions?[/i]
  vrijdag 10 juni 2011 @ 10:08:55 #227
62215 qu63
..de tijd drinkt..
pi_97972004
Deze code geeft als resultaat #WAARDE, kan iemand zien waar het aan ligt?
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
Function UNIQUE(InputRange As Range, ItemNo As Long) As Variant
Dim cl As Range, cUnique As New Collection, cValue As Variant
    Application.Volatile
    On Error Resume Next
    For Each cl In InputRange
        If cl.Formula <> "" Then
            cUnique.Add cl.Value, CStr(cl.Value)
        End If
    Next cl
    UNIQUE = ""
    If ItemNo = 0 Then
        UNIQUE = cUnique.Count
    Else
        If ItemNo <= cUnique.Count Then
            UNIQUE = cUnique(ItemNo)
        End If
    End If
    On Error GoTo 0
End Function
Ik gebruik deze code om de eerste unieke waarde te vinden:
1=UNIQUE("'"&A34&"'!$"&B34&"$6:$"&B34&"$106";1)
Als ik em niet dynamisch maak werkt het wel:
1=UNIQUE('Amsterdam IMB'!$H$6:$H$106;1)
It's Time To Shine
[i]What would life be like without rhethorical questions?[/i]
pi_97972765
Je functie UNIQUE verwacht een range en niet een string (tekst).
Als je =UNIQUE(INDIRECT("'"&A34&"'!$"&B34&"$6:$"&B34&"$106");1) doet zou het wel moeten werken.
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_97972810
quote:
7s.gif Op donderdag 9 juni 2011 19:32 schreef DaFan het volgende:

[..]

Sorry jullie hebben gelijk, het was eigenlijk tellen.
Ik heb nog deze:
=SUM(IF(A2:B4="tekst";1)+IF(C5:F20="tekst";1))
Ctrl-Shift-Enter
Tja dat is niet echt een verbetering tov het optellen van de countifs maar toch bedankt.
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 10 juni 2011 @ 10:41:44 #230
62215 qu63
..de tijd drinkt..
pi_97972854
quote:
3s.gif Op vrijdag 10 juni 2011 10:38 schreef Deetch het volgende:
Je functie UNIQUE verwacht een range en niet een string (tekst).
Als je =UNIQUE(INDIRECT("'"&A34&"'!$"&B34&"$6:$"&B34&"$106");1) doet zou het wel moeten werken.
Ja! Thanks! :*
It's Time To Shine
[i]What would life be like without rhethorical questions?[/i]
pi_97973086
quote:
3s.gif Op vrijdag 10 juni 2011 10:39 schreef Deetch het volgende:

[..]

Tja dat is niet echt een verbetering tov het optellen van de countifs maar toch bedankt.
mee eens maar ik krijg het niet anders voor elkaar.. :(
  vrijdag 10 juni 2011 @ 11:10:35 #232
62215 qu63
..de tijd drinkt..
pi_97973915
Wat moet ik aan deze functie aanpassen om er voor te zorgen dat lege cellen overgeslagen worden?
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
Function UNIQUE(InputRange As Range, ItemNo As Long) As Variant
Dim cl As Range, cUnique As New Collection, cValue As Variant
    Application.Volatile
    On Error Resume Next
    For Each cl In InputRange
        If cl.Formula <> "" Then
            cUnique.Add cl.Value, CStr(cl.Value)
        End If
    Next cl
    UNIQUE = ""
    If ItemNo = 0 Then
        UNIQUE = cUnique.Count
    Else
        If ItemNo <= cUnique.Count Then
            UNIQUE = cUnique(ItemNo)
        End If
    End If
    On Error GoTo 0
End Function
It's Time To Shine
[i]What would life be like without rhethorical questions?[/i]
  vrijdag 10 juni 2011 @ 11:35:28 #233
62215 qu63
..de tijd drinkt..
pi_97974828
En als ik deze macro draai doet Excel er bijna 20 seconden over, waar ligt dat aan en kan dat verholpen worden?
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
Sub Vernieuwen()
'
' Vernieuwen Macro
'
' Sneltoets: Ctrl+Shift+V
'
    Application.ScreenUpdating = False
    
    Dim c As Range
    For Each c In Sheets("Hulpsheet Sven").Range("A32:A58")
    c.ClearContents
    Next c
    
    Dim Ws As Worksheet, Wb As Workbook, R As Range, S As Integer
    Set Wb = ActiveWorkbook
    Set R = Sheets("Hulpsheet Sven").Range("a32")
    S = 1
    For Each Ws In Wb.Worksheets
    R.Cells(S, 1) = Ws.Name
    S = S + 1
    Next Ws
    Application.ScreenUpdating = True
End Sub
Het werkboek heeft nu 17 sheets..
It's Time To Shine
[i]What would life be like without rhethorical questions?[/i]
pi_97982254
Dim c As Range
For Each c In Sheets("Hulpsheet Sven").Range("A32:A58")
c.ClearContents
Next c

Kun je dat niet net zo goed vervangen door:
Sheets("Hulpsheet Sven").Range("A32:A58").ClearContents?

Nu gaat de macro elke cel apart clearen.

IN die tweede loop roep je een cel aan: R.Cells(s,1) als onderdeel van een range. Maar daarboven definieer je de range als 1 cel A32, kan het daar aan liggen?
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 10 juni 2011 @ 15:23:58 #235
62215 qu63
..de tijd drinkt..
pi_97983554
quote:
3s.gif Op vrijdag 10 juni 2011 14:53 schreef Deetch het volgende:
Dim c As Range
For Each c In Sheets("Hulpsheet Sven").Range("A32:A58")
c.ClearContents
Next c

Kun je dat niet net zo goed vervangen door:
Sheets("Hulpsheet Sven").Range("A32:A58").ClearContents?

Nu gaat de macro elke cel apart clearen.
Dit scheelt al bijna 10 sec! ^O^
quote:
IN die tweede loop roep je een cel aan: R.Cells(s,1) als onderdeel van een range. Maar daarboven definieer je de range als 1 cel A32, kan het daar aan liggen?
Hoe zou ik dat anders moeten doen dan?
It's Time To Shine
[i]What would life be like without rhethorical questions?[/i]
pi_98072200
leg eerst eens uit wat je met die tweede code wilt bewerkstelligen? Dan zal ik na de pinksteren eens een poging wagen.
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 13 juni 2011 @ 01:41:34 #237
62215 qu63
..de tijd drinkt..
pi_98098983
quote:
3s.gif Op zondag 12 juni 2011 17:58 schreef Deetch het volgende:
leg eerst eens uit wat je met die tweede code wilt bewerkstelligen? Dan zal ik na de pinksteren eens een poging wagen.
Vanaf cel A32 naar beneden wil ik een lijst met sheetnamen
It's Time To Shine
[i]What would life be like without rhethorical questions?[/i]
pi_98102539
quote:
0s.gif Op maandag 13 juni 2011 01:41 schreef qu63 het volgende:

[..]

Vanaf cel A32 naar beneden wil ik een lijst met sheetnamen
1
2
3
For i = 1 To Sheets.Count
   Range("A" & i + 31) = Sheets(i).Name
Next i
pi_98147899
quote:
7s.gif Op maandag 13 juni 2011 09:28 schreef DaFan het volgende:

[..]
[ code verwijderd ]

zo ga je van 20 regels code naar 6 dat is vast sneller.
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
  dinsdag 14 juni 2011 @ 10:50:53 #240
249182 Holy_Goat
mhèèhèhè
pi_98149284
quote:
7s.gif Op maandag 13 juni 2011 09:28 schreef DaFan het volgende:

[..]
[ code verwijderd ]

1
2
3
4
dim ws as worksheet
for each ws in thisworkbook.sheets
   .... ws.name gebruiken
next ws

echter, wat wel leuk zou zijn in vba....
cells(i++,1) als zijnde gebruik i, en voeg daarna automatisch 1 toe aan i.
Toch jammer.
  woensdag 15 juni 2011 @ 09:14:17 #241
62215 qu63
..de tijd drinkt..
pi_98190941
quote:
7s.gif Op maandag 13 juni 2011 09:28 schreef DaFan het volgende:

[..]
[ code verwijderd ]

Hmz, die code kost me alasnogruim 20 seconden.. Geen verbetering t.o.v. dit dus:
1
2
3
4
5
6
7
8
Dim Ws As Worksheet, Wb As Workbook, R As Range, S As Integer
Set Wb = ActiveWorkbook
Set R = Sheets("Hulpsheet Sven").Range("a32")
S = 1
For Each Ws In Wb.Worksheets
R.Cells(S, 1) = Ws.Name
S = S + 1
Next Ws
It's Time To Shine
[i]What would life be like without rhethorical questions?[/i]
pi_98192591
quote:
0s.gif Op woensdag 15 juni 2011 09:14 schreef qu63 het volgende:

[..]

Hmz, die code kost me alasnogruim 20 seconden.. Geen verbetering t.o.v. dit dus:

[ code verwijderd ]

Qua tijd niet...code wel. Korter is beter ;)
Misschien moet je calculate ook ff uitzetten. Het zou best een kunnen dat Excel gaat rekenen als de macro de sheet raadpleegt?

17 lege sheets duurt <1 sec

[ Bericht 2% gewijzigd door DaFan op 15-06-2011 10:30:21 ]
  woensdag 15 juni 2011 @ 11:29:25 #243
62215 qu63
..de tijd drinkt..
pi_98194514
quote:
7s.gif Op woensdag 15 juni 2011 10:24 schreef DaFan het volgende:

[..]

Qua tijd niet...code wel. Korter is beter ;)
Misschien moet je calculate ook ff uitzetten. Het zou best een kunnen dat Excel gaat rekenen als de macro de sheet raadpleegt?

17 lege sheets duurt <1 sec
Ik denk dat het vooral komt door bijna 800 cellen met een UNIQUE()-functie..

Berekenen uitzetten was idd wel een goede, nu duurde het <1sec ipv 12 sec!

[ Bericht 4% gewijzigd door qu63 op 15-06-2011 11:36:16 ]
It's Time To Shine
[i]What would life be like without rhethorical questions?[/i]
  woensdag 15 juni 2011 @ 11:37:50 #244
62215 qu63
..de tijd drinkt..
pi_98194805
Nu moet ik alleen nog iets bedenken hoe ik die UNIQUE-functie lege cellen over kan laten slaan en of deze nog sneller kan. In grote sheets duurt het namelijk soms 0,5sec voordat ik weer verder kan..
It's Time To Shine
[i]What would life be like without rhethorical questions?[/i]
pi_98195960
quote:
0s.gif Op woensdag 15 juni 2011 11:37 schreef qu63 het volgende:
Nu moet ik alleen nog iets bedenken hoe ik die UNIQUE-functie lege cellen over kan laten slaan en of deze nog sneller kan. In grote sheets duurt het namelijk soms 0,5sec voordat ik weer verder kan..
Ik denk gewoon met een IF, volgens mij evalueert ie pas FALSE of TRUE na de IF
pi_98197497
1
2
3
4
5
6
7
8
For Each cl In InputRange
     If cl.Formula <> "" Then
         cUnique.Add cl.Value, CStr(cl.Value)
     Else
         Goto Volgende
     End If
Volgende:
Next cl
?

[ Bericht 19% gewijzigd door DaFan op 15-06-2011 13:22:03 ]
pi_98198209
quote:
7s.gif Op woensdag 15 juni 2011 12:56 schreef DaFan het volgende:

[ code verwijderd ]

?
dan stopt de code toch bij de eerste de beste lege cel? vraag me af of dat de bedoeling is.
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_98198578
quote:
3s.gif Op woensdag 15 juni 2011 13:12 schreef Deetch het volgende:

[..]

dan stopt de code toch bij de eerste de beste lege cel? vraag me af of dat de bedoeling is.
Aangepast, thanks.
VBA heeft geen 'Continue' :r
  woensdag 15 juni 2011 @ 13:29:33 #249
62215 qu63
..de tijd drinkt..
pi_98198896
quote:
7s.gif Op woensdag 15 juni 2011 12:56 schreef DaFan het volgende:

[ code verwijderd ]

?
Helaas, het veranderd niets, ik krijg nog steeds in een lijst unieke waarden een lege cel ;(
It's Time To Shine
[i]What would life be like without rhethorical questions?[/i]
pi_98199733
quote:
0s.gif Op woensdag 15 juni 2011 13:29 schreef qu63 het volgende:

[..]

Helaas, het veranderd niets, ik krijg nog steeds in een lijst unieke waarden een lege cel ;(
Is je waarde in cl leeg leeg of is hij leeg door een formule?
Want dan is cl.Formula natuurlijk nooit ""

cl.Value <> "" is dan beter ;)

vb;
Als ik A1:A10 heb staan
1=IF(ROW(A1)=4;"";ROW(A1))
(doorgetrokken)
Dan geeft cl.Value = 9
cl.Formula = 10

Edit, zo dus:
1
2
3
4
5
For Each cl In InputRange
     If cl.Value<> "" Then
         cUnique.Add cl.Value, CStr(cl.Value)
     End If
Next cl
abonnement Unibet Coolblue
Forum Opties
Forumhop:
Hop naar:
(afkorting, bv 'KLB')