24. januar 2014 - 11:43Der er
4 kommentarer og 1 løsning
Overførelse af række data hvis krav bliver opfyldt
Hej Jeg er ved at lave en makro der kan overfører en række data fra et ark til et andet ark i regnearket. Overførelsen skal ske for hver enkel række hvis et krav bliver opfyldt.
Lidt mere konkret kunne det være at der på ark 1 stod: Personaletimer Konsulenttimer Kørsel Test Personaletimer I formlen skal den kun overfører de data der hænger sammen med Personaletimer.
Har fået denne makro til at virke men kun på et enkelt felt og ikke en hel række: Sub Identificer()
Dim text As String text = Range("A1").Value
If text = "Personaletimer" Then result = Worksheets("Ark2").Range("I1")
Range("B1").Value = result
End Sub
Virker altså ikke hvis man skriver: Sub Identificer()
Dim text As String text = Range("A1:A2").Value
If text = "Personaletimer" Then result = Worksheets("Ark2").Range("I1:I2")
I lang tid har samarbejdsbranchen fokuseret på at forbedre enhedsfunktioner – bedre kameraer, klarere lyd og smartere software. Men den virkelige forvandling handler ikke om funktioner.
Hvis man ændre text = Range("A1:A2").text til text = Range("A1").text & Range("A2").text sker der ingenting når man trykker på knappen med makroen til knyttet. Heller ikke ved ændring af Then result = Worksheets("Ark2").Range("I1:I2") Men hvis man ændre alle tre kommer der syntax error på ved Range("B1").text & Range("B2").text = result
Dim I As Long, A As Long I = ActiveSheet.UsedRange.Rows.Count For A = 2 To I If Range("A" & A) = "Personaletimer" Then Worksheets("Ark2").Range("I1").Copy Range("B" & A) Next
Har også prøvet med Lopslag, men kunne ikke få skrevet en så præcis formel så den gjorde det rigtige. Skrev følgende: B506: Lopslag(B505;$B$8:$L$500;5;FALSK) B507: Lopslag(B505;$B$9:$L$500;5;FALSK) B508: Lopslag(B505;$B$10:$L$500;5;FALSK) B509: Lopslag(B505;$B$11:$L$500;5;FALSK) Problemet var så her at hvis den kun skulle tage f.eks. personaletimer og det stod i B506 og B509 så skriver den samme data i B507-B509 og altså ikke undlader at skrive i B507 og B508.
Kan du skrive Lopslag mere præcist så man undgår dette problem?
Med hensyn til makroen så ser det ud til at den nu så kun skriver et facit i den nederste celle og ikke i begge hvis begge celler møder kravene. Prøver at rode lidt mere med det.
Det endte med denne makro: Private Sub cmdCopyRange_Click() Dim rng As Range Sheets("DataSheet").Select Set rng = ActiveSheet.Range("A1:C5") rng.AutoFilter rng.AutoFilter Field:=1, Criteria1:="Staff hours" 'filtering the requirement Worksheets("TargetSheet").Cells.ClearContents 'preparing next sheet Dim FiltRng As Range Set FiltRng = rng.SpecialCells(xlCellTypeVisible).EntireRow 'Filter variable gets filtered data FiltRng.Copy Worksheets("TargetSheet").Range("A1") 'Pasting FILTERED to another Sheet Worksheets("TargetSheet").Select Range("A1").Select Set FiltRng = Nothing rng.AutoFilter Set rng = Nothing End Sub
Gives derfor ikke point.
Synes godt om
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.