Avatar billede hcichosz Praktikant
23. oktober 2008 - 20:05 Der er 33 kommentarer og
1 løsning

Sammenlign og hent data fra en anden mappe

Hej
Jeg har en mappe der heder nr og en mappe der heder tid.
kolonne A heder Nr i begge Ark
Kolonne G heder Tid i begge Ark

I Ark der heder Nr kolonne A kan der stå 100 101 osv. ned efter
I Ark der heder Nr kolonne G står der ikke noget ( det er data der skal hentes)

I Ark der heder Tid kolonne A kan der stå 100 101 osv.( ned efter men rækkefølgen vilkårlig rækkefølge 001 200 123 osv.)
I Ark der heder Nr kolonne G står der tider 00:22:54 osv.(ned efter)

det jeg så gerne skulle kunne er at kolonne A i begge ark skal være det nummer der står f.eks. a1 står der 100 så skal den finde 100 i kolonne A i mappen tid og kopier tide  over i kolonne G i mappen Nr, men det skal jo være der hvor der står 100 i kolonne A

Er der nogen der gider hjælpe min med det
Håber det kan gøres måske med vba jeg skal gerne selv kunne vælge at køre det, filerne vil være samme sted når det sker.

håber det er forstålig.

Mvh/H Cichosz
Avatar billede kabbak Professor
23. oktober 2008 - 22:04 #1
i Ark Nr celle G1
= lopslag(A1;tid!A1:G1000;7;falsk)
Formater cellen som tid
Avatar billede hcichosz Praktikant
23. oktober 2008 - 22:07 #2
Hej
kig lige på dette billede det forklare hvad jeg mener
http://www.cichosz.dk/Image3.jpg
Det skal så siges at jeg helst selv skal vælge hvornår data skal kopieres over,
Avatar billede kabbak Professor
23. oktober 2008 - 22:08 #3
så lige at det var 2 mapper, så skal stien med
= LOPSLAG(A1;'C:\data\[Tid.xls]Tid'!A1:G1000;7;FALSK)
Avatar billede hcichosz Praktikant
24. oktober 2008 - 16:06 #4
Hvor skal det ligges ind.
der kan være op til 1000 celler der skal hentes fra
Avatar billede kabbak Professor
24. oktober 2008 - 17:03 #5
= LOPSLAG(A1;'C:\data\[Tid.xls]Tid'!$A$1:$G$1000;7;FALSK)
husk at rette stien, inden du gør sådan:

Som en formel i Ark Nr celle G1, træk den så nedad, indtil der ikke er flere data
Avatar billede hcichosz Praktikant
24. oktober 2008 - 19:41 #6
Ok
der er fler filer der heder tid, jeg liger en i ad gangen og henter de data der er i filen, hvad<så vis der i en ny file f.eks a1 100 g1 00:23:34 men i den ny file står der ikke noget i g1 fjerner den så det der står, det skal den nemlig helst ikke.
Avatar billede hcichosz Praktikant
24. oktober 2008 - 19:50 #7
hej
øø i min fiel tid står det ikke sådan at man kan regne med at a2 og g2 passer sammen det er kun i filen Nr de gør det det er der for at nr'et 100 og 101 osv. skal bruges til at finde udaf hvor tiden fra filen tid skal skrives.
og når tiden er overført til filen Nr skal den ikke kune over skrives igen da data hentes fra fler filer der heder tid men bare ad flere gange.

håber jeg har formuleret mig så det kan forståes. ;-)

Mvh/H Cichosz
Avatar billede kabbak Professor
24. oktober 2008 - 22:35 #8
Vil det sige at mappen tid, ikke altid er den samme, men at der kommer en ny, en gang imellem.
I sådan et tilfælde, vil alle data, kun passe, med den sidste, da det er formler, der kikker i mappen.

