Avatar billede mk2300 Nybegynder
25. oktober 2004 - 22:39 Der er 35 kommentarer og
1 løsning

Kopiere data fra en celle til en anden

Hej Eksperter!

Jeg har et problem jeg skal have løst. Jeg har et regneark over medarbejdere og deres opnåede resultat for hver måned, samt en dato for hvornår resultatet er opnået. Jeg har medarbejderne listet som kolloner og første/øverste række er så de forskellige måneder med henholdsvis score og dato vedhæftet i kolonnenavnet.

Mit problem er nu, at det begynder at blive uoverskueligt at tilføje data i arket fordi det er stort. Kan jeg lave et ark, hvor jeg indtaster medarbejderens navn, vælger måned, indtaster dato for resultat og score, og så få excell til at finde medarbejderens række og kopiere dataene til den rigtige plads?

Jeg kan simpelthen ikke finde ud af det, og jeg er nød til at gøre datatilføjelsen mere sikker.

Håber i kan komme med gode råd.
/morten
Avatar billede mugs Novice
25. oktober 2004 - 22:41 #1
Har du set på funktionerne VOPSLAG eller LOPSLAG?
Avatar billede mugs Novice
25. oktober 2004 - 22:44 #2
Når arket er blevet for stort (uoverskueligt), kan det så være fordi dine kolonne- og rækkeoverskrifter ikke er synlige i hele arket. I så fald kan du fryse dem.

Iøvrigt må jeg trække mit forslag vedr. VOP og LOP tilbage. Jeg tror alligevel ikke det er det rigtige til det du søger.
Avatar billede mk2300 Nybegynder
25. oktober 2004 - 22:44 #3
Ja men de kan ikke kopiere data. De kan hente fra en position, men da jeg skal indlægge data for flere medarbejdere hver dag, er jeg nød til at kunne "tømme" formen hver gang jeg har kopieret data så jeg kan tilføje ny data.

Håber det giver menning... Opslags funktionerne viser kun data, de flytter/kopierer det ikke, desværre
Avatar billede mk2300 Nybegynder
25. oktober 2004 - 22:47 #4
Mht størrelsen: Det er primært uoverskueligt fordi der efterhånden er mange medarbejdere og mange måneder i... jeg kører allerede med frosne vinduer. Desuden tror jeg at det vil være bedst på sigt at opfinde en funktion da også andre skal kunne tilføje i arket, og det stoler jeg ikke på som det er nu.:-(
Avatar billede jkrons Professor
25. oktober 2004 - 23:18 #5
Det kan formodentlig godt lade sig gøre at lave en makro der gør arbejdet, men umiddelbart ville jeg mene at det nærmere var en opgave for Access end Excel.
Avatar billede mugs Novice
26. oktober 2004 - 05:25 #6
jkrons > Tænkte lidt over spørgsmålet, da jeg havde afsluttet iaftes. Og jeg er da overbevist om, at Excel kan klare opgaven, men jeg er enig med dig i dit synspunkt, at det er en opgave for Access.
Avatar billede mk2300 Nybegynder
26. oktober 2004 - 08:10 #7
Jeg er helt enig med jer begge, og har lavet et system der kan klare det uden problemer i access. Men vores kære it afd på jobbet vil ikke have access og jeg kan altså ikke bruge det.
Avatar billede mugs Novice
26. oktober 2004 - 09:54 #8
Fyr IT-afd!!
Avatar billede miko67 Nybegynder
26. oktober 2004 - 10:37 #9
prøv engang at beskriv lidt mere præcist i hvilke felter du skriver hvilke oplysninger (bare for en eller to medarbejdere), så kan en eller anden jo sætte sig og lave et "pænt" udkast til dig...
Avatar billede mk2300 Nybegynder
26. oktober 2004 - 10:59 #10
Jamen lad os tage den fra bunden:-)
Jeg har nogle medarbejdere som jeg skal have registreret nogle data for hver måned.
Hver måned er der to datatyper der skal gemmes: dato og score.

Som det er nu har jeg et data skema der ser sådan ud:
  1      2        3        4          5        6        7     
A Navn  okt_dato  okt_score nov_dato  nov_score dec_dato dec_score OSV OSV
B Jens
C Niels
OSV
OSV

Jeg vil så gerne have et ark, hvor jeg kan vælge medarbejder og måned, og så intaste dato og score værdi. Jeg forestiller mig jeg har en "overfør-knap" er kopierer det indtastede til de rigtige celler alt efter navn, måned og type.
Hvis skemaet for oven er helt hen i vejret må i gerne komme med bud på hvordan det kan gøres anderledes.

Mange tak for hjælpen so far!
Avatar billede mk2300 Nybegynder
27. oktober 2004 - 13:10 #11
Der blev stille hva? :0)

