Avatar billede familienriis Nybegynder
28. februar 2008 - 20:33 Der er 7 kommentarer og
1 løsning

hente data fra andet ark

jeg har en masse linier i ark2
A      B          C            D          E
tal    tom      tekst        tekst      tekst

Flere af linierne er tomme.

Jeg kunne godt tænke mig at få hentet de linier der IKKE er tomme over fra ark2 til ark1

Den skal hente fra linie 5 i ark2 og starte med at indsætte linierne i 4 i ark1

Den skal overføre ALLE linier med som ikke er tomme i kolonne A.

Ekstra ønske:
Kolonne A er som nævnt altid tal. Hvis det kan lade sig gøre at lave et sideskift over det første tal der er OVER 5000  og igen lige over det første tal der overstiger 6000 vil det være helt perfekt, men ikke en nødvendighed.
Avatar billede stefanfuglsang Juniormester
28. februar 2008 - 21:11 #1
Hvis du kun skal gøre dette få gange, er det nemmeste i kolonne F at indsætte formlen:
=Række()*er.tal(a1)
Kopier først formlen til alle celler i kolonne F
Kopier dernæst alle celler i F til clipboard og brug "indsæt speciel, værdier" (genbrug kolonne F)
Nu kan du sortere efter kolonne F.
Tomme linjer kommer øverst, resten skulle gerne stå samme sted som før

Alt dette forudsætter at linjen er tom, når cellen i A er tom
Avatar billede familienriis Nybegynder
28. februar 2008 - 21:20 #2
Det skal gøres mange gange og der er forskel på hvor mange linier der ,da det er importerede data fra en txt fil.
Så jeg skal vist bruge lidt vba
Avatar billede stefanfuglsang Juniormester
29. februar 2008 - 08:17 #3
Noget i stil med (ikke afprøvet, så kan indeholde fejl):
Sub hentdata()
    Dim c As Range, i as integer
    i = 4
    For Each c In Application.Intersect(Worksheets("Ark2").UsedRange, Worksheets("Ark2").Range("A:A"))
        If c.Row > 4 Then
            If c <> "" Then
                Worksheets("Ark1").Range("A4").Offset(i, 0) = c.Offset(0, 0)
                Worksheets("Ark1").Range("B4").Offset(i, 0) = c.Offset(0, 1)
                Worksheets("Ark1").Range("C4").Offset(i, 0) = c.Offset(0, 2)
                Worksheets("Ark1").Range("D4").Offset(i, 0) = c.Offset(0, 3)
                Worksheets("Ark1").Range("E4").Offset(i, 0) = c.Offset(0, 4)
                i = i + 1
            End If
        End If
    Next
End Sub

Det med skiftene kan ikke laves på nogen nem måde
Avatar billede familienriis Nybegynder
29. februar 2008 - 17:51 #4
Ved ikke lige hvad der er sket. Jeg lavede et indlæg til dette spørgsmål i formiddags, men det er ikke kommet på. Jeg må have sovet i timen.

Det virker fuldstændig som det skal.
Jeg takker mange gange.

Hvis du har et svar, så har jeg points

Jeg har en lille variation til dette spørgsmål, som jeg har oprettet i et nyt spørgsmål.
Håber at der er nogle der kan hjælpe med det også.

Men endnu engang tak
Avatar billede familienriis Nybegynder
29. februar 2008 - 21:36 #5
det viser sig at der nogle gange ikke kun er tal i kolonne A.
Hvis der ikke er tal skal den ikke importere / flytte linien

JEg har prøvet med:

If c.value > 0 Then

Men det virker ikke.
Hvad skal man ændre det til for at den kun flytter linier over som har TAL i kolonne A
Avatar billede stefanfuglsang Juniormester
01. marts 2008 - 09:47 #6
du kan måske bruge Application.WorksheetFunction.isnumber(c)
Avatar billede familienriis Nybegynder
01. marts 2008 - 10:09 #7
Jeg har forsøgt med nedenstående, men så henter den ingen data overhovedet.

Sub hentdata()
    Dim c As Range, i as integer, taltjek as boolean
    i = 4
    For Each c In Application.Intersect(Worksheets("Ark2").UsedRange, Worksheets("Ark2").Range("A:A"))
        taltjek = Application.WorksheetFunction.IsNumber(MyRange)
        If taltjek = True Then
        If c.Row > 4 Then
            If c <> "" Then
                Worksheets("Ark1").Range("A4").Offset(i, 0) = c.Offset(0, 0)
                Worksheets("Ark1").Range("B4").Offset(i, 0) = c.Offset(0, 1)
                Worksheets("Ark1").Range("C4").Offset(i, 0) = c.Offset(0, 2)
                Worksheets("Ark1").Range("D4").Offset(i, 0) = c.Offset(0, 3)
                Worksheets("Ark1").Range("E4").Offset(i, 0) = c.Offset(0, 4)
                i = i + 1
            End If
        End If
        end if
    Next
End Sub
Avatar billede familienriis Nybegynder
01. marts 2008 - 10:20 #8
Jeg rettede (myrange ) til (c) og så virkede det.
Takker for hjælpen
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