Avatar billede Michael T J Praktikant
31. marts 2017 - 08:16 Der er 4 kommentarer

Tilføje et udfyldt arks celler som en række i andet ark ved tryk på knap

Jeg har et Ark som jeg bruger til at lave en madplan pr uge.

Dette art er delt op dagsvis med 9 celler pr dag.

så i alt 45 celler der udgør mandag til fredag.

det jeg søger efter er en måde at få denne data ført over i nyt ark der skal fungere som en slags database hvor jeg kan vælge en given række og så bliver denne række med de 45 celler så udfyldt i indtastningsarket, eller jeg indtaster manuelt de 45 celler i indtastningsarket, og når jeg gemmer så bliver det flyttet over i databasearket sorteret efter uge

Håber dette giver mening


/hilsen

Michael
Avatar billede Jan Hansen Ekspert
31. marts 2017 - 09:20 #1
Tror du må igang med en Vba løsning.

1. I dit Data ark skal du have en celle du kan skrive Valgt ugenr. i eller kolonne "A" som en afkrydsnings kolonne hvor der kun må være et kryds.

2. Når du aktiverer indtastningsarket skal vba-en teste om der er kryds et sted i data-kolonne "A", hvis da overføre de 45 celler.

3. enter laver du en knap eller programmerer så data bliver overført når du forlader intastningsarket eller når du har tastet i ugecellen

Alternativt laver du en userform istedet for indtastningsarket

mvh Jan
Avatar billede Daffodil Professor
04. april 2017 - 08:02 #2
Jeg har lavet to makroer der kan hjælpe dig på vej.

Jeg har anvendt ark1 og ark2 i Excel, så hvis de er navngivet skal der rettes til i makroen. I ark1 er selve menuplanen og her er forudsat at ugenummeret for menuplanen er i felt A1 og B1 til F1 er ugedag. I kolonne A2 til A10 er de ni  rækker. Dvs. at felterne B2:F10 er hvor dine 45 linjer/felter er for indtastning.

I den første makro sendes disse 45 felters indhold over i ark2 i række B2 til AU2.

Sub Menu_til_række()

' Kolonner til rækker

Dim a As Integer

Sheets("Ark1").Select

Application.ScreenUpdating = False

Cells(1, 1).Select
x = Selection

Sheets("Ark2").Select

Rows("2:2").Select
Selection.Insert Shift:=xlDown
Cells(2, 2).Value = x
Range("a1:a1").Select
Sheets("Ark1").Select
 
For a = 1 To 45
    If a < 10 Then
        Cells(a + 1, 2).Select
        c = Selection
    Sheets("Ark2").Select
    Cells(2, a + 2).Value = c
    ElseIf a > 9 And a < 19 Then
        Cells(a - 8, 3).Select
        c = Selection
    Sheets("Ark2").Select
    Cells(2, a + 2).Value = c
    ElseIf a > 18 And a < 28 Then
        Cells(a - 17, 4).Select
        c = Selection
    Sheets("Ark2").Select
    Cells(2, a + 2).Value = c
    ElseIf a > 27 And a < 37 Then
        Cells(a - 26, 5).Select
        c = Selection
    Sheets("Ark2").Select
    Cells(2, a + 2).Value = c
    Else
        Cells(a - 35, 6).Select
        c = Selection
    Sheets("Ark2").Select
    Cells(2, a + 2).Value = c
    End If
Sheets("Ark1").Select
Next a

Range("a1:a1").Select

Application.ScreenUpdating = True

End Sub

I ark2 er kolonne A den kolonne hvor du skal sætte et lille "x" for at markere den linje du vil have tilbage til menuplanen i ark1. Der må kun være et x i denne kolonne. Jeg antager at der er overskrifter i den første række i ark2.

Sub Række_til_madplan()

' Her overføres valgt række til madplan

Dim MyA As Integer
Dim a As Integer

Sheets("Ark2").Select
Range("a1:a1").Select
Application.ScreenUpdating = False

WBL = ActiveSheet.UsedRange.Rows.Count
   
    For MyA = 1 To WBL
        If Cells(MyA, 1).Value = "x" Then
        Range(Cells(MyA, "A"), Cells(MyA, "BA")).Select
        Selection.Copy
        Sheets("Ark1").Activate
        Rows("1:1").Select
        Selection.Insert Shift:=xlDown
        End If
    Next MyA

For a = 1 To 45

    If a < 10 Then
        Cells(1, a + 2).Select
        c = Selection
        Cells(a + 2, 2).Value = c
    ElseIf a > 9 And a < 19 Then
        Cells(1, a + 2).Select
        c = Selection
        Cells(a - 7, 3).Value = c
    ElseIf a > 18 And a < 28 Then
        Cells(1, a + 2).Select
        c = Selection
        Cells(a - 16, 4).Value = c
    ElseIf a > 27 And a < 37 Then
        Cells(1, a + 2).Select
        c = Selection
        Cells(a - 25, 5).Value = c
    Else
        Cells(1, a + 2).Select
        c = Selection
        Cells(a - 34, 6).Value = c
    End If