Jeg tænkte vi kunne lave det lidt nemmere: Hvis vi dropper månedsseperationen? Der er jo lige meget at regristrere hvilken måned det er registreret i når vi logger datoen. Altså: Når der tilskrives til datafilen skal der altså bare tilføjes i næste ledige celle ud for medarbejderen.

Hjælper det på det?
Avatar billede mk2300 Nybegynder
27. oktober 2004 - 13:15 #12
Dvs mit dataskema kunne se sådan ud:

          1    2    3    4    5    6    7
A Navn  dato  score dato  score osv osv
B Jens
C Niels
OSV
OSV

Udfyldt kunne det se sådan ud:
          1        2    3        4   
A Navn  dato    score dato      score
B Jens  10-10-04    85  10-11-04  80
C Niels 02-10-04    97  20-11-04  90

...f.eks.
Når så jeg skal tilføje data på Jens, skal der A5 indsættes en dato og i A6 en score

Håber det skaber klarhed
Avatar billede mk2300 Nybegynder
27. oktober 2004 - 13:16 #13
Sorry .... det var selvf B5 og B6
Avatar billede jkrons Professor
27. oktober 2004 - 13:16 #14
Skal din indtastning være i et andet ark, eller kan du bruge en formular til indtastningen?
Avatar billede mk2300 Nybegynder
27. oktober 2004 - 13:21 #15
Det må meget gerne være i et andet ark.
Avatar billede jkrons Professor
27. oktober 2004 - 13:41 #16
Jeg har et eksempel, hvor indtastningen sker i en formular, hvis du er interesseret.
Avatar billede mk2300 Nybegynder
27. oktober 2004 - 13:49 #17
Tja det er jeg vel. Kan sådan en formular egentlig ikke integreres i et ark vha kontrolelementer?

Kan du sende eksemplet til min mail? morten AT barnumit.dk
Avatar billede jkrons Professor
27. oktober 2004 - 13:49 #18
Her er en løsning, som virker uden formular. Den er baseret på, at du i cellerne A2, B2, og C2 indtaster henholdsvis Navn, Dato og Score.

Selve registreringen sker så længere nede i arket, så du kan se forskel på indtastningsceller (giv dem fx en anden farve) og registreringsceller.

Lav så en kommandoknap i regnearket (kontrolelementkanp, ikke fomularknap). Indsæt denne kode på knappen:

Dim nv As String
    Dim dt As String
    Dim sc As String
   
    nv = Range("a2").Value
    dt = Range("b2").Value
    sc = Range("c2").Value

    Cells.Find(What:=nv, After:=ActiveCell, LookIn:=xlFormulas, LookAt _
        :=xlPart, SearchOrder:=xlByRows, SearchDirection:=xlNext, MatchCase:= _
        False, SearchFormat:=False).Activate
       
    If IsEmpty(ActiveCell.Offset(0, 1)) Then
        ActiveCell.Offset(0, 1).Value = CDate(dt)
        ActiveCell.Offset(0, 2).Value = CSng(sc)
    Else
        Selection.End(xlToRight).Offset(0, 1).Value = CDate(dt)
        Selection.End(xlToRight).Offset(0, 1).Value = CSng(sc)
    End If
   
    Range("a2").Value = ""
    Range("b2").Value = ""
    Range("c2").Value = ""

Koden forudsætter at navnene allerede er skrevet i A-kolonnen og at der ikke er "huller" i rækkerne.
Avatar billede jkrons Professor
27. oktober 2004 - 13:54 #19
Jeg sender dig et eksempel på begge løsninger. Når du åbner arket, popper formularen automatisk frem. Så kan du afprøve den. Når du er færdig lukker du den bare. Derefter kan du afprøve den anden løsning, hvor du taster i de tre "gule" celler og klikker på knappen i arket.
Avatar billede mk2300 Nybegynder
27. oktober 2004 - 13:54 #20
Tak!! Kan du også lave det så den gemmer det i andet ark, f.eks. "data"?
Avatar billede jkrons Professor
27. oktober 2004 - 13:55 #21
Sendt.
Avatar billede jkrons Professor
27. oktober 2004 - 14:01 #22
Ikke lige pt, men jeg skal arbejde med det :-)
Avatar billede mk2300 Nybegynder
27. oktober 2004 - 14:39 #23
Hmmm...

Når jeg prøver løsningen uden formular får jeg en fejl;

Den skriver Compile error: Named argument not found
... og følgende tekst er markeret i debuggeren:
Cells.Find(What:=nv, After:=ActiveCell, LookIn:=xlFormulas, LookAt _
        :=xlPart, SearchOrder:=xlByRows, SearchDirection:=xlNext, MatchCase:= _
        False,[[MARKERET SearchFormat:=]]False).Activate

