Avatar billede latino_boy Nybegynder
19. december 2011 - 22:55 Der er 11 kommentarer og
1 løsning

Samling af data i Excel

Hej alle.

Jeg har et problem i Excel, som jeg håber i kan hjælpe med at løse.

Jeg har et excel ark, hvor jeg dagligt skal ind og indtaste data.

Fx har jeg i celle B2 tidspunktet, hvor jeg indtaster dataen fx 14:00

mit ark generer så nogle data ud fra tidspunktet.

Jeg vil nu gerne indlæse data igen fx kl 15:30 dette skriver jeg i celle B2

Mit spørgsmål er nu. Kan det lade sig gøre at lave en liste, der samler de data jeg har genereret på de foskellige tidspunkter?


Således jeg fx  i celle D1 får, tidspunktet der er tastet i celle B2,og når jeg igen indtaster data så får det nye tidspunkt i celle D2?
Avatar billede Ialocin Novice
19. december 2011 - 23:25 #1
Hej latino_boy

Kan du bruge følgende kode, som ligger under det pågældende arks Change_hændelse ?


Private Sub Worksheet_Change(ByVal Target As Range)
Dim r As Integer

    'hvis den aktive celle er B2 og den ikke er forskellig fra tom
    If Target.Address = "$B$2" And Target.Value <> "" Then

        'tildel variablen r, rækkenummeret på sidste række indeholdende data
        r = ActiveSheet.Range("D65536").End(xlUp).Row
   
       
        'hvis celle D1 er tom ~ første gang der logges en værdi
        If ActiveSheet.Range("D1").Value = "" Then
       
            'sæt celle D1 = værdien fra celle B2
            ActiveSheet.Range("D1").Value = Target.Value
           
            'tøm celle B"
            Target.Value = ""
       
        Else
       
            'sæt næste ledige celle i kolonne D = værdien fra celle B2
            ActiveSheet.Range("D" & r + 1).Value = Target.Value
           
            'tøm celle B2
            Target.Value = ""
       
        End If


    End If
   
End Sub


Med venlig hilsen, Nicolai
Avatar billede Ialocin Novice
19. december 2011 - 23:30 #2
Hej Igen

Det koden gør, er:

Hver gang du taster noget i celle B2 og forlader cellen, så overføres værdien til celle D1 og fortløbende nedefter, hvorefter celle B2 tømmes.

Ønsker du ikke, at celle B2 skal tømmes, så kan linierne

'tøm celle B2
Target.Value = ""

blot slettes!

Med venlig hilsen, Nicolai
Avatar billede latino_boy Nybegynder
23. december 2011 - 00:02 #3
Hej Nikolai.

Tak for det fine svar, og undskyld at jeg reagerer så sent på dit svar. Jeg har kopieret koden ind, og det virker helt efter hensigten.


Jeg vil gerne kopier koden, og gøre den gældende for andre celler, som jeg kan ændre i, hvor den så flytter indholdet over i nogle andre celler, men jeg kan ikke bare kopiere koden, så får jeg en fejl.
Avatar billede latino_boy Nybegynder
23. december 2011 - 00:02 #4
Hej Nikolai.

Tak for det fine svar, og undskyld at jeg reagerer så sent på dit svar. Jeg har kopieret koden ind, og det virker helt efter hensigten.


Jeg vil gerne kopier koden, og gøre den gældende for andre celler, som jeg kan ændre i, hvor den så flytter indholdet over i nogle andre celler, men jeg kan ikke bare kopiere koden, så får jeg en fejl.
Avatar billede Ialocin Novice
23. december 2011 - 00:12 #5
Hej latino_boy

Hvilke celler drejer det sig om ??

Med venlig hilsen, Nicolai
Avatar billede Ialocin Novice
23. december 2011 - 01:31 #6
Hej latino_boy

For eksemplets skyld har jeg lavet den samme handling på en anden celle ... så kan du prøve at sammenligne de to koder for at se, hvor der skal ændres, hvis koden skal virke på andre celler.

Hvis du taster ind i celle G2, vil værdien blive logget i kolonne I.

Koden markeret med sort herunder er den der virker på kolonne G og I ... og den er blot skrevet i forlængelse af den første vi lavede.

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


