Avatar billede haastrup Novice
11. juli 2011 - 00:43 Der er 5 kommentarer og
1 løsning

Tælle sammen baseret på betingelser

Hejsa Eksperter,

Jeg kører windows 7 med office 10.

I mit regneark vil jeg gerne i en kolonne tælle sammen hvor mange celler som opfylder krav, som kommer fra to andre kolonner i et andet ark i samme fil.

Det handler om hundevæddeløb, og de betingelser der skal opfyldes er:
1: Blev dette løb vundet (W)
2: Blev dette løb tabt (L)
3: Blev dette løb ikke løbet (NB)
4: Hvilken bane blev der løbet på


Hver dag vælges et antal løb, på flere baner, som skal tælles sammen, så vi kan se hvor mange af de forskellige løb på hver bane blev hhv. vundet (W), tabt (L) eller ikke løbet (NB).

I resultat-arket har jeg ud for hver af banerne tre kolonner, en for W, en for L og en for NB. Det er her jeg gerne vil have de individuelle resultater.

Her er et link til resultat-arket
http://www.tjenpengeonline.dk/hunde/resultat-ark.jpg
Her er et link til data-arket
http://www.tjenpengeonline.dk/hunde/data-ark.jpg

Som det kan ses i resultat-arket er der de tre kolonner W, L og NB ud for hver af banerne.

Data til disse kolonner skal nu hentes fra data arket på følgende måde:
1: Hvis odds er 0 blev løbet ikke løbet (NB)
2: Hvis odds er større end nul og plads er 1 blev løbet vundet (W)
3: Hvis odds er større end 0 og plads større end 1 blev løbet tabt (L).

Dette skal gøres for hvert individuelt løb, og regnearket skal så tælle sammen hvor mange sejre, tab, eller løb der ikke blev løbet, skete på hver af de pågældende baner.

Måske er der brug for at tilføje en form for sammentællingskolonne i data.arket for at få det til at virke?

Håber jeg har formået at forklare mig forståeligt.

Glæder mig til at se hvad i kan finde på.

Mange Hilsener
Allan
Avatar billede haastrup Novice
12. juli 2011 - 13:15 #1
Er det helt umuligt at gøre det?
Avatar billede haastrup Novice
12. juli 2011 - 13:49 #2
Ok, jeg skal vist omformulere mit spørgsmål elelr finde en anden løsning
Avatar billede Ialocin Novice
12. juli 2011 - 21:08 #3
Hej Allan

Har rodet lidt med din formulering i spørgsmål 1 ... inden du lukkede det :o)
Dog uden det store held, da det er lidt kryptisk!

Spørgsmål:
Hvordan med data arket ... kan der være x antal løbsrækker, hvorfra der skal trækkes data fra til resultat arket ... eller er det samme antal løbsrækker pr. dag ?

Skal løsningen findes ved hjælp af formler i Excel ? eller må der anvendes macroer/procedurer lavet i VBA ?

Hvis der må anvendes VBA, kan selve data trækningen så evt. klares via en kommandoknap på resultat arket, som ved klik henter data fra løbsrækkerne på data arket ?

Med venlig hilsen, Nicolai
Avatar billede Ialocin Novice
14. juli 2011 - 00:30 #4
Hej Haastrup

Hvis jeg har forstået dig ret ?
Så prøv evt. følgende ... som virker i Win7 + den engelske udgave af Office 2003.
 
I data arket:
Brug kolonne I, som en resultat kolonne, hvori dine betingelser omkring placering og odds klargøres.

skriv koden: =IF(OR(H2="";G2="");"";IF(AND(H2>0;G2=1);"W";IF(AND(H2>0;G2>1);"L";"NB")))  ind i celle I2 ... og træk den ned til din sidste celle i kolonnen.

Hermed har du W, L eller NB ud for hvert enkelt løb.

Herefter opretter du en kommandoknap på resultat arket, som ved et klik skal kalde nedenstående macro/kode, placeret i et modul i din VBA editor.

----------


Sub SøgOgMatch()

Dim Rcounter As Integer 'tælle variabel til rækkerne i kolonne B på resultat arket
Dim Dcounter As Integer 'tælle variabel til rækkerne i kolonne D på data arket
Dim curcell As Range    'det aktuelle celle område på resultat arket
Dim datacell As Range  'det aktuelle celle område på data arket
Dim v As String        'variabel til resultatet




'slå skærmopdatering fra
Application.ScreenUpdating = False


