• Privacywetgeving
    Het is bij Helpmij.nl niet toegestaan om persoonsgegevens in een voorbeeld te plaatsen. Alle voorbeelden die persoonsgegevens bevatten zullen zonder opgaaf van reden verwijderd worden. In de vraag zal specifiek vermeld moeten worden dat het om fictieve namen gaat.

delen uit cel zoeken op een ander werkveld

Status
Niet open voor verdere reacties.

wolters125

Gebruiker
Lid geworden
7 feb 2007
Berichten
38
Hallo Allen,

De volgende situatie heb ik:
In kolom A staan codes. Bv in cel1 staat 123456789

Deze code moet gezocht worden in een andere sheet.
Alle codes die deels overeenkomen weergeven in kolom E op de sheet waar ook A op staat.
Dus codes weergeven zoals: 1234, 56, 789, 345678, 23456789 etc.
Als een gelijke code meerdere keren voor komt hoeft deze maar 1 keer te worden weergegeven
. bv 1234 komt meerdere keren voor. Deze hoeft dan maar 1 keer in de lijst te worden opgegeven.
Gevonden codes komen dan in kolom E onder elkaar te staan.
Nadat de code uit cel1 geweest is moet deze verder naar kolomA cel2

Heeft iemand een idee hoe ik dit aan zou kunnen pakken?:confused:

Alvast bedankt.

Mvg,

Niels
 
Heeft iemand een idee hoe ik dit aan zou kunnen pakken?:confused:

Je hebt al zeker VBA nodig.

Voor elke code uit kolom A moet je met een lus doorheen de kleinere codes gaan, en met de InStr functie kijken of het voorkomt in de langere code uit kolom A. Indien ja, dan onderaan bijvoegen.

Wigi
 
Hallo,

Wigi bedankt voor je reactie.
VBA was me al duidelijk dat ik dat zou moeten gebruiken.

Het stukje moet eigenlijk eerst kijken naar de code en dan pas gaan zoeken in het veld naar data wat er op lijkt en vervolgens deze weergeven in een lijst.

Zelf ben ik in de richting aan het denken van een combinatie van match en xlpart.
Maar ik weet niet of daar iets mee te doen is.
Ik ben zelf een beginneling met VBA.

Nog iemand die me verder kan helpen met mogelijkheden/oplossingen?

Alvast bedankt.

Mvg,

Niels
 
Zelf ben ik in de richting aan het denken van een combinatie van match en xlpart.
Maar ik weet niet of daar iets mee te doen is.

De InStr functie is al genoeg. Find moet je niet programmeren, al kan dat wel. Gewoon testen of InStr(...) > 0. Als dat zo is weet je dat het voorkomt in de code en dat het dus verplaatst moet worden.
 
Hallo Wigi,

Nogmaals dank voor je reactie.

Ik heb de functie eens bekeken maar ik snap hem denk ik niet.
Je bedoeld deze toch:
Code:
InStr([start, ]string1, string2[, compare])>0

Onder start zou ik dan een 1 moeten gebruiken.
string 1 is waarmee vergeleken moet worden. In dit geval dus de lange code.
Dit zal dan iets worden van:
Code:
For i = 1 To xlLastCell
..... 'instr bewerking waar iets terug komt voor string1 in de vorm van cell(i,1).....
       gevonden match copieren naar eerste lege cel in kolom E
next i

string 2 is dan waar gekeken moet worden. Sheet2 in dit geval.

Ik weet niet of ik zo goed zit te denken?

Mvg,

Niels
 
Ik heb zelf nog op het forum gezocht en met vanalles zitten puzzelen:
Code:
Sub Zoekshorts()

Dim Rij, ZoekTekst, ZoekWaarde, Output
Dim Resultaat
Dim Cel As Range

For i = 1 To xlLastCell

    ' zoektekst
    ZoekWaarde = Sheets("codes").Cells(i, 1)
    ' zoek lokatie
    Sheets("gegevens").Select

    For Each Cel In Selection
    ' Zoektekst bevat de range waarin gezocht moet worden
    ZoekTekst = (Cel.Value)
        'Instr is het commando om te zoeken
        Output = InStr(1, ZoekTekst, ZoekWaarde, vbTextCompare)
        If Output <> 0 Then
        ' als er iets gevonden wordt dan wordt de locatie gegeven, deze is altijd groter dan o
        Debug.Print Cel.Address
        'het resultaat toevoegen aan de selectie range
            If Resultaat = Empty Then
            Resultaat = Cel.Address
            Else: Resultaat = Resultaat & "," & Cel.Address
            End If
        End If
    Next
    If Resultaat <> Empty Then
     Range(Resultaat).Select
    Else: MsgBox "De gezochte waarde is niet gevonden", vbOKOnly, "Not Found #"
    End If
Next i
End Sub

Dit heb ik er zover van gemaakt.
Hij loopt vast bij Range(Resultaat).Select
In feite zou hier de gevonden resultaten moeten worden geselecteerd. (hierdoor dus zichtbaar in werkveld)