Private Sub Worksheet_Change(ByVal Target As Range)
Dim r As Integer
Dim c As Integer

    'hvis den aktive celle er B2 og den ikke er forskellig fra tom
    If Target.Address = "$B$2" And Target.Value <> "" Then

        'tildel variablen r, rækkenummeret på sidste række indeholdende data
        r = ActiveSheet.Range("D65536").End(xlUp).Row
   
       
        'hvis celle D1 er tom ~ første gang der logges en værdi
        If ActiveSheet.Range("D1").Value = "" Then
       
            'sæt celle D1 = værdien fra celle B2
            ActiveSheet.Range("D1").Value = Target.Value
           
            'tøm celle B"
            Target.Value = ""
       
        Else
       
            'sæt næste ledige celle i kolonne D = værdien fra celle B2
            ActiveSheet.Range("D" & r + 1).Value = Target.Value
           
            'tøm celle B2
            Target.Value = ""
       
        End If


    End If
   
 
   
    'hvis den aktive celle er G2 og den ikke er forskellig fra tom
    If Target.Address = "$G$2" And Target.Value <> "" Then

        'tildel variablen c, rækkenummeret på sidste række indeholdende data
        c = ActiveSheet.Range("I65536").End(xlUp).Row
   
       
        'hvis celle I1 er tom ~ første gang der logges en værdi
        If ActiveSheet.Range("I1").Value = "" Then
       
            'sæt celle I1 = værdien fra celle G2
            ActiveSheet.Range("I1").Value = Target.Value
           
            'tøm celle G"
            Target.Value = ""
       
        Else
       
            'sæt næste ledige celle i kolonne I = værdien fra celle G2
            ActiveSheet.Range("I" & c + 1).Value = Target.Value
           
            'tøm celle G2
            Target.Value = ""
       
        End If


    End If

End Sub


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


Med venlig hilsen, Nicolai
Avatar billede latino_boy Nybegynder
23. december 2011 - 16:57 #7
Hej Nikolai.

Jeg er glad for din løsning på mit problem. Jeg har ændret i koden, så cellerne passer til det ark jeg sidder med.

Spørgsmålet, er nu om koden kan laves således at den gælder på mere end én celle? altså så input i fx B2 og C2 flyttes i D1 og E1, og nedefter
Avatar billede latino_boy Nybegynder
23. december 2011 - 16:59 #8
Jerg har fx en Celle, der ændres hvergang jeg ændrer i B2 eksempelvis, kan data fra denne celle  ligeledes flyttes til fx F1 og nedefter ( dette er ikke en celle jeg taster i men, blot én der er resultatet af inputet i celle B2 ?
Avatar billede Ialocin Novice
23. december 2011 - 20:19 #9
Hej latino_boy

Mange tak for point :o)

Det du ønsker kan helt sikkert laves ...

Hvilken celle drejer detcsig om ?
Jeg kigger på det senere i aften, når jeg kommer hjem til pc'en.

Med venlig hilsen, Nicolai
Avatar billede latino_boy Nybegynder
23. december 2011 - 23:33 #10
Hej igen.

Det jeg ønsker er at jeg i celle H6 indtaster tidspunktet, hvor jeg kører en status i arket. Værdien af celle H6 skal flyttes til Celle L12. Når jeg senere på dagen gør status igen skal værdien i B2 flyttes til L13, ligesom den første kode du lavede.

Jeg ønsker samme princip for indholder i celle H8 og H10 som er celler jeg taster i hver gang jeg gør status. Værdien af celle H8 flyttes til M12 og værdien af celle H10 flyttes til N12.

hver gang jeg indtaster data i H6 får jeg et output i cellerne H 18 og H20, disse må gerne flyttes til cellerne O12 og P12, det samme princip må gerne gælde her, med at hvergang tallet ændres flyttes det til de respektive celler, og hvergang under de forrige tal således anden gang der gøres status flyttes disse til O13 og P13.

Håber det giver mening :)


og tusind tak, fordi du vil se på det.

Mvh


Alex
Avatar billede Ialocin Novice
24. december 2011 - 00:08 #11
Hej Alex

For overblikkets skyld ... har du så mulighed for at poste dit ark / eller en skrabet udgave af dit ark ??

Med venlig hilsen, Nicolai
Avatar billede latino_boy Nybegynder
24. december 2011 - 00:15 #12
Jeg kan fint sende det til din mail :)
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
Vi har et stort udvalg af Excel kurser. Find lige det kursus der passer dig lige her.

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