Next a

Rows("1:1").Select
Selection.Delete Shift:=xlUp

Cells(1, 1).Select
Selection.Clear

Range("a1:a1").Select
Application.ScreenUpdating = True

End Sub

Håber forslaget hjælper dig videre.

Håber der er andre der kan optimere udkastet, således jeg også kan lære mere.
04. april 2017 - 14:15 #3
Hej Michael
Det kan være jeg har misforstået dig, men hvis du gemmer opskrifterne efter uge vil de måske være lette at finde nu, fordi du kan huske at i uge 10 fik vi xx. Men på et tidspunkt kan du ikke huske ugenr og hvis andre skal bruge det kender de ikke ugenr. Du vil også risikerer at opskrifterne bliver gemt flere gange pga. hukommelsesfejl. Og hvis du KUN gemmer ugevis vil de i al fald blive gemt flere gange og det vil gå galt når du skal finde dem frem. Du skal gemme hver opskrift for sig.

Den mest simple løsning er at
1) gemme alle opskrifter i 9 kolonner på et ark. Tilføj en kolonne til et ugenr. Brug meget gerne overskrifter.
2) Formater opstillingen som en tabel (Markøren i cellerne og tryk CTRL+L)
3) Når du skal bruge opskrifterne f.eks. i næste uge skriver du 15 i kolonnen ugenr på den pågældende opskrift. Når du har valgt alle opskrifter, filtrere du på kolonne Ugenr. Du har så de 5 opskrifter vist på 5 rækker.
4) Hvis du mangler opskrifter tilføjer du dem nederst i tabellen og skriver 15 i kolonnen ugenr.

Når du skal lave en ugeplan kan du bruge søgning og filtrering til at finde de opskrifter du skal bruge.
(Læs mere om tabeller: https://support.office.com/da-dk/article/Oversigt-over-Excel-tabeller-7ab0bb7d-3a9e-4b56-a3c9-6c94334e492c)


Du kan også vælge en lidt mere knudret vej :-)  - hvis du gerne vil have data delt:
Her syntes jeg at det er bedre at du gemmer opskrifterne under et nr. (Du kan søge efter alt med CTRL+B). Et nr. er mere præcist at slå op efter, end et navn.

1) Opretter din "database-ark" med nr, navn og øvrige oplysninger som en opskrift på hver række
2) Bruger Lopslag til at hente oplysningerne til din ugeplan
3) Og bruger Datavalidering(rullelliste) til at vælge opskriften på din ugeplan.

A) Du skal på "Database-arket": I en kolonne K eller L (en kolonne til højre for alle data) skal du skrive formelen: =TEKST.KOMBINER(" ";SAND;A1;B1) -- hvor A1 er nr. på opskriften og B1 er navnet. - det her er kun fordi man ikke kan huske alle numrene - så skal navnet med, men man kan kun bruge 1 kolonne i rullelisten, derfor skal de lægges sammen.

B) Marker kolonnen og navngiv den i ruden Navn (der hvor cellenavn f.eks. A1 normalt står)

På ugeplans-arket skal du:
C) I første kolonne: Vælg Data --> Datavalidering. Opret en liste ud fra navngivne område ( se også her https://www.computerworld.dk/eksperten/spm/552030)

D) i anden kolonne: (den kan du skjule) opret en formel der læser nummeret (formel =VENSTRE(A1;FIND(" ";A1;1)-1)*1 se f.eks. https://www.computerworld.dk/eksperten/spm/939800)

E) I de øvrige kolonner bruger du VOpslag til at hente data fra DatabaseArket.
Du bruger det nr der står i den anden kolonne, som opslagsværdi.
Hvis du har 5 dage stående på en række skal du oprette en "første" og en "anden" kolonne for hver dag.

F) Med hensyn til at smide opskrifterne retur til "Database-arket" der kommer du nok ikke uden om en makro som "Menu_til_række()" skrevet ovenfor af Daffodil (rettet til så hver opskrift gemmes for sig).

Hvis du ikke vil bruge VBA er du nød til at kopiere manuelt. (marker de 9 felter til opskriften og sætte ind sammen med et tal i første kolonne).

om Lopslag: https://support.office.com/da-dk/article/Funktionen-LOPSLAG-0bbc8083-26fe-4963-8ab8-93a18ad188a1

Håber at du kommer videre.

Med venlig hilsen

Birthe Lauridsen
Avatar billede Mads32 Ekspert
04. april 2017 - 19:44 #4
Hej Michael

Jeg har opstillet et eksempel, som måske er det du efterspørger.

https://www.dropbox.com/s/essfextn55df7y5/tilf%C3%B8j%20r%C3%A6kke%20til%20andet%20ark.xlsm?dl=0
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