Avatar billede fly__one Nybegynder
15. april 2003 - 22:59 Der er 18 kommentarer og
1 løsning

Gentage kommando

Hej

jeg har to spørgsmål.
1) Hvis jeg har 500 rækker som en efter en skal kopieres og indsættes i et andet ark 500 gange kan det automatiseres vha. VBA?

2) For hver række kommer der et resultat som skal lagres. Altså i alt skulle jeg have 500 tal lagret i et ark ?
Avatar billede janvogt Praktikant
15. april 2003 - 23:04 #1
Hvordan skal rækkerne indsættes?
Hvis er fuldstændig efter bogen kan du bare optage en makro, hvor du kopierer og indsætter. Så får du også VBA-koden.

Hvad er det for et resultat som skal indsættes?
Kan det evt. også bare kopieres?
Avatar billede teknik Juniormester
16. april 2003 - 00:12 #2
Hvis det er en helt simpel "kopisunktion", så:
I ark 2, hvor kopien skal ende, der skriver du blot et + i cellen, hvor rækken(kolonnen?) skal starte, skifter om til kilde arket oppe under menuen vindue, og klikker på den celle hvis værdi skal kopieres.
Du vil så få et indhold meget lig dette
=+[Mappe1.xls]Ark1!$A$1

Du skal så fjerne de 2 $ tegn, og kan derefter bruge fyldhåndtaget, både lodret og vandret....

Det dur perfekt, hvis rækkerne i kilden ligger ligesom rækkerne skal ligge i "kopiarket"

Desværre, så er det jo sjældent "så enkelt"

Hvis det er mere bøvlet....er det næsten altid, så er det fx. noget a'la at du ønsker "dagens tal" kopieret over i et skema, hvor tallene for alle dage så står opført side om side.

ALtså at data fra samme kilderække, hver dag/hver gang, - ønskes overført til en ny målrække.

Hvis det er den "gade" vi er henne i, så må jeg passe.
Det kan muligvis løses, men ikke af mig.

Som Janvogt siger, så kan man også lave en "gentag srbejdsgang" ved at indspille en såkaldt makro, som er en "se-hvad-jeg-gør,-og-gør-nøjagtigt-ligesådan-når-jeg-klikker-på-en-enkelt-knap" funktion.

Den er ligeledes velegnet, til at gentage 100% ens handlinger.

Hvis du (som jeg formoder) skal have noget, som ændrer sig en anelse, hver gang funktionen køres, så tror jeg at du lettere får et brugbart svar under VB programmering.

mvh :-)
Teknik
Avatar billede janvogt Praktikant
16. april 2003 - 00:21 #3
Vi ka' nu godt klare lidt VBA her under Excel .... :-)
Avatar billede teknik Juniormester
16. april 2003 - 00:30 #4
OK...så mangler "vi" bare at få præciseret problemet
Avatar billede Slettet bruger
16. april 2003 - 00:34 #5
Lige et par uddybende spørgsmål inden "vi" begynder at fumle med en såkaldt makro :-)

- Består rækkerne af formler ?
- Er det et det samme område der skal kopieres hver gang ?
- Er det det samme ark der skal kopieres til hver gang ?
Avatar billede fly__one Nybegynder
16. april 2003 - 14:26 #6
Hej

jeg prøver at præcisere spørgsmålet.

- Jeg har 500 rækker med forskellige tal i ark1
- Jeg skal så indsætte først række 1 i ark 2, der giver et resultat i ark 3.
- Resultatet i ark3 skal lagres.

- Derefter gentager processen sig nu med række 2 kopieres over i ark2, der giver en nyt resultat i ark3, som skal lagres osv. osv.

Håber I kan hjælpe
Avatar billede Slettet bruger
16. april 2003 - 14:42 #7
Prøv denne her:

---------------
Public Sub kopierOmraade()
    ActiveCell.CurrentRegion.Copy Sheets(2).Range("A1")
End Sub
---------------

1. Klik på en celle der ligger inden for det område du gerne vil kopiere.
2. Aktiver makroen.

Ret evt. referencen A1 til noget andet.
Avatar billede fly__one Nybegynder
16. april 2003 - 14:50 #8
Hej igen

jeg har prøvet den og den kopiere fint. Men når første række i ark1 lad os kalde den a1:c1 er kopieret til ark2 a1:c1 skal kommandoen går videre til a2:c2 i ark1 og kopiere det til ark2 a1:c1.

Det skal den gøre f.eks. 500 gange eller 1000 gange
Avatar billede fly__one Nybegynder
16. april 2003 - 14:54 #9
For hver gang der kommer et nyt sæt data til ark2 bliver der beregnet i ark3 som skal lagres. Dvs. a1:c1 ark1 kopieres til ark2 a1:c1, som i ark3 giver x.
Nu a2:c2 ark1 kopieres til ark2 a1:c1, som i ark3 giver x1.
osv.
Avatar billede Slettet bruger
16. april 2003 - 14:56 #10
OK. Dvs. alle rækkerne fra Ark1 skal kopieres over i den samme række (A1:C1)
i Ark2.

Hvad er egentlig formålet med det ? Hvordan bruger du så dataen fra Ark2 i Ark3 ?
Avatar billede Slettet bruger
16. april 2003 - 14:59 #11
Bliver data i Ark3 lagret på en ny række hver gang ?
Er det ikke nemmere bare at lave beregningerne i Ark3 og springe mellemledet (Ark2) over ?
Avatar billede fly__one Nybegynder
16. april 2003 - 15:35 #12
Hej