Så hvis A1 = 100 og tid i G1 er 00:23:34
og så skifter du fil hvor
A1 = 100 og tid i G1 er tomt
så bliver det også tomt i mappen Nr
Avatar billede hcichosz Praktikant
24. oktober 2008 - 23:01 #9
ja så bliver den tom, og den skal gerne gemme de data den henter fra de forkellige mapper tid
mapperne tid kan heller ikke være soteret på samme måde som mappen nr der for er værdierne i A cellerne vigtig
Jeg har kigget på dete i hjælp:
><
VOPSLAG og LOPSLAG indeholder områdeopslaget argument som fortæller funktionen, at den skal finde en identisk post, selvom tabellen ikke er sorteret. Hvis du vil finde en identisk post, skal du indstille argumentet områdeopslag til FALSK.
><
men jeg ved ikke rigtig hvordan jeg får det til at fungere.

Mvh/H Cichosz
Avatar billede kabbak Professor
24. oktober 2008 - 23:27 #10
Så er der kun kode, som kan hjælpe dig.

Las os sige at i mappen Tid
A1 = 100 og tid i G1 er 00:23:34
den henter vi så over
hvis der så i næste fil  er
A1 = 100 og tid i G1 er 23:00:10
skal den så overskrives, eller hvad, hvis G1 er tom gøres intet.
Avatar billede hcichosz Praktikant
24. oktober 2008 - 23:52 #11
ok
vis A1 = 100 er brugt vil A1 aldrig blive 100 igen i mappen tid
men i den ny mappe Tid kan der komme en A1 igen men med et nyt nummer f.eks A1 = 230
så skal den gerne finde hvor der i mappen Nr står 230 f.eks A85 = 230 der skal tiden ind fra mappen Tid G1 og skal ikke kunne ændres igen

der kan så i den næste celle A2 = 124 tid i G2
i min mappe Nr findes f.eks A24 = 124 der skal tiden fra G2 så stå og kan ikke ændres når der hentes en ny mappe tid

Jeg ved ikke om jeg forklare mig godt nok ;-)
Avatar billede hcichosz Praktikant
24. oktober 2008 - 23:54 #12
men vis der er skrevet i G'erne i mappen Nr skal de ikke kunne ændres igen
Avatar billede kabbak Professor
25. oktober 2008 - 09:52 #13
Sæt denne kode i et Modul, ikke i et ark eller ThisWorkbook modul.


Public Sub HentData()
    Dim NYData As Variant, GLData As Variant, I As Long, J As Long, RK As Long
    Application.ScreenUpdating = False
    Workbooks.Open (ThisWorkbook.Path & "\tid.xls")
    RK = Worksheets("Tid").Range("A65536").End(xlUp).Row
    NYData = Worksheets("Tid").Range("A1:G" & RK)
    ActiveWorkbook.Close False
    RK = ThisWorkbook.Worksheets("Nr").Range("A65536").End(xlUp).Row
    GLData = ThisWorkbook.Worksheets("Nr").Range("A1:G" & RK)
    For I = 1 To UBound(GLData)
        If IsEmpty(GLData(I, 7)) Then
            For J = 1 To UBound(NYData)
                If GLData(I, 1) = NYData(J, 1) Then
                    GLData(I, 7) = NYData(I, 7)
                    Exit For
                End If
            Next
        End If
    Next
    ThisWorkbook.Worksheets("Nr").Range("A1:G" & RK) = GLData
    Application.ScreenUpdating = True
End Sub
Avatar billede kabbak Professor
25. oktober 2008 - 09:53 #14
Koden skal i Mappen Nr, tag et kopi af arket Nr, inden du tester.
Avatar billede hcichosz Praktikant
25. oktober 2008 - 23:18 #15
Hej
Jeg har skrevet noget forkert de første celler er A2 og G2
skal  jeg så bare skifte ud der hvor der står A1 til A2
cellerne der kan være i spil er helt op til A1000 er  det ligegyldig
og cellerne skal stadig være formateret til tid ?

Mvh/Henrik C
Avatar billede kabbak Professor
26. oktober 2008 - 01:09 #16
Antal celler er ligegyldig, da koden tæller dem der er i brug.