'ryd det samlede resultat område på resultat arket
'så det er klar til næste sammentælling
Worksheets("Resultat").Range("K3:M65536").Clear


    'for hver celle i kolonne B på resultat arket
    'start i celle B3
    For Rcounter = 3 To Sheets("Resultat").Range("B65536").End(xlUp).Row

        'set curcell = den næste celle i kolonnen
        Set curcell = Worksheets("Resultat").Cells(Rcounter, 2)
       
       
                           
                'for hver celle i kolonne D på data arket
                'start i celle D2
                For Dcounter = 2 To Sheets("Data").Range("D65536").End(xlUp).Row

                    'set datacell = den næste celle i kolonnen
                    Set datacell = Worksheets("data").Cells(Dcounter, 4)
                   
                   
                        'hvis det aktuelle track navn på data arket er = det aktuelle track navn på resultat arket
                        If datacell = curcell Then
                       
                            'hent resultatet (W, L eller NB) i celle I på den aktuelle række i data arket
                            v = datacell.Offset(0, 5).Value
                           
                               
                                'tæl den enkelte resultat type op
                                Select Case v
                               
                               
                                    'resultat er W
                                    Case "W"
                                       
                                        'hvis det er første gang W findes ...
                                        'sæt værdien i celle K på den aktuelle række i resultat arket = 1
                                        If curcell.Offset(0, 9).Value = 0 Then
                                       
                                            curcell.Offset(0, 9).Value = 1
                                           
                                        'alle andre gange W findes ...
                                        'tæl værdien i celle K på den aktuelle række i resultat arket op med 1
                                        Else
                                            curcell.Offset(0, 9).Value = curcell.Offset(0, 9).Value + 1
                                        End If
                                   
                                   
                                    'resultat er L
                                    Case "L"
                                       
                                        'hvis det er første gang L findes ...
                                        'sæt værdien i celle L på den aktuelle række i resultat arket = 1
                                        If curcell.Offset(0, 10).Value = 0 Then
                                       
                                            curcell.Offset(0, 10).Value = 1
                                       
                                        'alle andre gange L findes ...
                                        'tæl værdien i celle L på den aktuelle række i resultat arket op med 1
                                        Else
                                            curcell.Offset(0, 10).Value = curcell.Offset(0, 10).Value + 1
                                        End If
                                   
                                                                                               
                                    'resultat er NB
                                    Case "NB"
                                   
                                       
                                        'hvis det er første gang NB findes ...
                                        'sæt værdien i celle M på den aktuelle række i resultat arket = 1
                                        If curcell.Offset(0, 11).Value = 0 Then
                                       
                                            curcell.Offset(0, 11).Value = 1
                                       
                                        'alle andre gange NB findes ...
                                        'tæl værdien i celle M på den aktuelle række i resultat arket op med 1
                                        Else
                                            curcell.Offset(0, 11).Value = curcell.Offset(0, 11).Value + 1
                                        End If
                               
                               
                                End Select
                               
                           
                        End If
               
               
                'næste række i kolonne D på data arket
                Next
                               
                                   
   
   
    'næste række i kolonne B på resultat arket
    Next



'slå skærmopdatering til igen
Application.ScreenUpdating = True



End Sub



------------

Hos mig gør et klik på knappen følgende ...
Den tager første track navn på resultat arket, løber ned gennem de enkelte løb på data arket og tæller W, L og NB op der, hvor track navnet er identisk med første track navn på resultat arket.

Herefter startes der forfra med andet track navn på resultat arket, hvorefter de enkelte løb på data arket løbes igennem ........... osv. - til og med sidste track navn på resultat arket.


Gi´ endelig lyd, hvis ????


Med venlig hilsen, Nicolai
Avatar billede haastrup Novice
14. juli 2011 - 10:45 #5
Ved ikke om jeg fik forklaret spørgsmålet ordentligt i første omgang.

Men, efter at have skrevet selve formuleringen på hvad formlen skal fandt jeg den perfekte formel til dette problem.

Fandt den simpleste løsning af dem alle:countifs er svaret.

Her vælger jeg dataområdet der skal tælles i, og de betingelser der skal kigges efter.

Tak for dit udmærkede forslag.
Avatar billede Ialocin Novice
14. juli 2011 - 15:10 #6
Hej Haastrup

Selv tak for info :o)

Med venlig hilsen, Nicolai
Avatar billede Ny bruger Nybegynder

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.

Loading billede Opret Preview
Kategori
Excel kurser for alle niveauer og behov – find det kursus, der passer til dig

Log ind eller opret profil

Hov!

For at kunne deltage på Computerworld Eksperten skal du være logget ind.

Det er heldigvis nemt at oprette en bruger: Det tager to minutter og du kan vælge at bruge enten e-mail, Facebook eller Google som login.

Du kan også logge ind via nedenstående tjenester