07. oktober 2016 - 10:34Der er
5 kommentarer og 1 løsning
Opret ark og kopier data over afhængig af værdi i celle
Hej Jeg har en tilbagevende opgave, som jeg tænker at VBA-kodning kan gøre lettere for mig. Jeg er dog stadig meget ny til det og kan ikke finde frem til hvordan det kan gøres, så jeg håber nogle kan hjælpe mig.
Jeg har et regneark (udfyldt kolonne A - AI), hvor en masse personer er listet (starter i række 2 pga. overskrifter) sorteret i hvilken afdeling de tilhører (Kolonne A).
Jeg har tit brug for at lave et ark for hver afdeling, hvor de fulde rækker for afdelingen er kopieret over. Altså, skal jeg ende ud med et ark for fx: Økonomi, Administration, HR osv. hvor alt det der står i en række for en person i den afdeling, er kopieret med over.
Jeg kunne godt tænke mig, at ved et tryk på en knap, så opretter den et ark for hver afdeling, hvor de personer der er i afdelingen ligger i. Er det ønsketænkning?
Håber der er nogle der har tid og lyst til at hjælpe mig.
Det lyder rigtig godt - jeg kan godt sende dig en model af arket. Hvordan kan jeg vedhæfte det?
Ajourføring - det skal gerne være sådan at hvis jeg laver tilføjelser (fx nye personer eller afdelinger), så kan jeg opdatere og så kommer de over i det rette ark (oprettes nyt ark).
Og så er planen, at jeg vil bruge koden til de forskellige ark, som kommer i løbet af året, hvor jeg efterfølgende skal dele det ud i ark pr. afdeling.
Det er bestemt ikke ønsketænkning. Min første tanke er dog at du ikke nødvendigvis behøver en makro - faktisk kan du blot bruge pivot. Hvis du laver en pivot af din data med afdeling som filter - så kan man bede om at hver filter-mulighed. På dansk hedder den rapportfiltersider og ligger under indstillinger.
Det er lige gået op for mig, at jeg har skrevet forkert. Det jeg har brug for, er at den kan lave en ny fil pr. afdeling, ikke ark. Jeg har brug for at kunne gemme hver afdeling for sig. Kan det stadig lade sig gøre?
VBA-koden: Rem Version 1 - 12.10.1016 Rem ====================== Dim oversigt As Object
Dim ræk As Integer, antalRækker As Integer Dim afdnr As Integer, fraRæk As Integer, tilRæk As Integer Dim overskrift Public Sub fordelPrAfdeling() Set oversigt = ActiveWorkbook Set overskrift = Range("A1:AI1")
For ræk = 3 To antalRækker If Range("A" & ræk) <> afdnr Then tilRæk = ræk - 1 opretAfdeling fraRæk, tilRæk, afdnr fraRæk = ræk afdnr = Range("A" & ræk) Rem juster fra & til End If Next ræk Rem opdater sidste afd tilRæk = ræk - 1
For ræk = fraRæk To tilRæk opretAfdeling fraRæk, tilRæk, afdnr Exit For Next ræk
MsgBox "Fordeling af afdelinger er udført" End Sub Private Sub opretAfdeling(fraRæk, tilRæk, afdnr) Dim nyWBnavn As String Application.ScreenUpdating = False Application.DisplayAlerts = False
Rem Overskrift Range("A1:AI1").Select Selection.Copy Workbooks.Add nyWBnavn = ActiveWorkbook.Name
Rem Gem afd.filen ChDir "C:\Users\peter\Desktop\Eksperten\Sara_1013131" ActiveWorkbook.SaveAs Filename:= _ "C:\Users\peter\Desktop\Eksperten\Sara_1013131\Afd_" & afdnr & ".xlsx", FileFormat:= _ xlOpenXMLWorkbook, CreateBackup:=False ActiveWindow.Close End Sub
Synes godt om
1 synes godt om dette
Ny brugerNybegynder
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.