Excel split en zoek functie

Status
Niet open voor verdere reacties.

arnaudjan

Gebruiker
Lid geworden
17 aug 2007
Berichten
8
hallo,
ik ben bezig met "update functie" in een excel bestand. Ik heb 2 werkbladen:
in het ene blad staan in 1 cel nummers geplitst door een teken (bijv.: N1, G5; D4+ 123)
op het andere blad staat elk afzonderlijk nummer in een cel in een regel met extra info erachter. (bijv.: A1="N1", A2="extra info 1", A3="extra info 2"; B1="G5", B2="extra info", B3="extra info".)
nu is de bedoeling dat ik bij een druk op de knop die ene cel op het 1e blad splits (Dmv Split(cel1,) vervolgens op het 2e blad regel 1 t/m 500 doorzoek op de "gesplitste info" van blad 1 en de "extra info" in de rijen achter de nummers (gesplitste info) per rij in 1 cel plak op het eerste blad!

zo.. het is mij al aardig gelukt, maar t werkt nie

Nummer = ActiveSheet.Range("A1").Value
Woorden = Split(Nummer, "+") ' hier moet ik dus op meerdere tekens kunnen splitsen

Sheets("2").Activate

I=1
Do
If ActiveSheet.Range("B" + (LTrim(RTrim(Str(I))))).Value = Woorden() Then 'hier moet ik dus op meerdere nummers kunnen zoeken
A = ActiveSheet.Range("I" + (LTrim(RTrim(Str(I))))).Value
B = ActiveSheet.Range("Z" + (LTrim(RTrim(Str(I))))).Value

End If


I = I + 1

Loop While I < 500

Sheets("1").activate
' hierna moet ik dus nog alle info verzammelen alle info "A" samenvoegen en info"B" samenvoegen.

ActiveSheet.Range("B1").Value = A()
' zoiets?probleem in dit geval is de variable grootte van A.


mensen ik moet die arrays dus kunnen benoemen ongeachte de grootte.. (geloof ik) iets va woorden (1 to i) ofzo?

Alvast bedankt.
 
Plaats eens een voorbeeldbestandje met daarin wat je uitgangssituatie is en wat je uiteindelijk wilt bereiken. Verhaal is voor mij in elk geval niet duidelijk genoeg.
 
bijlage

bij deze.. ik ben benieuwd, met name hoe het variabele aantal gevonden waarden gedefinieerd wordt... als ik namelijk 5 namen heb moet ik zoeken op naam 1,2,3,4,5. maar ik kan er ook 20 hebben... duss... dit kan waarschijnlijk wel met een loop voor het aantal namen in de loop om door een x aantal regels te lopen.. ma hoe defineer ik het aantal namen... tja misschien doek het te omslachtig.. alvast bedankt..
 
Indien er niet bekend is welke scheidingstekens er gebruikt worden, hoe kun je dan bepalen hoeveel items het zijn?
Kan een scheidingsteken een eind verder in de string ook onderdeel zijn van de naam?
Of bestaan namen ALTIJD uit alléén een combinatie van een hoofdletter en één of meerdere cijfers?

Uitgaande van het laatste kan er mogelijk een oplossing gevonden worden.

Extra vraag: Levert het gebruik van hulpkolommen problemen op?
 
ik kan er wel voor zorgen dat er 1 soort scheidingsteken komt, bijv. een ; dit zo het idd makkelijker maken, zo ben ik nu ook eerst voor mij zelf te werk gegaan met het scheidings teken "+"
ik doe het nu als volgt: dmv tekst naar kolommen (in VBA) zet ik de namen achter elkaar (op de sheet buiten afdruk bereik), hier tel ik het aantal van en dim ik als integer, hiermee geef ik in het VBA aan hoe vaak mijn loop doorlopen moet worden per regel. tevens splits ik de cel namen in vba (dmv "namen = split(naam, "+") ), waardoor ik in mijn loop naar namen(N) kan zoeken, waarbij N oploopt bij elke x dat een loop doorlopen wordt. Loop While I<Aantal namen
maar dit werkt niet, geeft foutmelding op Namen(N) maar als ik daar bijv namen(1) van maak doet ie wel.. tevens is dit een beetje omslachtig...
 
In de bijlage een oplossing via macro met hulpkolommen.
Misschien kunnen deze nog vervallen, maar voor het begrijpen van de werking van de macro zijn ze nu wel zo gemakkelijk. Zeker als je de macro stap voor stap doorloopt.

Uitgangspunt is dat de namen alleen bestaan uit hoofdletters en cijfers.
Extra moeilijkheid hierbij was dat bijv. A1 als celadres beschouwd werd i.p.v. waarde.

Plaats de cursor in B3 en start de macro.
De lengte wordt nu opgezocht.
Uitbreiding voor hoogte en breedte lukt je nu zelf wel, denk ik.

Oh ja, je tabel op blad 3 moet wel alfabetisch gesorteerd zijn en het zoekbereik in de macro moet je nog aanpassen als je meer namen krijgt of hoogte, breedte, etc. ook op wilt zoeken.
 

Bijlagen

  • Splitsen.zip
    10,2 KB · Weergaven: 73
Zow, nou dit werkt al super zeg!! dit had ik zelf ook nog niet kunnen bedenken.. die uitbreidingen gaan me vast lukken, ik ga me er weer in verdiepen!! echt super bedankt, en als er weer vragen zijn ben ik zo terug!!
Groeten Arnaud!!:thumb:
 
error

Het werkt super, ik heb het toegevoegd op alle waarden, en prima prima!!
Als ik nu zoek met een waarde die niet voorkomt op blad3, dan krijg je de melding #N/B in de cel, hierdoor loopt t programma niet door.. kan hier nog een error code voor ingevoerd worden dat die error op de Verticaal zoek functie genegeerd wordt?

gegroet!!
 
Vervang de regel met
Code:
ActiveCell.Offset(1, c).Formula = _
                    "=VLookup(" & """" & ArtNm & """" & ", Blad3!A3:G12, 2, 0)"
door
Code:
             ActiveCell.Offset(1, c).Formula = _
                    "=IF(ISNA(VLookup(" & """" & ArtNm & """" & ", Blad3!A3:G12, 2, 0))," & _
                    """" & """" & ",VLookup(" & """" & ArtNm & """" & ", Blad3!A3:G12, 2, 0))"

Indien de te zoeken waarde niet voorkomt wordt de cel leeggelaten.
 
Hoi!!
Geprobeerd maar werkt nog niet helemaal, als ik 4namen invoeg, waarvan de 2e niet voorkomt op "blad3" krijgt deze de waarden mee van de 1e naam.

Ook als ik maar 1 naam (bestaand op "Blad3") in ingeef worden er helemaal geen gegevens bij gevonden..

Ik dacht dat ik aardig kon vba-en ma t valt me toch elke keer weer tegen... :confused:

Groeten Arnaud
 
ok, vraag 1 is opgelost, vraag 2 bijna.
Bij het invoeren van 1 naam werkt het alleen als je er een "teken" achter zet.. (V1, ) zou mooi zijn dat dat niet nodig hoeft te zijn...
 
Status
Niet open voor verdere reacties.
Steun Ons

Nieuwste berichten

Terug
Bovenaan Onderaan