Avatar billede PMJonas Nybegynder
24. januar 2014 - 11:43 Der 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")

Range("B1:B2").Value = result

End Sub

Måske der skal stå en anden type før sub.

Nogen der kan hjælpe?
Avatar billede supertekst Ekspert
24. januar 2014 - 14:09 #1
Prøv med  text = Range("A1").text & Range("A2").text
Avatar billede PMJonas Nybegynder
24. januar 2014 - 14:32 #2
Tak for svaret!

Virker desværre ikke.

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
Avatar billede kabbak Professor
24. januar 2014 - 21:50 #3
Hvad med at bruge Lopslag
eller prøv med

Sub Identificer()

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

End Sub
Avatar billede PMJonas Nybegynder
27. januar 2014 - 09:28 #4
Tak for svaret!

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.
Avatar billede PMJonas Nybegynder
27. januar 2014 - 13:58 #5
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.
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