Avatar billede splokit Nybegynder
30. juni 2006 - 10:04 Der er 10 kommentarer og
1 løsning

Lopslag via VB

Jeg skal bruge et Lopslag i VB...
Jeg har et ark som har mange Lopslag, der er nok 300 X 30 af dem.
det gør at arket bliver meget tungt og laver mange fejl.

Ideen er at få det i vb så den ikke skal bruge så meget tid på at åbne.

Vben skal gøre som lopslaget men bare over flere rækker.

I mappe 1.xls "ark1" i "E3:E76" er hvor formlen Lopslag er, Lopslager ser på værdien i "C3:C76" og søger på værdien i Mappe 2.xls "ark2" "A4:A300" Hvis værdien ud for den værdi den søger på er det skal den retunere "K4:K300" ud for hver enkelte celle, hvis der ikke er værdi skal den ikke gøre noget. VBen skal køre via en knap..
Avatar billede x-lars Novice
30. juni 2006 - 15:26 #1
Private Sub CommandButton1_Click()

Range("E3").Select
ActiveCell.FormulaR1C1 = _
"=IF(ISERROR(VLOOKUP(RC[-2],[Mappe2.xls]Ark2!R4C1:R300C11,COLUMN(C[6]),FALSE)),"""",VLOOKUP(RC[-2],c:\mine_regneark[Mappe2.xls]Ark2!R4C1:R300C11,COLUMN(C[6]),FALSE))"

Range("E3").Select
Selection.Copy

Range("E3:E76").Select
ActiveSheet.Paste

End Sub
Avatar billede x-lars Novice
30. juni 2006 - 15:48 #2
Mindre korrektion:

Private Sub CommandButton1_Click()
Range("E3").Select

ActiveCell.FormulaR1C1 = _
"=IF(ISERROR(VLOOKUP(RC[-2],'C:\Mine_regneark\[Mappe2.xls]Ark2'!R4C1:R300C11,COLUMN(C[6]),FALSE)),"""",VLOOKUP(RC[-2],'C:\Mine_regneark\[Mappe2.xls]Ark2'!R4C1:R300C11,COLUMN(C[6]),FALSE))"

Range("E3").Select
Selection.Copy

Range("E3:E76").Select
ActiveSheet.Paste
Range("E3").Select

End Sub
Avatar billede brynil Nybegynder
01. juli 2006 - 10:01 #3
Kan du bruge noget lignende dette:

Dim i, o, p As Integer
Dim arr(4 To 300, 1) As Variant

Windows("Mappe2.xls").Activate

For i = 4 To 300
    arr(i, 0) = Sheets("Ark2").Cells(i, 1).Value
    arr(i, 1) = Sheets("Ark2").Cells(i, 11).Value
Next i


Windows("Mappe1.xls").Activate

For o = 3 To 76
    For p = 4 To 300
        If Sheets("Ark1").Cells(o, 3).Value = arr(p, 0) Then
            Sheets("Ark1").Cells(o, 5) = arr(p, 1)
            Exit For
        End If
    Next p
Next o
Avatar billede splokit Nybegynder
03. juli 2006 - 08:00 #4
x-lars
Din kode ind skriver en formel og ikke kun værdien som den skal :S vb koden skal gøre som et opslag.
Avatar billede splokit Nybegynder
03. juli 2006 - 08:00 #5
brynil
den laver fejl  out of range
Avatar billede splokit Nybegynder
03. juli 2006 - 08:39 #6
Brynil
jeg har fået den til af virke, men man skal have arkne åbne for at kunne gøre det... kan man lave den om til selv at åbne de ark den skal hente værdier fra!?
Avatar billede brynil Nybegynder
03. juli 2006 - 11:33 #7
Jeg har desværre ikke rigtig tid før i eftermiddag, men prøv at bruge makooptageren til at få koden til at åbne og lukke den pågældende fil. Koden kan du så indsætte omkring:

Windows("Mappe2.xls").Activate

For i = 4 To 300
    arr(i, 0) = Sheets("Ark2").Cells(i, 1).Value
    arr(i, 1) = Sheets("Ark2").Cells(i, 11).Value
Next i
Avatar billede brynil Nybegynder
03. juli 2006 - 15:32 #8
Prøv dette og husk at sætte den korrekte sti til filen:

Dim i, o, p As Integer
Dim arr(4 To 300, 1) As Variant

Application.ScreenUpdating = False
Workbooks.Open Filename:="C:\Mappe2.xls"  ' << korrekt sti indsættes

For i = 4 To 300
    arr(i, 0) = Sheets("Ark2").Cells(i, 1).Value
    arr(i, 1) = Sheets("Ark2").Cells(i, 11).Value
Next i
   
ActiveWorkbook.Close

Windows("Mappe1a.xls").Activate

For o = 3 To 76
    For p = 4 To 300
        If Sheets("Ark1").Cells(o, 3).Value = arr(p, 0) Then
            Sheets("Ark1").Cells(o, 5) = arr(p, 1)
            Exit For
        End If
    Next p
Next o
   
Application.ScreenUpdating = True
Avatar billede brynil Nybegynder
03. juli 2006 - 15:58 #9
Jeg kan se du har et spm. om åbning af fil. Forsøg med dette:

Dim i, o, p As Integer
Dim arr(4 To 300, 1) As Variant

Application.ScreenUpdating = False

Dim WB As Workbook
On Error Resume Next

Set WB = Workbooks("Mappe2.xls")

If WB Is Nothing Then
    Workbooks.Open Filename:="C:\Mappe2.xls"
Else
    Windows("Mappe2.xls").Activate
End If

On Error GoTo 0

For i = 4 To 300
    arr(i, 0) = Sheets("Ark2").Cells(i, 1).Value
    arr(i, 1) = Sheets("Ark2").Cells(i, 11).Value
Next i
   
ActiveWorkbook.Close

Windows("Mappe1.xls").Activate

For o = 3 To 76
    For p = 4 To 300
        If Sheets("Ark1").Cells(o, 3).Value = arr(p, 0) Then
            Sheets("Ark1").Cells(o, 5) = arr(p, 1)
            Exit For
        End If
    Next p
Next o
   
Application.ScreenUpdating = True
Avatar billede splokit Nybegynder
10. juli 2006 - 08:14 #10
brynil kom med et svar
Avatar billede brynil Nybegynder
18. juli 2006 - 18:59 #11
Svar!
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