Hogyan szűrjük ki az egyenlőségjelet (=) cellákból VBA-ban?

Excelmarketing - Excel VBA makró blog - Hogyan szűrjük ki az egyenlőségjelet (=) cellákból VBA-ban?

Tegyük fel, hogy van egy Excel táblánk, amibe rendszeresen a honlapunkon kitöltött űrlap export adatait szoktuk beolvasni. Az exportban “A” oszlopban vannak a nyitott kérdés válaszai, azaz azok a megjegyzések, amiket az űrlap kitöltője írt. Tehát, az “A” oszlop soraiban bármilyen tetszőleges szöveg előfordulhat.

Azonban ha valaki az űrlapon e nyitott kérdésnél beír egy egyenlőségjelet akarva vagy akaratlanul, és utána írja a megjegyzését, akkor később az Excel azt egy képletnek fogja venni, és nem fogja tudni értelmezni. Rosszabb esetben, a makrónk is megakad tőle.

Sajnos ez true story, hosszas órák után jöttem rá miért csesződött el egy komolyabb lead riportom. Mindenre gondoltam már, de végül kiderült, hogy egy kedves űrlapkitöltő egyenlőségjellel kezdte a megjegyzését. (Amit semmi nem tilt.) És mivel ez egy heti riport volt, ráadásul egy nagyobb multinál, az adatbázis sorainak száma több ezres volt, azaz esélytelen lett volna első blikkre kiszúrni, hogy egy kósza “=” karakter akasztotta meg a makrómat.

Éppen ezért egy ilyen esetben érdemes kiszűrni a riportunk kódjában az egyenlőségjelet.

A cellánk első karaktere egy nem kívánt egyenlőségjel
A cellánk első karaktere egy nem kívánt egyenlőségjel

Ezt a következő funkció segítségével tudjuk megoldani:

'Létrehozunk egy új funkciót, ami törli egy adott oszlopban az egyenlőség (=) jeleket. Jelen esetben ez az 1. oszlop, azaz az "A" oszlop. És csak azon cellákból, ahol az egyenlőségjel az első karakter. Továbbá a funkciónkban meg tudjuk határozni , hogy az oszlopon belül is milyen tartományban mozogjon, ezért két összetevője van: az első szám (a) az első sort, a második szám (b) az utolsó sort fogja megadni, amelyet tartományban le akarjuk futtatni.
Function egyenlosegjel_szuro(a As Integer, b As Integer)
    For Each cell In ActiveSheet.Range(Cells(a, 1), Cells(b, 1))
        If Left(cell.Formula, 1) <> "=" Then

        Else
            cell.Formula = "'" & Right(cell.Formula, Len(cell.Formula) - 1)
        End If
    Next cell
End Function

Sub Makró1()
'Ha ezt a funkciót futtatjuk, akkor jelen esetben az "A" oszlop első 4 sorában fogja kitörölni a cellák első karakterét, amennyiben az egyenlőségjel.
    a = egyenlosegjel_szuro(1, 4)

End Sub

A fenti módszer alkalmazásával kiszedjük a cellából a felesleges egyenlőségjeleket.

Mennyire találtad hasznosnak ezt cikket?
[Összes szavazat: 1 Átlag értékelés: 5]