Ja, ret A1 til A2, den burde gemme i tidsformat, ja
Avatar billede hcichosz Praktikant
26. oktober 2008 - 10:05 #17
og det er i mappen nr at det skal sættes ind
Avatar billede hcichosz Praktikant
26. oktober 2008 - 10:20 #18
Hej
Nu har jeg sat det ind i modulet i nr.xls
prøvet at putte en tid xls i samme mappe
Der sker ikke rigtig noget, hvad akn jeg have gjort forkert
Avatar billede hcichosz Praktikant
26. oktober 2008 - 10:44 #19
Hej
Vis jeg køre den med en knap i formular
får jeg en fejl i denne linje:
RK = ThisWorkbook.Worksheets("Nr").Range("A65536").End(xlUp).Row
Avatar billede kabbak Professor
26. oktober 2008 - 10:46 #20
du skriver "
Public Sub HentData()
    Dim NYData As Variant, GLData As Variant, I As Long, J As Long, RK As Long
    Application.ScreenUpdating = False
    Workbooks.Open (ThisWorkbook.Path & "\tid.xls")
    RK = Worksheets("Tid").Range("A65536").End(xlUp).Row
    NYData = Worksheets("Tid").Range("A1:G" & RK)
    ActiveWorkbook.Close False
    RK = ThisWorkbook.Worksheets("Nr").Range("A65536").End(xlUp).Row
    GLData = ThisWorkbook.Worksheets("Nr").Range("A1:G" & RK)
    For I = 1 To UBound(GLData)
        If IsEmpty(GLData(I, 7)) Then
            For J = 1 To UBound(NYData)
                If GLData(I, 1) = NYData(J, 1) Then
                    GLData(I, 7) = NYData(I, 7)
                    Exit For
                End If
            Next
        End If
    Next
    ThisWorkbook.Worksheets("Nr").Range("A1:G" & RK) = GLData
    Application.ScreenUpdating = True
End Sub
Avatar billede hcichosz Praktikant
26. oktober 2008 - 10:47 #21
Run-time error '9':
subscript out of range
det skriver den først og så markers den linje jeg har skrevet oven over
Avatar billede kabbak Professor
26. oktober 2008 - 10:47 #22
set var en smutter:

du skriver :"I Ark der heder Nr ", har da ikke det ark, det er der den går fejl.
Avatar billede kabbak Professor
26. oktober 2008 - 10:48 #23
Og der skal være data i kolonne A
Avatar billede kabbak Professor
26. oktober 2008 - 10:51 #24
jeg skal i byen nu, kikker igen i aften. ;-))
Avatar billede hcichosz Praktikant
26. oktober 2008 - 11:28 #25
Hej
i mappen nr.xls heder ark1= Start
I mappen tid.xls heder ark1= Tid

det er de ark der er p.t. men der kommer en mere i mappen nr.xls den vil hede udskriv.

der er data i kolone A A1 er der en overskrift Start Nr i kolone G1 er der en overskrift der heder Tid så er der nummer i fra A2 og vidre
Avatar billede kabbak Professor
26. oktober 2008 - 17:50 #26
så skal koden være

Public Sub HentData()
    Dim NYData As Variant, GLData As Variant, I As Long, J As Long, RK As Long
    Application.ScreenUpdating = False
    Workbooks.Open (ThisWorkbook.Path & "\tid.xls")
    RK = Worksheets("Tid").Range("A65536").End(xlUp).Row
    NYData = Worksheets("Tid").Range("A1:G" & RK)
    ActiveWorkbook.Close False
    RK = ThisWorkbook.Worksheets("Start").Range("A65536").End(xlUp).Row
    GLData = ThisWorkbook.Worksheets("Nr").Range("A1:G" & RK)
    For I = 1 To UBound(GLData)
        If IsEmpty(GLData(I, 7)) Then
            For J = 1 To UBound(NYData)
                If GLData(I, 1) = NYData(J, 1) Then
                    GLData(I, 7) = NYData(I, 7)
                    Exit For
                End If
            Next
        End If
    Next
    ThisWorkbook.Worksheets("Start").Range("A1:G" & RK) = GLData
    Application.ScreenUpdating = True
