Hirdetés

Új hozzászólás Aktív témák

  • m.zmrzlina

    senior tag

    Adott egy tartomány (pl C2:C120) amiben kb 100 darab elem (szöveg) van. A 100 elem 5 különböző értéket vehet fel, vannak üres cellák és értelemszerűen az 5 féle elem mindegyike többször is előfordul.

    Az a feladat, hogy le kell cserélni minden elemet egy számra, azonos szöveget azonos számra.
    Ezt eddig így csináltam:

    For Each rngCella In wsKabelo.Range("C2:C129")
    If rngCella.Value <> "" Then
    If UCase(rngCella.Value) = "ALMA" Then
    rngCella.Value = 1
    ElseIf UCase(rngCella.Value) = "KORTE" Then
    rngCella.Value = 2
    ElseIf UCase(rngCella.Value) = "BANÁN" Then
    rngCella.Value = 3
    ElseIf UCase(rngCella.Value) = "NARANCS" Then
    rngCella.Value = 4
    ElseIf UCase(rngCella.Value) = "CITROM" Then
    rngCella.Value = 5
    End If
    End If
    Next

    Ez rendben működik de több ilyen lista van amelyek ráadásul folyamatosan változnak, tehát nem a legjobb ötlet beleírni a kódba fixen a neveket és a csereértékeket.

    Felvittem az összes listát egy másik munkafüzetbe két oszlopból álló tartományokba, majd elneveztem ezeket a tartományokat a Névkezelővel. Ezekben a tartományokban szeretnék keresni makróból a VLOOKUP() fv-nyel a következőképpen:

    For Each rngCella In wsKabelo.Range("C2:C129")
    If rngCella.Value <> "" Then
    rngCella.Value = Application.WorksheetFunction.VLookup(rngCella.Value, _
    Workbooks("forrásadatok.xlsx").Names("gyümölcsök"), 2, 0)
    End If
    Next

    esetleg így:

    Set rng_gyümölcsök = Workbooks("forrásadatok.xlsx").Names("gyümölcsök")
    Set wsKabelo = ActiveSheet

    For Each rngCella In wsKabelo.Range("C2:C129")
    If rngCella.Value <> "" Then
    rngCella.Value = Application.WorksheetFunction.VLookup(rngCella.Value, _
    rng_gyümölcsök, 2, 0)
    End If
    Next

    Sajnos egyik sem működik. Mit szúrok el?

    [ Szerkesztve ]

Új hozzászólás Aktív témák