formålet er jeg vha. rækkerne i ark1 udtrækker forskellige scenarier i ark2. Dvs. række a1:c1 i ark1 giver et sæt data i ark2 som skal lagres i ark3. Række a2:c2 giver et nyt udtræk i ark2 som beregnes og skal lagres i ark3 osv. Dette skal jeg gøre måske 5000-6000 gange.
Ja data i ark3 skal lagres på ny række hver gang da det er disse output der er de interessante.
Iøvrigt tak for hjælpen hidtil
Avatar billede Slettet bruger
16. april 2003 - 15:53 #13
Ok, ny version... :-)

---------

Public Sub kopierOmraade2()

Dim maxRow As Integer

maxRow = ActiveCell.CurrentRegion.Rows.Count

For i = 1 To maxRow
    Range(Cells(i, 1), Cells(i, 3)).Copy Sheets(2).Range("A1:C1")
    '
    ' Her laves beregninger i Ark3
    '
Next i
   
End Sub
--------------

Den forudsætter at dit dataområde i Ark1, starter i række 1 samt ikke har nogen tomme rækker.
Avatar billede fly__one Nybegynder
16. april 2003 - 17:30 #14
Hej
jeg prøver at give en kort version af problemmet som opstillet i regnearket:

Data som ligger i ark 1 som
Ark1
        Række 1:     1    5    10
Række 2:    1    5    20

I ark2 skal VBA koden så kopiere række1 fra ark1 over i ark2 række 1 og dette giver så et udtræk (1 står for 50, 5 står for 100 osv.) f.eks

Ark2
Række 1:        50      100      300

Derefter skal koden i ark3 beregne middelværdien og lagre resultatet.

Ark3
Række 1          ca. 116

Herefter skal række 2 i ark1 gennemgåes:
Ark1
Række 1:    1    5    10
  Række 2:        1      5        20

I ark2 skal VBA koden så kopiere række2 fra ark1 over i ark2 række 1 og dette giver så et nyt udtræk f.eks

Ark2
Række 1:        50      100  550

Derefter skal koden i ark3 beregne middelværdien og lagre resultatet i ark3.

Ark3
Række 1          ca. 116
Række 2          ca. 233

Osv. osv. 5000 gange. Altså skal jeg ende ud med ekslvis. 5000 middelværdier
Avatar billede Slettet bruger
16. april 2003 - 18:26 #15
Prøv med denne her:

-----------------
Public Sub kopierOmraade3()

Dim maxRow As Integer
Dim tempRng As Range

maxRow = ActiveCell.CurrentRegion.Rows.Count
Set tempRng = Sheets(2).Range("A1:C1")

For i = 1 To maxRow
    Range(Cells(i, 1), Cells(i, 3)).Copy tempRng
    'Konvertering af værdier sker her (1 -> 50, 5 -> 100 osv.)
    Sheets(3).Cells(i, 1) = Application.WorksheetFunction.Average(tempRng)
Next i
 
End Sub
------------------

Jeg kan ikke lige gennemskue den konvertering du laver i Ark2, jeg har angivet
hvor den evt. skal foregå.
Avatar billede fly__one Nybegynder
16. april 2003 - 20:23 #16
Hej
Nu nærmerer det sig men da jeg er en knold til vba må jeg have hjælp igen. Her er regnearkene

Ark1    Danner kode for udtræk i ark2                       
1    2    3    4               
1    1    3    4               
1    2    2    2               
                           
Ark2    starter med række1 fra ark1                    1    2    3    4               
                           
Som giver dette udtræk som middelværdien udregnes for og derefter (521-302)/302 osv.
   
5    203    401    599        302       
5    343    681    1019        512    0,695364238   
5    343    681    1019        512    0   
5    34    63    92        48,5    -0,905273438   
5    3    1    -1        2    -0,958762887   

tilsidst skal middelværdien (den vigtige) udregnes for disse relative tal dvs.: ,69+0+-,905+-,9587)/5 = -0,292168021

Så gentag proceduren sig nu række 2 fra ark1                           
Ark1                           
1    2    3    4               
1    1    3    4               
1    2    2    2               
                           
Ark2                           
1    1    3    4               
giver disse udtræk                   
                               
5    5    401    599        252,5       
5    5    681    1019        427,5    0,693069307   
5    5    681    1019        427,5    0   
5    5    63    92        41,25    -0,903508772   
5    5    1    -1        2,5    -0,939393939

og det endelige gns bliver dette som er det interessante
-0,287458351
Ideen er at jeg 5000 gange kan få den sidste middelværdien udregnet 5000 gange for forskellige udtræk

Jeg må vist hellere forhøje mit point til 500
Avatar billede Slettet bruger
16. april 2003 - 20:26 #17
Jeg kigger lige på det...
Max. point i Experten for et spørgsmål er 200 point.
60 point er det anbefalede for "svære" spørgsmål.

Du skulle nødig få ballade med Co-Administratorene  :-)
Avatar billede Slettet bruger
16. april 2003 - 20:28 #18
Det vil hjælpe lidt hvis du havde mulighed for at tilsende mig et eksempel ark.
tc@elvis.dk

Hvis evt. firmapolitik forbyder det, så må jeg klare mig med det du har skrevet indtil videre.
Avatar billede Slettet bruger
16. april 2003 - 20:50 #19
For at kunne få de rigtige værdier over i Ark3, skal jeg sådan set bare vide i hvilket område de "relative tal" ligger (i Ark2), da det er dem (som jeg forstår det) der skal danne grundlag for middelværdien som skal overføres til Ark3.
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