• 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.

Als functie zoals mijn opzet

  • Onderwerp starter Onderwerp starter HWV
  • Startdatum Startdatum
Status
Niet open voor verdere reacties.

HWV

Terugkerende gebruiker
Lid geworden
19 feb 2009
Berichten
1.213
Beste,

Met de als funcie die ik helaas maar 7 keer kan gebruiken kom ik niet verder.
Ik moet eigenlijk meerde kunnen plaatsen maar weet even net hoe ik dit gaat aanpakken.

Code:
=ALS(LINKS(I2;3)="SET";"Set";ALS(LINKS(I2;2)="BA";"Baal";ALS(LINKS(I2;4)="BLIS";"Blister";ALS(LINKS(I2;4)="DIS";"Dispencer";ALS(LINKS(I2;4)="MAP";"Map";ALS(LINKS(I2;4)="PAK";"Pak";ALS(LINKS(I2;4)="ZAK";"Zak";"")))))))

Hoe kan ik meerdere malen ( 21) de als funcie gebruiken. Dit ga ik gebruiken op een 8000 tal artikelen die omgezet moet worden.

De benaming die nu wordt gebruikt kan verschillen met 21 namen ( afgekort ) die wil ik in een andere sheet vullen met achter de juiste artikelnummers de juiste benaming erbij

Groet HWV
 
Met een excel voorbeeldbestandje was het al in kannen en kruiken !
 
Maak een UDF

Code:
Function wat(c0) As String
  sq = Split("Set|Baal|Blister|Dispenser|Map|Pak|Zak", "|")
  c1 = "|BA|BL|DI|MA|PA|ZA|"
  wat = sq(UBound(Split(Left(c1, InStr(c1, "|" & UCase(c0) & "|")), "|")))
End Function
zet bijv. in een cel
= waf(A1)
 
@ snb zo geeft hij de overeenkomstige waarden weer

Code:
Function wat(c0) As String
  sq = Split("[COLOR="Red"]|[/COLOR]Set|Baal|Blister|Dispenser|Map|Pak|Zak", "|")
  c1 = "|SET|BA|BL|DI|MA|PA|ZA|"
  wat = sq(UBound(Split(Left(c1, InStr(c1, "|" & UCase(c0) & "|")), "|")))
End Function

Mvg

Rudi
 
Een voorbeeld

Beste,

Ik heb er een voorbeeld bij gedaan, van mijn pruts werk.
Ik heb een hoop kolomen met formule`s moeten maken om tot dit resultaat te moeten komen.
Ik ben de formule van SNB en de aanvulling van Rudi geprobeerd te gerbuiken maar krijg het niet voor elkaar.
duurde even voordat ik het voorbeeld bestandje klaar had is een groot bestand dat ik heb verkleind het gaat in totaal om rond de 8000 regels.
ik heb de gevoelige informatie eruit gehaald .

Ik hoop dat jullie mij op weg kunnen helpen want met functie`s werken heb ik nog niet echt gedaan, enkel daar nog maar in een bestaand script wijzigingen in aangebracht.

Groet Henk
 

Bijlagen

Bekijk en probeer de bijlage eens uit op een kopie van je bestand. Op deze manier heb je geen hulpkolommen nodig

Mvg

Rudi
 

Bijlagen

Werkt mooi

Rudi,

bedankt weer voor jou creative oplossing van mijn probleem.
Ik heb het bekeken en snap het het tot zover .
Maar waar defineer ik nu "Omzetten" wat gebruikt wordt in de formule.
kan ik dit op een andere tabblad zetten of moet dit in de zelfde blad komen te staan.
Ik heb zoals gezegd 8000 regels, dus heb ik het liefst het lijstje op een andere blad staan


Groet Henk
 
Dat lijstje was louter informatief. Kijk eens in Module1 voor de functie Omzetten

Mvg

Rudi
 
Zo simpel

Rudi bedankt weer.

