Jeg synes det er lidt vanskeligt at regne ud, hvad du egentlig vil frem til. Men jeg har et forslag der bygger på de 2 filer du tidligere har nævnt. Værdierne bliver smidt i et ark med navnet Sheet1 i 1.xls. Sørg for at det er oprettet eller korriger i koden.
Ud fra det du har vist i dine filer, går jeg ud fra du kun søger på én dato ad gangen. Jeg anvender en fixed dato. Det kan du ændre på forskellig vis.
Sub Opslag3()
Dim arr(21, 1) Dim arr2(9) Dim i, o, p As Integer p = 18 ' fixed dato
'------------------------------------ 'indlæs værdier fra 2.xls for given dato (p) Workbooks("2.xls").Activate Sheets("Ark1").Activate
For i = 1 To 21 arr(i - 1, 0) = Cells(p, i).Value arr(i - 1, 1) = Cells(1, i).Value Next i
'------------------------------------
'indlæs opslagsværdier Workbooks("1.xls").Activate Sheets("Ark1").Activate For i = 0 To 9 Cells(i + 4, 1).Select arr2(i) = Cells(i + 4, 1).Value Next i
'------------------------------------
'søg i arr efter arr2-værdier 'når der kommer et hit, skriv værdien fra næste kolonne [= arr(o+1,0)] 'samt kolonnenavnet fra række 1 [arr(o,1)]
Sheets("Sheet1").Activate
For i = 0 To 9 p = i + 14 ' hvor skal der skrives på ark For o = 1 To 21 If arr(o, 0) = arr2(i) Then Cells(p, 6).Value = arr(o + 1, 0) Cells(p, 5).Value = arr(o, 1) Exit For End If Next o Next i
den har nogle af de ting den skal have... Fixed dato er som sådan bare hvilken række den skal gøre det fra... men hvis den laver et opslag på d1/1.xls for at se hvilken række den skal gøre resten ud fra.
næste, hvis der er tomme celler det hvor den søger efter værdien skal den ikke gøre noget og bare gå vider. F.eks hvis A9 er tom og der er et tomt felt på 2.xls retunere den som de andre.
på 2.xls A:A har jeg datoer, og på 1.xls/D1 en dato ud for den dato som er på 1.xls/di skal den finde den dato på 2.xls/A:A for at angive hvilken række Fixed er
'------------------------------------ 'find rækknr for dato Workbooks("2.xls").Activate Sheets("Ark1").Select
Set rng = Range("A:A")
For Each d1 In rng If d1.Text = FindDato Then p = d1.Row Exit For End If Next d1
'------------------------------------ 'indlæs værdier fra 2.xls for dato (p) For i = 1 To 21 arr(i - 1, 0) = Cells(p, i).Value arr(i - 1, 1) = Cells(1, i).Value Next i
'------------------------------------
'indlæs opslagsværdier Workbooks("1.xls").Activate Sheets("Ark1").Activate For i = 0 To 9 Cells(i + 4, 1).Select arr2(i) = Cells(i + 4, 1).Value Next i
'------------------------------------
'søg i arr efter arr2-værdier 'når der kommer et hit, skriv værdien fra næste kolonne [= arr(o+1,0)] 'samt kolonnenavnet fra række 1 [arr(o,1)]
Sheets("Sheet1").Activate
For i = 0 To 9 p = i + 14 ' hvor skal der skrives på ark For o = 1 To 21 If arr(o, 0) = arr2(i) Then Cells(p, 5).Value = arr(o + 1, 0) Cells(p, 4).Value = arr(o, 1) Exit For End If Next o Next i
Run-time error '1004' den laver application-defined or object-defined error '------------------------------------ 'indlæs værdier fra 2.xls for dato (p) For i = 1 To 21 **arr(i - 1, 0) = Cells(p, i).Value** ' på Ln 31
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.