![]() |
|
|||||||
| Registreer | FAQ | Ledenlijst | Interessegroepen | Kalender | Zoeken | Berichten van vandaag | Markeer forums als gelezen |
|
|
|
Discussietools | Weergave |
|
#21
|
|||
|
|||
|
Potverdulle, machtig mooi spul!
![]() Was hier terecht gekomen omdat ik zelf ook met een WK-overzicht bezig was, maar die gaat mooi de plee in nu, ik biets mooi deze voor hier op 't werk.
|
| Sponsored Links |
|
#22
|
|||
|
|||
|
Als de wereldkampioen niet Nederland is staat er FOUT. en krijg je ook geen punten???
Of heb ik het fout... |
|
#23
|
|||
|
|||
|
Citaat:
![]() EDIT: Fout inmiddels gecorrigeerd in update 2 Laatst gewijzigd door antonh; 5 January 2010 om 12:02 |
|
#24
|
||||
|
||||
|
een nieuwe module1 met de gevraagde wijzigingen.
PS. lees eens de help na ivm protect en vooral de optie "userinterfaceonly:=True", daar mee blijft je tabblad toegankelijk voor de macros zonder unprotect !! Eigenlijk zou je dat misschien eenmalig voor alle tabbladen moeten doen en dan mag er later gestoeid worden, de macros hebben toegang zonder unprotect. Dan kan helemaal voorin "DeelnemersOphalen" die unprotect ook weg. Zoek anders eens op de site naar andere voorbeelden over die userinterfaceonly
__________________
bsalv ![]() "Er gaat meer boven je petje dan eronder" Toon Hermans Is je vraag afgehandeld, gelieve die dan op "opgelost" te zetten via de daarvoor voorziene knop |
|
#25
|
|||
|
|||
|
Citaat:
Wat bedoel je precies met: Citaat:
Alvast bedankt voor je reactie.. |
|
#26
|
||||
|
||||
|
Code:
Zou je aub ook kunnen kijken naar het 'deelnemers ranking' tabblad? Dat de tabelgrootte aangepast wordt naar het aantal deelnemers (inclusief layout). De layout zou je misschien beter zelf eenmalig doorkopieren tot rij 500 en de extra rode regel onderaan verbergt dan de overblijvende lege regels Code:
With Sheets("deelnemers ranking")
.Protect userinterfaceonly:=True 'macros mogen wijzigen zonder paswoord !!
.Range("C4").Resize(UBound(data), UBound(data, 2)) = data
i = WorksheetFunction.Max(53, .Range("C" & Rows.Count).End(xlUp).Row, .Range("D" & Rows.Count).End(xlUp).Row, .Range("E" & Rows.Count).End(xlUp).Row) 'rijnummer van de laatste niet-lege cel in 1 van die 3 kolommen met een min van 53
.Range("B4:B500").ClearContents 'B-kolom ruim genoeg wissen
.Range("B4").FormulaR1C1 = "=IF(ISERROR(RANK(RC[3],R4C5:R" & i & "C5,0)),"""",RANK(RC[3],R4C5:R" & i & "C5,0))" 'nieuwe formule in B4
.Range("B4").Copy
.Range("B4").Resize(i - 3, 1).PasteSpecial xlFormulas 'formule doorkopieren
.Range("B3").Sort Range("B3"), xlAscending, Header:=xlYes 'sorteren op de B-kolom
.Rows( 1 & ":" & i).Hidden = false
.Rows(i + 1 & ":500").Hidden = True
End With
Application.Goto Sheets("deelnemers ranking").Range("A1")
End Sub
__________________
bsalv ![]() "Er gaat meer boven je petje dan eronder" Toon Hermans Is je vraag afgehandeld, gelieve die dan op "opgelost" te zetten via de daarvoor voorziene knop |
|
#27
|
|||
|
|||
|
Citaat:
@ Bsalv; Hartstikke bedankt voor je hulp, je uitleg en je macro's
|
|
#28
|
|||
|
|||
|
Citaat:
In kolom C worden alle deelnemers id's opgehaald. In kolom B wordt voor iedere gevulde cel in kolom C een 'rank' getal ingevuld. Aan niet elk deelnemer id is echter een deelnemer gekoppeld.. |
|
#29
|
||||
|
||||
|
als er bovenin de deelnemers xx-yy geen naam staat in de 5e rij neemt hij de punten onderin niet meer mee. Vervolgens sorteer ik op het aantal punten in de E-kolom en pas dan het bereik voor die formule van rang aan de laatst gevulde cel van die E-kolom.
Beter zo ? Code:
Sub DataRanking()
Dim i As Integer, ikol As Integer, c As Range
Dim data(1 To 500, 1 To 3) As Variant '500 is een beetje aan de ruime kant !!!
'zoek alle werkbladen van het type "deelnemers xx-yyy"
For Each BaseWks In Worksheets 'loop alle werkbladen af
splitsen = Split(LCase(BaseWks.Name), " ") 'knip naam werkblad in stukken volgens een spatie
If splitsen(0) = "deelnemers" And UBound(splitsen) > 0 Then 'minstens 2 stukken en 1e stuk is deelnemers
splitsen = Split(splitsen(1), "-") 'knip 2e stuk in stukken volgens "-"
If UBound(splitsen) = 1 Then 'opnieuw 2 stukken
If IsNumeric(splitsen(0)) And IsNumeric(splitsen(0)) Then 'beide stukken numeriek
For ikol = 8 To 204 Step 4
If BaseWks.Cells(5, ikol) <> "" Then 'er is een naam van de deelnemer ingevuld in de 5e rij, zoveelste kolom
i = i + 1
data(i, 1) = BaseWks.Cells(4, ikol) 'nr van de deelnemer staat in de 4e rij, zoveelste kolom
data(i, 2) = BaseWks.Cells(5, ikol) 'naam van de deelnemer staat in de 5e rij, zoveelste kolom
data(i, 3) = BaseWks.Cells(99, ikol + 2) 'punten van de deelnemer staat in de 5e rij, zoveelste kolom
End If
Next
End If
End If
End If
Next
With Sheets("deelnemers ranking")
.Protect userinterfaceonly:=True 'macros mogen wijzigen zonder paswoord !!
Set c = .Range("C4").Resize(UBound(data), UBound(data, 2)) 'uitvoergebied bepalen
c = data
c.Sort Range("E4"), xlDescending, Header:=xlNo 'sorteren op de E-kolom 'sorteren op aantal punten (dalend)
i = WorksheetFunction.Max(10, .Range("E" & Rows.Count).End(xlUp).Row) 'rijnummer van de laatste niet-lege cel in E-kolom met een min van 10
c.Columns(1).Offset(, -1).ClearContents 'B-kolom ruim genoeg wissen
.Range("B4").FormulaR1C1 = "=IF(ISERROR(RANK(RC[3],R4C5:R" & i & "C5,0)),"""",RANK(RC[3],R4C5:R" & i & "C5,0))" 'nieuwe formule in B4
.Range("B4").Copy
.Range("B4").Resize(i - 3, 1).PasteSpecial xlFormulas 'formule doorkopieren
c.Columns(1).EntireRow.Hidden = True
.Rows(1 & ":" & i).Hidden = False
End With
Application.Goto Sheets("deelnemers ranking").Range("A1")
End Sub
__________________
bsalv ![]() "Er gaat meer boven je petje dan eronder" Toon Hermans Is je vraag afgehandeld, gelieve die dan op "opgelost" te zetten via de daarvoor voorziene knop |
|
#30
|
|||
|
|||
|
Dit is bijna zoals ik hem hebben wil. Ik zie alleen nog een layout foutje.
Bij het sorteren van de deelnemers worden de celachtergronden meegenomen. Kunnen ook enkel de waarden in de cellen gesorteerd worden? In kolom B blijft de layout overigens wel goed (zie bijlage). EDIT: hij laat overigens niet altijd alle deelnemers zien met de dataranking macro. Ik heb het volgende gedaan: 1. Ik heb alle rijen zichtbaar gemaakt. 2. Deelnemers ophalen (108 stuks) 3. Dataranking laat zien tot regel 111 (dit klopt ook) 4. 2 tabbladen met deelnemers verwijderd. 5. Tabblad deelnemers 1 - 50 leeggemaakt. 6. Opnieuw deelnemers ophalen (108 stuks) 7. Dataranking laat dit keer zien tot regel 53. Laatst gewijzigd door antonh; 5 January 2010 om 09:32 |
| Labels |
| wk 2010 excel |
| Discussietools | |
| Weergave | |
|
|
|
|||||||
| Registreer | FAQ | Ledenlijst | Interessegroepen | Kalender | Zoeken | Berichten van vandaag | Markeer forums als gelezen |