Kan du løse det?
Avatar billede jkrons Professor
27. oktober 2004 - 14:40 #24
Ret koden på knappen til:

Private Sub CommandButton1_Click()
    Dim nv As String
    Dim dt As String
    Dim sc As String
   
    Application.ScreenUpdating = False
   
    nv = Range("a2").Value
    dt = Range("b2").Value
    sc = Range("c2").Value
   
    Worksheets("data").Select


    On Error GoTo ErrMsg

    Sheets("data").Cells.Find(What:=nv, After:=ActiveCell, LookIn:=xlFormulas, LookAt _
        :=xlPart, SearchOrder:=xlByRows, SearchDirection:=xlNext, MatchCase:= _
        False, SearchFormat:=False).Activate
       
    If IsEmpty(ActiveCell.Offset(0, 1)) Then
        ActiveCell.Offset(0, 1).Value = CDate(dt)
        ActiveCell.Offset(0, 2).Value = CSng(sc)
    Else
        Selection.End(xlToRight).Offset(0, 1).Value = CDate(dt)
        Selection.End(xlToRight).Offset(0, 1).Value = CSng(sc)
    End If
   
    Range("a2").Value = ""
    Range("b2").Value = ""
    Range("c2").Value = ""
   
    Sheets("Indtast").Activate
   
    Application.ScreenUpdating = True
   
    Exit Sub
   
ErrMsg:
    If Err.Number = 91 Then
        MsgBox "Den pågældende findes ikke i arket med data"
    Else
        MsgBox Err.Description
    End If
   
End Sub

Du taster i et ark, der hedder Indtast, og dine data ligger i et ark, der hedder Data. Alle navnene skal stadig eksistere i data inden du kan bruge knappen i Indtast. Hvis du taster et navn, der ikek eksiterer vises en meddelelsesboks, og derefter skiftes til data arket, så du kan oprette den pågældende. Så kan du skifte tilbage til indtastningsarket og klikke på knappen igen.
Avatar billede jkrons Professor
27. oktober 2004 - 14:42 #25
Jeg håver den seneste version kører uden problemer.
Avatar billede jkrons Professor
27. oktober 2004 - 14:43 #26
PS! Hvilken version af Excel kører du med?
Avatar billede mk2300 Nybegynder
27. oktober 2004 - 14:46 #27
Kanon! Bort set fra at den stadig giver mig den fejl, nu blot i en fejlbox. Jeg tilføjer så navnet og prøver igen, men det hjælper ikke....
Avatar billede mk2300 Nybegynder
27. oktober 2004 - 14:48 #28
Det er version 2000
Avatar billede jkrons Professor
27. oktober 2004 - 14:50 #29
Prøv at rette

Sheets("data").Cells.Find(What:=nv, After:=ActiveCell, LookIn:=xlFormulas, LookAt _
        :=xlPart, SearchOrder:=xlByRows, SearchDirection:=xlNext, MatchCase:= _
        False, SearchFormat:=False).Activate


til

  Sheets("data").Cells.Find(What:=nv, After:=ActiveCell, LookIn:=xlFormulas, LookAt _
        :=xlPart, SearchOrder:=xlByRows, SearchDirection:=xlNext, MatchCase:= _
        False).Activate
Avatar billede jkrons Professor
27. oktober 2004 - 14:51 #30
Jeg arbejder med 2002, og det er muligt at SearchFormat ikke eksisterede i 2000. Det kan jeg ikke lige huske.
Avatar billede mk2300 Nybegynder
27. oktober 2004 - 14:55 #31
Sådan så kopierer den løs.... bre en lille ting til: Hvis jeg udfylder tekst i stedet for tal i score så får jeg type mismatch. Har du lavet en datavalidering jeg kan fjerne? Jeg vil gerne kunne skrive en kort tekst ind i mellem....
Avatar billede mk2300 Nybegynder
27. oktober 2004 - 14:55 #32
Jeg smider lige nogle point efter dig om 2 minutter.
Avatar billede jkrons Professor
27. oktober 2004 - 14:58 #33
Fint. så skal du bare rette

ActiveCell.Offset(0, 2).Value = CSng(sc)
og
Selection.End(xlToRight).Offset(0, 1).Value = CSng(sc)

til

ActiveCell.Offset(0, 2).Value = sc
og
Selection.End(xlToRight).Offset(0, 1).Value = sc
Avatar billede mk2300 Nybegynder
27. oktober 2004 - 15:16 #34
Hold kæft hvor er du sej mester!! Det virker perfekt!
Avatar billede mk2300 Nybegynder
27. oktober 2004 - 15:23 #35
Så røg der point til jkros!
Avatar billede jkrons Professor
27. oktober 2004 - 16:23 #36
Tak for point.
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