Ik zat enkel aan de formule`s te denken zonder naar de VBA te kijken .
Bedankt werkt goed.

Als het mag wil ik jou nog een vraag stellen, weet niet of het zo mag of dat ik een nieuwe vraag moet starten.

Op een tekst om te zetten naar een getal gebruik ik de volgende code:
Code:
Sub TekstNaarGetallen()

Dim C As Range, T As String, T2 As Integer, T3 As Integer
    Application.ScreenUpdating = False
    On Error Resume Next
    For Each C In Selection
        C.Replace _
            What:=Chr(160), _
            Replacement:=Chr(32)
        'vaste spaties omzetten in spaties
        T = Trim(C.Value)
        With Application.WorksheetFunction
            T2 = .Find(".", T)
            T3 = .Find(".", T, T2 + 1)
        End With
        If IsEmpty(C) Then
        'overslaan lege cellen
        ElseIf LCase(C.Value) Like "*[a-z]*" Then
        'overslaan cellen met letters
        ElseIf C.Value Like "*[@$#;:/\]*" Then
        'overslaan tekens
        ElseIf T3 - T2 = 2 Or T3 - T2 = 3 Then
        'twee punten in een getal overslaan
        Else
            If C.Value Like "*.*" Then
                C.Replace _
                    What:=".", _
                    Replacement:=""
            End If
            
            If IsNumeric(C) Then
            'datum getallen negeren
                C.NumberFormat = "general"
                'celopmaak instellen
                C.Value = C.Value * 1
            End If
        
        End If
    Next
    Application.ScreenUpdating = True
    On Error GoTo 0
End Sub
De code gevonden hier op het forum.
Het werkt maar het duurt eeuwig voordat hij klaar is.
Kan ik bijvoorbeeld een kolom defineren en hier de code laten kijken tot de laatst gevulde regel in een opgegeven kolom.

groet Henk
 
Start beter een nieuwe vraag en post er ineens een klein voorbeeldbestandje bij met wat je hebt en wat je wil bereiken. Dan kan deze op opgelost

Mvg

Rudi
 
In het bestand van Rudi:

Code:
Function omzetten2(c0) As String
  With [Verpakkingseenheid!A9:A28]
    sq = WorksheetFunction.Transpose(.Offset(, 1))
    c1 = "|" & Join(WorksheetFunction.Transpose(.Offset), "|") & "|"
  End With
  Omzetten2 = sq(UBound(Split(Left(c1, InStr(c1, "|" & UCase(c0) & "|")), "|")))
End Function
Dit is flexibeler: je kunt de waarden in het werkblad aanpassen.
 
Laatst bewerkt:
Geprobeerd

Beste SNB,

bedankt voor de input die u mij heeft gegeven.
ik heb het toegpast ( waarschijnlijk niet op de juiste manier) maar het werkt bij mij niet.
Zou u als u tijd heeft hiernaar willen kijken waar ik de fout heb gemaakt.
Ik heb de formule ook aangepast :
Code:
=ALS(I2="";"";Omzetten[COLOR="Red"][B]2[/B][/COLOR](I2))&" "&ALS(J2="";"";J2)&" "&ALS(K2="";"";Omzetten[COLOR="red"][B]2[/B][/COLOR](K2))

Groet Henk
 

Bijlagen

Lijkt me eerder een 'lees'vraag dan een Excelvraag

Je hebt de naam van de funktie 3 t's gegeven: omzettten.
 
Opgelost

SNB bedankt.

Ik heb de code zo overgenomen zonder de naam te controleren:

In het bestand van Rudi:


Code:
Function omzettten2(c0) As String
With [Verpakkingseenheid!A9:A28]
sq = WorksheetFunction.Transpose(.Offset(, 1))
c1 = "|" & Join(WorksheetFunction.Transpose(.Offset), "|") & "|"
End With
Omzetten2 = sq(UBound(Split(Left(c1, InStr(c1, "|" & UCase(c0) & "|")), "|")))
End Function

Dit is flexibeler: je kunt de waarden in het werkblad aanpassen.

Ik heb het aangepast en werkt als een trein.
Het werkt allebei, maar opdeze manier is het inderdaad makkelijker om er regels aan toe te voegen

Bedankt SNB en Rudi voor de input.

Groet Henk
 
Maar als je ergens zo'n tabel hebt staan kan het toch ook met vert. zoeken of:
=VERSCHUIVING(Verpakkingseenheid!A8;VERGELIJKEN(D1;Verpakkingseenheid!A9:A40);1)
 
Status
Niet open voor verdere reacties.
Terug
Bovenaan Onderaan