Avatar billede lail Forsker
24. januar 2020 - 14:32 Der er 8 kommentarer

Har et stort ark

faktisk en kuper

Der afhængig af min afgænsninger kan være på 1-1000 linie

Jeg skal hente det der står  fra kolonne C6(ark1) og ned
Over i i andet ark Fra B9(ark2) men kun en gang selv om det står flere steder
arktet fra c6        B9
hop                      hop
hop                      rul
hop                      stå
rul        ---> 
rul
hip
stå

fra hver gang der laves en ny afgrændsning er der  nye data fra B9 og ned som skal over i c6 og ned

Er det noget man kan og nogen der har noget kode de kan låne mig ;O))

LN
Avatar billede jens48 Ekspert
24. januar 2020 - 15:12 #1
Noget i denne stil vil kunne klare det:

Sub Flyt()
Dim LastRow, x, y As Long
y = 9
LastRow = Range("C:C").SpecialCells(xlCellTypeLastCell).Row
For x = 6 To LastRow
If Application.WorksheetFunction.CountIf(Worksheets("Ark2").Range("B:B"), Cells(x, 3)) = 0 Then
Cells(x, 3).Copy Destination:=Worksheets("Ark2").Cells(y, 2)
y = y + 1
End If
Next
End Sub
Avatar billede lail Forsker
25. januar 2020 - 20:50 #2
virker næsten

Men næste gang jeg trykker på knappen er der måske halvt så mange data
Kan man ikke slette kolonne I Ark 2 inden man henter data over

Jeg har prøvet at spille sammen men virker ikke
Avatar billede lail Forsker
25. januar 2020 - 21:00 #3
Ups den kører ikke

Prøvede lige at teste på original data og ikke bare 12 tastede værdier

Den kører endnu og det er 10 min siswn jeg satte den i gang.

Som om den bare kører uendeligt
Avatar billede jens48 Ekspert
26. januar 2020 - 21:25 #4
Jeg har rettet makroen, så den starter med at slette det der står i Ark2 Kolonne B og indsat en instruktion for at stoppe mellemregningerne. Det skulle gøre den meget hurtigere.

Sub Flyt()
Dim LastRow, x, y As Long
Application.Calculation = xlManual
Worksheets("Ark2").Range("B9:B1000").ClearContents
y = 9
LastRow = Range("C:C").SpecialCells(xlCellTypeLastCell).Row
For x = 6 To LastRow
If Application.WorksheetFunction.CountIf(Worksheets("Ark2").Range("B:B"), Cells(x, 3)) = 0 Then
Cells(x, 3).Copy Destination:=Worksheets("Ark2").Cells(y, 2)
y = y + 1
End If
Next
Application.Calculation = xlAutomatic
End Sub
Avatar billede lail Forsker
26. januar 2020 - 22:10 #5
I sidste celle står der altid Hovedtotal
Kan man undgå at få denne med over. Så den stopper ved Hovedtotal

Det data i en kube

LN
Avatar billede jens48 Ekspert
26. januar 2020 - 23:35 #6
Ja, så skal du blot ændre
For x = 6 To LastRow

til
For x = 6 To LastRow - 1
Avatar billede lail Forsker
27. januar 2020 - 09:28 #7
ahh selvfølgelig

Kan man få en lille krølle at den kun skal tage de første 30 tegn i hver celle og flytte over?? 

Og taaak

LN
Avatar billede jens48 Ekspert
27. januar 2020 - 09:53 #8
Prøv med

Sub Flyt()
Dim LastRow, x, y As Long
Dim z As String
Application.Calculation = xlManual
Worksheets("Ark2").Range("B9:B1000").ClearContents
y = 9
LastRow = Range("C:C").SpecialCells(xlCellTypeLastCell).Row
For x = 6 To LastRow - 1
z = Left(Cells(x, 3), 30)
If Application.WorksheetFunction.CountIf(Worksheets("Ark2").Range("B:B"), z) = 0 Then
Worksheets("Ark2").Cells(y, 2) = z
y = y + 1
End If
Next
Application.Calculation = xlAutomatic
End Sub
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

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