End Sub
Avatar billede kabbak Professor
26. oktober 2008 - 17:52 #27
jeg glemte en rettelse

Public Sub HentData()
    Dim NYData As Variant, GLData As Variant, I As Long, J As Long, RK As Long
    Application.ScreenUpdating = False
    Workbooks.Open (ThisWorkbook.Path & "\tid.xls")
    RK = Worksheets("Tid").Range("A65536").End(xlUp).Row
    NYData = Worksheets("Tid").Range("A1:G" & RK)
    ActiveWorkbook.Close False
    RK = ThisWorkbook.Worksheets("Start").Range("A65536").End(xlUp).Row
    GLData = ThisWorkbook.Worksheets("Start").Range("A1:G" & RK)
    For I = 1 To UBound(GLData)
        If IsEmpty(GLData(I, 7)) Then
            For J = 1 To UBound(NYData)
                If GLData(I, 1) = NYData(J, 1) Then
                    GLData(I, 7) = NYData(I, 7)
                    Exit For
                End If
            Next
        End If
    Next
    ThisWorkbook.Worksheets("Start").Range("A1:G" & RK) = GLData
    Application.ScreenUpdating = True
End Sub
Avatar billede hcichosz Praktikant
26. oktober 2008 - 18:47 #28
Hej
den henter fint data fra tid.xls nu
problemet jeg har nu er, at mine nummer ikke altid står i orden og i mappen tid skrives kun de nummere der er i brug da de læses med en stregkode læser.
det der er i det, er at a2 i den ene mappe ikke altid har samme indhold som i den anden mappe.
i mappen nr kan de godt stå 001 002 003 og op til 1000. men det kan jeg ikke i mappen tid da jeg der henter nummer og tid ind med stregkodeskanneren
og jeg bruger 3 tid mapper i alt ca
Avatar billede kabbak Professor
26. oktober 2008 - 20:22 #29
Koden finder selv den der passer, så rækkefølgen er ligegyldig.
Om der er mange numre i Mappen "Nr" og kun få i "tid", er underordnet, den tjekker alleom de er ens.
Avatar billede hcichosz Praktikant
26. oktober 2008 - 20:58 #30
Hej
Jammen det gør den ikke for mig: prøv lige at se her
http://www.cichosz.dk/Image3.jpg
Avatar billede kabbak Professor
26. oktober 2008 - 21:24 #31
du fangede mig i en fejl

Public Sub HentData()
    Dim NYData As Variant, GLData As Variant, I As Long, J As Long, RK As Long
    Application.ScreenUpdating = False
    Workbooks.Open (ThisWorkbook.Path & "\tid.xls")
    RK = Worksheets("Tid").Range("A65536").End(xlUp).Row
    NYData = Worksheets("Tid").Range("A1:G" & RK)
    ActiveWorkbook.Close False
    RK = ThisWorkbook.Worksheets("Start").Range("A65536").End(xlUp).Row
    GLData = ThisWorkbook.Worksheets("Start").Range("A1:G" & RK)
    For I = 1 To UBound(GLData)
        If IsEmpty(GLData(I, 7)) Then
            For J = 1 To UBound(NYData)
                If GLData(I, 1) = NYData(J, 1) Then
                    GLData(I, 7) = NYData(J, 7)
                    Exit For
                End If
            Next
        End If
    Next
    ThisWorkbook.Worksheets("Start").Range("A1:G" & RK) = GLData
    Application.ScreenUpdating = True
End Sub
Avatar billede kabbak Professor
26. oktober 2008 - 21:25 #32
det var
GLData(I, 7) = NYData(I, 7)
som skulle rettes til
GLData(I, 7) = NYData(J, 7)
Avatar billede hcichosz Praktikant
26. oktober 2008 - 22:26 #33
Hej
Mange mage tak for din hjælp og tålmodighed, det er bare perfekt nu ;-)

Mvh/H Cichosz
Avatar billede kabbak Professor
26. oktober 2008 - 22:34 #34
tak for 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