Avatar billede torlar Nybegynder
14. juli 2010 - 08:53 Der er 5 kommentarer og
1 løsning

Opslag med Excel

Så prøver jeg lige igen. Nu med point!

Jeg har et regneark med 3 ark til at styre vores containere.

Ark 1 er en oversigt hvor jeg ved at indtaste et containernr. vil hente forskellige data fra de to andre ark.

Ark 2 indeholder info om containerens størrelse, alder, mv. Disse data er ikke noget problem med Lopslag.

Ark 3 indeholder info om hvad der er sket med de forskellige containere på en given dato.

Arket ser sådan ud:

Containernr. Dato      Aktivitet
06V-001      09-07-10  Låg udskiftet
10V-002      10-07-10  Stillet ud til kunde
06V-001      13-07-10  Sendt til maler
osv.

Mit problem er at hente alle de data (Dato/Aktivitet) som vedr. det angivne containernr.

Kan man bruge en udvidet Lopslag og i så fald hvordan?

Mvh.
Torben
Avatar billede supertekst Ekspert
14. juli 2010 - 11:03 #1
Hej igen

Der skal nok lidt VBA til. Hvor mange rækker er der på ark3?

Der er jo også en mulighed ved at anvende filter på Ark3!
Avatar billede torlar Nybegynder
14. juli 2010 - 13:55 #2
Hej

Ja det er nok VBA der skal til. Det er jeg bare ikke så rutineret i.

Der kan være mange rækker på ark 3.

Jeg har ændret det lidt. Ark 1 bruges til indtastning, hvorefter oplysningerne "gemmes" på ark 3 og 4 (ligesom en tabel) via en macro. (Access har vi ikke i firmaet)

Ark 2 skal fungere som et stamkort, som viser de data fra ark 3 og 4 som vedrører det containernr jeg vælger(fra liste)på ark 2.

Som nævnt har jeg brugt Lopslag til at hente containertype, størrelse m.v. Det virker!

Sidste udfordring er så at der kan være 3,5,10 eller flere rækker fra det sidst ark med dato og aktiviteter.

Hvordan skal jeg kode det?
Avatar billede Slettet bruger
14. juli 2010 - 14:11 #3
Hvis du skulle foretrække en formelløsning:

Med dine data i Ark3!A1:C4, opslagsværdi i Ark1!A1 så indtast et eller andet sted i Ark1 følgende matriksformler:

For dato:
=INDEKS(Ark3!$A$2:$C$4;MINDSTE(HVIS(Ark3!$A$2:$A$4=Ark1!$A$1;RÆKKE(Ark3!$A$1:$A$3));RÆKKE(1:1));2)

For aktivitet:
=INDEKS(Ark3!$A$2:$C$4;MINDSTE(HVIS(Ark3!$A$2:$A$4=Ark1!$A$1;RÆKKE(Ark3!$A$1:$A$3));RÆKKE(1:1));3)

Formlerne returnerer #NUM! når der ikke er flere udgaver. Det er muligt at fjerne dette #NUM!, men det bliver formlerne ikke mindre komplicerede af.
Avatar billede supertekst Ekspert
14. juli 2010 - 23:21 #4
Rem Version 1
Rem ark1: containernr indtastes i A2
Rem -  : kolonne B2-xx: dato / C2-xx aktivitet
Rem ark2: liste over alle containerdata
Rem VBVA-koden er placeret under ark1
Rem Model kan tilsendes, hvis du sender en mail - @-adr. under profil.

Const arkNavnVisning = "ark1"                          'justeres
Dim arkH As Worksheet
Dim arkV As Worksheet

Const arkNavnChistorik = "ark2"                        'justeres
Const rækStartChistorik = 2                            'justeres

Dim antalRæk As Long, rækVis As Long
Sub Worksheet_Change(ByVal Target As Range)
    Application.ScreenUpdating = False
   
    If Target.Address = "$A$2" Then
        Set arkV = ActiveWorkbook.Sheets(arkNavnVisning)
        Set arkH = ActiveWorkbook.Sheets(arkNavnChistorik)
       
        arkH.Activate
        antalRæk = Selection.SpecialCells(xlLastCell).Row
       
        arkV.Activate
   
        If Target <> "" Then
            rækVis = 2
            visContainerHistorik Target
        End If
    Else
        Exit Sub
    End If
   
    Application.ScreenUpdating = True
    arkV.Columns.AutoFit
End Sub
Sub visContainerHistorik(cNr)
Dim ræk As Long, dato As Date
   
    For ræk = rækStartChistorik To antalRæk
        If LCase(arkH.Cells(ræk, 1)) = LCase(cNr) Then
            dato = arkH.Cells(ræk, 2)
            arkV.Cells(rækVis, 2) = dato
            arkV.Cells(rækVis, 3) = arkH.Cells(ræk, 3)
           
            rækVis = rækVis + 1
        End If
    Next ræk
End Sub
Avatar billede torlar Nybegynder
16. juli 2010 - 10:51 #5
Kæmpe succes!

Det virker helt efter hensigten - tak supertekst

Nu mangler jeg bare at den sletter linier fra foregående "visning"

Kan jeg bruge: Worksheets("Ark1").Range("B1:C99").ClearContents

og hvor i VBA koden skal jeg sætte det ind?

Kan du svare på det også eller er det nye point?
Avatar billede supertekst Ekspert
16. juli 2010 - 11:25 #6
Glæder mig...

NB:
Jeg lægger et svar, som du blot skal accpeterer - "dit eget svar afviser du" - det er kun forslagsstilleren der afgiver kommentarer/svar" - spørgeren kommentarer, afviser eller accepterer


Sletning af gl. indhold - kunne være som markeret - det er med i købet..

Sub Worksheet_Change(ByVal Target As Range)
    Application.ScreenUpdating = False
   
    If Target.Address = "$A$2" Then
        Set arkV = ActiveWorkbook.Sheets(arkNavnVisning)
        Set arkH = ActiveWorkbook.Sheets(arkNavnChistorik)
       
        arkH.Activate
        antalRæk = Selection.SpecialCells(xlLastCell).Row
       
        arkV.Activate
        ActiveSheet.Range("B2:C1000").ClearContents  '<----
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