Ik wil deze code in stapjes omzeeten naar het eindresultaat.

Als iemand mij verder kan helpen graag.

Mvg,

Niels
 
Laatst bewerkt:
Hallo Allen,

Inmiddels zelf nog wat gewerkt aan mijn code.
Alleen ik loop steeds tegen het volgende aan:

Code:
For i = 1 To xlLastCell
    ' zoektekst
    ZoekWaarde = Sheets("shorts").Cells(i, 1)....

......
next i
Bij deze code heb ik steeds het probleem dat hij altijd 11 cellen pakt.
Of ik er nu meer of minder in gebruik heb, het blijven altijd 11 cellen waarin gekeken wordt.

Verder loop ik vast bij het probleem om een stukje te schrijven om een vergelijking te maken. Dus de vergelijking tussen het gegeven wat ik geef (een lange code) en een stukje wat er deels mee overeenkomt. Mss dat iemand daar een oplossing voor heeft?

Alvast bedankt.

Mvg,

Niels
 
Bij mij pakt hij ook alles tm regel 11.
Probeer deze eens:
Code:
Range("A65536").End(xlUp).Row
 
Verder loop ik vast bij het probleem om een stukje te schrijven om een vergelijking te maken. Dus de vergelijking tussen het gegeven wat ik geef (een lange code) en een stukje wat er deels mee overeenkomt. Mss dat iemand daar een oplossing voor heeft?

..., en met de InStr functie kijken of het voorkomt in de langere code uit kolom A. ...

Wigi

Dit had ik eerder al aangegeven in deze topic.
 
Allen bedankt voor de reacties.
@ DEMETER
die code werkt zoals ik heb hebben wil. Bedankt.
Alleen loopt hij nu een stukje verder vast.

@wigi, ik heb dat stukje ook gebruikt.
Alleen wordt nu gekeken naar volledige overeenkomsten.

Wat ik wil hebben is:
Ik heb een stukje code bv 123456789.
dan moet er in een ander veld gezocht worden naar stukjes die erop lijken
bv 1234, 456789, 234 etc en deze wil ik dan graag in een kolom onder elkaar krijgen.

wat ik tot nu toe heb is:

Code:
Sub Zoek()

Dim Rij, ZoekTekst, ZoekWaarde, Output
Dim Resultaat As String
Dim Cel As Range


For i = 1 To Range("A65536").End(xlUp).Row
    ' zoektekst
    ZoekWaarde = Sheets("shorts").Cells(i, 1)
    ' zoekselectie
    Sheets("codepagina").Select
    ActiveSheet.UsedRange.Cells.Select

        For Each Cel In Selection
        ' Zoektekst bevat de range waarin gezocht moet worden, de cel binnen de usedrange
            ZoekTekst = LCase(Trim(Cel.Value))
            'Instr is het commando om te zoeken
        Output = InStr(1, ZoekTekst, ZoekWaarde, vbTextCompare)
        If Output <> 0 Then
        ' als er iets gevonden wordt dan wordt de locatie gegeven, deze is altijd groter dan o
    Debug.Print Cel.Address
    'het resultaat toeveogen aan de selectie range
            If Resultaat = Empty Then
            Resultaat = Cel.Address
            Else: Resultaat = Resultaat & "," & Cel.Address
            End If
        End If
    Next

    If Resultaat <> Empty Then
     Range(Resultaat).Select
    Else: Resume Next
    End If
Next i

End Sub

hierin wordt gekeken naar de codes en gezocht naar wat het zelfde is.
dit wordt dan geselecteerd.

Waar hij nu vast loopt is onderaan bij het selecteer stukje.
Range(resultaat).Select
Dit geeft een fout bij het runnen.

Als iemand me verder kan helpen graag.

Alvast bedankt.

mvg,

Niels
 
Je zal met een lus doorheen de inhoud van je cel moeten gaan. Tevens met verschillende lengten.

Dus eerst door de cel gaan met telkens 1 getal per keer; dan nog eens erdoor met 2 getallen per keer, enz. Dus heel veel lussen die uitgevoerd moeten worden.

En dit voor elke cel in de usedrange.

Wigi
 
Hallo Wigi,

Wat je bedoeld is dus dat ik de functie vaker moet gebruiken.
Dus als ik de code 123456789 heb en de lijkende codes wil hebben ik eerst moet zoeken naar 12345678 dan 1234567 vervolgens 123456 en zo verder?
Overigens ben ik er achter gekomen dat wat ik hebben wil minimaal 3 karakters vanuit links zijn en steeds het beginstuk het zelfde hebben.

Dus vanuit de code 123456789 gezien zal ik dus altijd kijken naar 123 of 1234 of 12345 of 123456 of 1234567 of 12345678 en niet naar bv 4567.

Zou ik dan eventueel dit het makkelijkste kunnen maken met de left() functie?

Bedankt zover.

Mvg,

Niels
 
Status
Niet open voor verdere reacties.
Terug
Bovenaan Onderaan