Avatar billede FewCastle Praktikant
15. januar 2013 - 10:11 Der er 11 kommentarer og
1 løsning

Problem med at finde match

Jeg har 2 ark i et regneark - terrorliste og kontakttabel.
I terrorliste er der følgende felter:
Lastname, Firstname, Middelname, Wholename, Kolonne1, ID
Kolonne1 indeholder en formel som tager navn fra Wholename frem til første mellemrum. Eks. hvis der står xxx yyy i Wholenams vil der stå xxx i Kolonne1

I kontaktliste er der følgende felter:
First name, Middel name, Surname, No, Kolonne1, Kolonne2, Kolonne3, Kolonne4, Kolonne5, Kolonne6

Der skal ske det, at:
1. First name (kontaktliste) skal tjekkes op i mod Lastname (terrorliste). Der skal noteres de hists der findes med ID (terrorliste) i Kolonne1 (kontaktliste)
2. Middel name (kontaktliste) skal tjekkes op i mod Lastname (terrorliste). Der skal noteres de hists der findes med ID (terrorliste) i Kolonne2 (kontaktliste)
3. Surname name (kontaktliste) skal tjekkes op i mod Lastname (terrorliste). Der skal noteres de hists der findes med ID (terrorliste) i Kolonne3 (kontaktliste)

4. First name (kontaktliste) skal tjekkes op i mod Kolonne1 (terrorliste). Der skal noteres de hists der findes med ID (terrorliste) i Kolonne4 (kontaktliste)
5. Middel name (kontaktliste) skal tjekkes op i mod Kolonne1  (terrorliste). Der skal noteres de hists der findes med ID (terrorliste) i Kolonne5 (kontaktliste)
6. Surname name (kontaktliste) skal tjekkes op i mod Kolonne1  (terrorliste). Der skal noteres de hists der findes med ID (terrorliste) i Kolonne6 (kontaktliste)

Jeg har prøvet med Lopslag, men når det første hit er fundet stopper den jo søgningen og det dur ikke. Så håber der er en derude der kan lave en Function i vba.

På forhånd tusind tak.
Avatar billede natkatten Mester
15. januar 2013 - 10:46 #1
Som jeg læser din beskrivelse, så kan det også løses vha. INDEKS+SAMMENLIGN lavet som en matriksformel.

MEN hvis det er en stor liste, så vil det givetvis aht. performance være en fordel at kode det i VBA.
Avatar billede FewCastle Praktikant
15. januar 2013 - 11:00 #2
Vi skal over i noget vba og her er jeg ikke lige helt skarp. Det er jo noget med at lave loop, men jeg behøver lidt hjælp.
Kan du byde ind?
Avatar billede FewCastle Praktikant
24. januar 2013 - 11:59 #3
Håber der fortsat er nogen der kan kommer med hint eller måske en løsning i vba.
Det vil være fint hvis der kommer en løsning til pkt. 1, så kan jeg jo selv ændre i koden for de sidste 5.

Håber på feedback.
Avatar billede supertekst Ekspert
26. januar 2013 - 11:39 #4
Jeg prøver i løbet af dagen af sende et forslag...
Avatar billede supertekst Ekspert
26. januar 2013 - 14:54 #5
Prøv at se på dette:

Rem VBA-koden indsættes i ThisWorkbook
Rem ==================================
Dim ark1 As Worksheet                              'terrorliste
Dim antalRækker1 As Long
Const idKolonne = 6

Dim ark2 As Worksheet                              'kontaktliste
Dim antalRækker2 As Long
Public Sub findMatch()
    houseKeeping

    match 1, 1, 5                                  'kolonne nr.
End Sub
Private Sub houseKeeping()
    Set ark1 = ActiveWorkbook.Sheets("terrorliste")
    antalRækker1 = findAntalRækker(ark1)
   
    Set ark2 = ActiveWorkbook.Sheets("kontaktliste")
    antalRækker2 = findAntalRækker(ark2)
End Sub
Private Function findAntalRækker(ark)
    ark.Select
    findAntalRækker = ActiveCell.SpecialCells(xlLastCell).Row
End Function
Private Sub match(kildeKol, matchKol, resultatkol)
Dim ræk As Long, kilde As String, resultat
Rem traverser kontaktliste
    For ræk = 2 To antalRækker2
        kilde = Cells(ræk, kildeKol)
        resultat = erDerMatch(kilde, matchKol)
        If resultat <> "" Then
            ark2.Cells(ræk, resultatkol) = resultat
        End If
    Next ræk
End Sub
Private Function erDerMatch(kilde, seIkol)
Dim ræk As Long
    For ræk = 1 To antalRækker1
        If kilde = ark1.Cells(ræk, seIkol) Then
            erDerMatch = ark1.Cells(ræk, idKolonne)
            Exit Function
        End If
    Next ræk
End Function
Avatar billede FewCastle Praktikant
07. februar 2013 - 13:33 #6
Hej supertekst
Så er jeg gået i gang med en test. Jeg skal du lige have at vide hvordan jeg lige kommer videre.
Jeg kan forstå at jeg skal function erDerMatch(kilde, selkol), men kan du beskrive hvordan jeg skal bruge funktionen.

På forhånd tak.
Avatar billede FewCastle Praktikant
07. februar 2013 - 13:40 #7
Der mangler ord i denne tekst, så det er rettet nu.
Hej supertekst
Så er jeg gået i gang med en test. Jeg skal dog lige have at vide hvordan jeg kommer videre.
Jeg kan forstå at jeg skal bruge functionen erDerMatch(kilde, selkol), men kan du beskrive hvordan jeg skal bruge funktionen.

På forhånd tak.
Avatar billede supertekst Ekspert
07. februar 2013 - 14:08 #8
Du starter makroen med Alt+F8 - afspil den markerede (findMatch)

Public Sub findMatch()
    houseKeeping

    match 1, 1, 5                                  'kolonne nr.du

    tilføjer selvc de øvrige øskede match's - do den viste
End Sub

her kan du se betydningen
Private Sub match(kildeKol, matchKol, resultatkol)
Avatar billede FewCastle Praktikant
07. februar 2013 - 14:44 #9
Er der et bestemt felt og ark jeg skal stå i?
Synes excel låser totalt og svarer ikke.
Avatar billede supertekst Ekspert
07. februar 2013 - 14:54 #10
Er koden kopieret ind i ThisWorkbook?
Er indstillingen ændret så du kan anvende makro?

Hvis du vil have min model - så send en mail. @-adresse under min profil.
Avatar billede FewCastle Praktikant
12. februar 2013 - 10:24 #11
Hej Peter,
vil du ikke lige lægge et svar. Det hjalp med dit eksempel. Tusind tak for din hjælp.
Avatar billede supertekst Ekspert
12. februar 2013 - 10:49 #12
Fint - du får et svar og selv tak..
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