Jeg kan ikke overskue det med en formel, men prøv om denne makro ikke opfylder det du ønsker:
Sub største() Dim S, Z, X, L As Long Dim R As Range Z = 0 S = 0 For X = 1 To 5 If Z >= 2 Then Set R = Range("Z1:BY1") Else Set R = Range("A1:BY1") End If L = Application.Large(R, X) If Application.Match(L, Range("A1:BY1"), 0) < 25 Then Z = Z + 1 End If S = S + L Next MsgBox ("Sum is " & S) End Sub
har siddet og tilpasset den lidt til hvor jeg har data i arket, så koden ser sådan ud:
Sub største() Dim S, Z, X, L As Long Dim R As Range Z = 0 S = 0 For X = 1 To 5 If Z >= 2 Then Set R = Range("P5:AB5:AL5:AN5:BE5") Else Set R = Range("I1:N5:P5:AB5:AL5:AN5:BE5") End If L = Application.Large(R, X) If Application.Match(L, Range("I1:N5:P5:AB5:AL5:AN5:BE5"), 0) < 25 Then Z = Z + 1 End If S = S + L Next MsgBox ("Sum is " & S) End Sub
Den fejler på denne "If Application.Match(L, Range("I1:N5:P5:AB5:AL5:AN5:BE5"), 0) < 25 Then"
Jeg er ikke helt sikker på at jeg forstår de Ranges du har valgt, Men jeg har gættet og lavet denne makro, der skriver summen for de 5 største tal i hver række ind i kolonne BF.
Sub største() Application.Calculation = xlCalculationManual Dim S, Z, X, L, Rk As Long Dim R As Range LastRow = Range("I65536").End(xlUp).Row Z = 0 For Rk = 5 To LastRow ' RK = række der undersøges S = 0 'S=sum For X = 1 To 5 If Z >= 2 Then Set R = Range("P" & Rk & ":BE" & Rk) Else Set R = Range("I" & Rk & ":BE" & Rk) End If L = Application.Large(R, X) If Application.Match(L, Range("I" & Rk & ":BE" & Rk), 0) < 25 Then Z = Z + 1 End If S = S + L Next Cells(Rk, 58) = S Next Application.Calculation = xlCalculationAutomatic End Sub
Jeg har kun lavet en enkelt række, og skjult nogle kolonner. der er kun indtastes data i de celler du kan se. Formlerne skulle være lige til at kopiere.
Jeg har tilrettet formlerne, så den tager hensyn, når der ikke er nok data i de 2 områder.
Jeg forstår ikke: (eller 55) i din sætning Hvis der ikke er 5 tal.. nogle på denne liste kunne kun have 1 eller 4 (eller 55) så laver den fejl. Er de to områder ikke som du har nævnt? Område A:Z og område Y:BH, i alt 60 kolonner?????
Nej men det er en masse resultater, og jeg kan ikke bestemme hvor meget deltagerne laver, så nogle har deltaget så de har 1 resultat (andre kommer til at sprænge rammen for det nuværende ark, og har laver 55 resultater).
Jeg kan umiddelbart ikke gennemkue alle dine formler, hvis du ved at der er problemer med nogle formler så fortæl venligst i hvilke kolonner der er problemer så ser jeg gerne på det.
Med hensyn til problematikken med de store varians i antal resultater, kan du lave skemaet så stort at den kan indeholde det maksimale antal resultater, og derefter skjule et antal kolonner, så der kun er det antal kolonner fremme, som giver en god oversigt og som har plads til de mest forekomne resultater.
Jeg vil rykke skemaet lidt ned på arket for at få et nogle rækker fri i toppen, hvor du eventuelt kunne lave et par makroknapper, som åbner og lukker for de skjulte kolonner.
Hvorfor har du et skema, der er oprettet med datafiltrering?.
Nu har jeg kigget på dit regneark, og med nedenstående makro mener jeg det er lykkedes at skabe det du ønsker. Jeg har lavet makroen sådan at den skriver resultatet ind i kolonne D, for ikke at overskrive det resultat du selv har sat ind. Hvis betingelsen for udregningen ikke er til stede, forbliver cellen tom. Hvis du vil have resultatet i kolonne E i stedet, skal 4. sidste linje ændres til:
Cells(Rk, 5) = S
Makroen:
Sub største() Dim LastRow, Rk, S, Z, X, L As Long Dim R As Range LastRow = ActiveSheet.UsedRange.Rows.Count For Rk = 3 To LastRow Z = 2 S = 0 If Cells(Rk, 15) < 8 Then GoTo A:
On Error GoTo A: For X = 1 To 2 If Application.Count(Range("P" & Rk & ":U" & Rk & ":W" & Rk & ":AH" & Rk)) < X Then GoTo A: Set R = Range("P" & Rk & ":U" & Rk & ":W" & Rk & ":AH" & Rk) L = Application.Large(R, X) S = S + L Z = Z - 1 Next A: For X = 1 To 3 + Z If Application.Count(Range("AJ" & Rk & ":AS" & Rk & ":AU" & Rk & ":BL" & Rk)) < X + Z Then GoTo B: Set R = Range("AJ" & Rk & ":AS" & Rk & ":AU" & Rk & ":BL" & Rk) L = Application.Large(R, X) S = S + L Next Cells(Rk, 4) = S B: Next End Sub
Må indrømme jeg brugte løsningen med størst. Det var den jeg først brugte, og virkede også da jeg fjernede mellem totaler, som jeg egentlig havde.
Jeg ville aldrig kunne lavet absolut ark med alle stævner som det er, da jeg aldrig kan vide hvor mange som der bliver deltaget i.
Men skal have prøvet den med makro. Må øve mit lidt nå sæson er slut.
Synes godt om
Ny brugerNybegynder
Din løsning...
Tilladte BB-code-tags: [b]fed[/b] [i]kursiv[/i] [u]understreget[/u] Web- og emailadresser omdannes automatisk til links. Der sættes "nofollow" på alle links.