Avatar billede johandysatan Novice
19. august 2015 - 13:25 Der er 3 kommentarer og
1 løsning

VBA i Excel til at udvælge og kopierer rækker fra flere forskellige faner til et ark

Hej
Jeg har brug for lidt VBA assistance til Excel.

Jeg har et regneark med 100 faner - navngivet 1 til 100

På hver fane er der en værdi i celle A2, som angiver hvad fanens data  beskriver - Fx: Ford, Toyota, Skoda, seat osv.

Under denne "Beskrivelse" er der en tabel, med en titel og nogle data for Q1-Q5:

Ford

Titel - Q1 - Q2 - Q3 - Q4 - Q5
a        - 15 - 20 - 78 - 91 - 25 
b        - 11 - 30 - 13 - 12 - 80
c        - 16 - 20 - 13 - 62 - 25
d        - 50 - 20 - 26 - 12 - 25
e        - 15 - 20 - 13 - 12 - 25


Nu vil jeg gerne samle al data for "a" i et regneark således:

[b]a[]/b

Titel  - Q1 - Q2 - Q3 - Q4 - Q5
Ford      - 15 - 20 - 78 - 91 - 25 
Toyota    - 11 - 30 - 13 - 12 - 80
Skoda      - 16 - 20 - 13 - 62 - 25
Seat      - 50 - 20 - 26 - 12 - 25


Jeg forestiller mig at Scriptet løber alle faner igennem. Hver gang det finder "a" i kolonne A, kopierer det hele rækken til et nyt ark og herefter overskriver "a" med fx. Ford.
Næste fane medfører en ny række i det nye ark.


Her er lidt pseudokode:




For Each sheet

If 
"a" findes i kolonne A

Then
Copy Række indeholdende "a"
Paste Række indeholdende "a" til nederste tomme Række på Nyt Ark

Copy Celle A2
Paste Celle A2 til første celle i samme førnævnte række

Next sheet




Håber ikke det var for kryptisk forklaret :-)

på for hånd tak

Johan
Avatar billede supertekst Ekspert
21. august 2015 - 13:55 #1
Hej

Vil godt prøve.

Kunne du opbygge en lille model til test og sende denne. F.eks. 3 ark med et antal rækker.
@-adresse under min profil.
Avatar billede supertekst Ekspert
24. august 2015 - 10:08 #2
Const samleArkNavn = "Resultat"                      '<---- evt. justeres
Const ræk1Res = 5
Dim antalArk As Integer, antalRæk As Long, arkNavn As String, rækNr As Long, resultatRæk As Integer, bM As String
Public Sub samlingAfArk()
    Application.ScreenUpdating = False

Rem hent ledige række i ResultatArk
    Sheets(samleArkNavn).Activate
    resultatRæk = ActiveCell.SpecialCells(xlLastCell).Row + 1

    For Each ark In ActiveWorkbook.Sheets
        If InStr(ark.Name, samleArkNavn) = 0 Then
            ark.Activate
            antalRæk = ActiveCell.SpecialCells(xlLastCell).Row
            arkNavn = ark.Name
            bM = ark.Range("A1")
           
            For rækNr = 5 To antalRæk
                With ActiveSheet
                    If .Range("A" & rækNr) = "a" Then
                        .Rows(rækNr & ":" & rækNr).Select
                        Selection.Copy
                        Sheets(samleArkNavn).Select
                        ActiveSheet.Range("A" & resultatRæk).Select
                        ActiveSheet.Paste
                        Application.CutCopyMode = False
                       
                        ActiveSheet.Range("A" & resultatRæk) = bM
                        Exit For
                    End If
                End With
            Next rækNr
           
            resultatRæk = resultatRæk + 1
        End If
    Next
   
    Application.ScreenUpdating = False
End Sub
Avatar billede johandysatan Novice
24. august 2015 - 13:22 #3
Super! Tusind tak for svaret.
Avatar billede supertekst Ekspert
24. august 2015 - 14:00 #4
Selv tak..
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
Kurser inden for grundlæggende programmering

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