06. juni 2008 - 10:56Der er
6 kommentarer og 1 løsning
fletning af filer
Hej,
jeg har 2 excel filer som jeg skal sætte sammen som en, men er lidt på bar bund i det her emne og ved ikke helt hvordan jeg gør..
Fil 1 har værdier A og B Fil 2 har værdier A og C
jeg skal sætte filerne sammen sådan at jeg får én excel fil med værdierne A, B og C, med kun de A værdier der er i fil 1.
grunden er at i fil 2 er der ~1000 A værdier, som alle ikke er interessante, men i fil 1 har jeg 315 A værdier som er alle jeg skal bruge..
hvordan får jeg lavet en makro metode sådan at jeg læser A-værdien i fil 1, sammenligner med A-værdierne i fil 2 og udtager kun de rækker jeg skal bruge, og gemmer dem i et nyt ark i fil 1?
hvis jeg taler sort, må I endelig sige til og jeg kan uddybe lidt - så vidt jeg kan :-)
det kan desværre ikke lade sig gøre, siden det er konfidentielle informationer i dem..
jeg har skrevet dette indtil videre:
Sub MergeFiles() Dim strTemp(312) As String Dim intI, intJ, intK As Integer intJ = 0 intK = 2 For intI = 4 To 315 strTemp(intJ) = Worksheets(1).Range("B" & intI) Worksheets(2).Range("A" & intK) = strTemp(intJ) intJ = intJ + 1 intK = intK + 1 Next intI End Sub
alle værdierne består af tal, men tallene skal skrives ind som strenge, fordi de er for lange (får bare skrevet dem ind som 2,74E+14 osv..
jeg kan som sagt ikke sende dig filerne, men jeg kan give mere uddybet information, hvis du fortæller mig hvad du ikke forstår / mangler at få at vide.. :-)
stop endelig det du laver, jeg har fundet ud af det.. jeg formaterede bare cellerne, og istedet for flere filer fik jeg bare overført dem til ark istedet for, så det blev nemt nok..
Ok - men nu kan du se hvad det blev til (har først set din kommentar efter færdiggørelsen).
Rem Koden anbringes i Fil1/Ark1 Rem Fil1 & 2 forventes at ligge i samme mappe Rem ========================================= Dim fil2XLS, sti, ark2Ræk Const fil2Navn = "fil2.xls" '<------------- kan tilpasses Sub fletningAfFiler() Application.ScreenUpdating = False sti = hentSti åbnFil2 traverserFil1 lukFil2 Application.ScreenUpdating = True
MsgBox ("Fletning er udført") End Sub Private Function hentSti() hentSti = ActiveWorkbook.Path If Right(hentSti, 1) <> "\" Then hentSti = hentSti + "\" End If End Function Private Sub åbnFil2() Set fil2XLS = CreateObject("Excel.Application") With fil2XLS .Workbooks.Open sti + fil2Navn End With End Sub Private Sub lukFil2() fil2XLS.Application.Quit Set fil2XLS = Nothing End Sub Private Sub traverserFil1() Dim aVærdi, bVærdi, cVærdi ark2Ræk = 1
For ræk = 1 To 65000 ActiveWorkbook.Sheets(1).Activate aVærdi = Cells(ræk, 1) bVærdi = Cells(ræk, 2) If aVærdi = "" Then Exit Sub Else cVærdi = findesVærdi(aVærdi) If cVærdi <> "" Then opbygArk2 aVærdi, bVærdi, cVærdi End If End If Next ræk End Sub Private Function findesVærdi(aVærdi) 'Findes aVærdi i fil2 With fil2XLS .Sheets(1).Activate For ræk = 1 To 65000 If .Cells(ræk, 1) <> "" Then If aVærdi = .Cells(ræk, 1) Then findesVærdi = .Cells(ræk, 3) 'returner C-værdi Exit Function End If Else findesVærdi = "" Exit Function End If Next ræk End With findesVærdi = "" End Function Private Sub opbygArk2(aVærdi, bVærdi, cVærdi) ActiveWorkbook.Sheets(2).Activate With ActiveSheet .Cells(ark2Ræk, 1).Select Selection.NumberFormat = "@" .Cells(ark2Ræk, 2).Select Selection.NumberFormat = "@" .Cells(ark2Ræk, 3).Select Selection.NumberFormat = "@"
ja, undskyld for det sene svar fra mig af, men det blev hurtigt ændret til at alt skal kun udføres i en enkelt fil.. lukker
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.