-
Fototrend
A Microsoft Excel topic célja segítséget kérni és nyújtani Excellel kapcsolatos problémákra.
Kérdés felvetése előtt olvasd el, ha még nem tetted.
Új hozzászólás Aktív témák
-
válasz
Fferi50 #52972 üzenetére
Úgyis régen makróztam, kedvem szottyant kicsit nosztalgiázni ezen a késői órán, szabályokat meg úgy értelmeztem, ahogy korábban.
Ha másra nem is lesz jó, páran talán találnak benne hasznosítható dolgokat...Module1-be
Option Explicit
'Fire/SOUL/CD - 2024
Public Function Fire_dm1970_FX(MyCell As Range) As String
'elválasztó karakter (itt szóköz), ezzel vannak elválasztva a szavak a cellá(k)ban
Const MYDELIMITER = " "
'szöveg típusú dinamikus tömb
Dim MyStringArray() As String
'színek deklarálása tömbben (bármennyi lehet)
Dim MyColors() As Variant
MyColors() = Array("FEHÉR", "KÉK", "ZÖLD", "PIROS", "FEKETE", "HUPIKÉK")
'ciklusszámláló
Dim i As Long
'az Ubound fx értékét ebben tároljuk
Dim MyColorIndex As Long
'SPLIT függvény segítségével, a MYDELIMITER paraméterrel tömböt hozunk létre
MyStringArray = Split(MyCell.Value, MYDELIMITER)
'végignézzük a tömb elemeit (szavakat a cellában, ami bármennyi lehet)
For i = 0 To UBound(MyStringArray)
'a tömb 0. eleme (első szó a cellában) egy deklarált szín?
'ha igen, akkor a színt adjuk vissza és kilépünk a függvényből
MyColorIndex = UBound(Filter(MyColors, MyStringArray(0), , vbTextCompare))
If MyColorIndex > -1 Then
Fire_dm1970_FX = UCase(MyStringArray(0))
Exit Function
End If
'a tömb utolsó eleme (utolsó szó a cellában) egy deklarált szín?
'ha igen, akkor a színt adjuk vissza és kilépünk a függvényből
MyColorIndex = UBound(Filter(MyColors, MyStringArray(UBound(MyStringArray)), , vbTextCompare))
If MyColorIndex > -1 Then
Fire_dm1970_FX = UCase(MyStringArray(UBound(MyStringArray)))
Exit Function
End If
'a tömb i-edik eleme egy deklarált szín?
'ha igen, akkor az i+1-dik elemet (cellában első megtalált deklarált színt követő szót) adjuk vissza és kilépünk a függvényből
MyColorIndex = UBound(Filter(MyColors, MyStringArray(i), , vbTextCompare))
If MyColorIndex > -1 Then
Fire_dm1970_FX = UCase(MyStringArray(i + 1))
Exit Function
End If
'ha nem találtunk a cellában deklarált színt, akkor töröljük a cella tartalmát
Fire_dm1970_FX = ""
Next i
End Function
-
válasz
Fferi50 #52972 üzenetére
Korábban írtam, hogy ebből a példából le lehet vonni szabályt és arra lehet makrót írni, ami egyszerű(bb), de ha -ahogy írod is- figyelembe vesszük ezt is:
"Az indító kérdésben még alma, körte, ivólé.... valamint kg és doboz szerepelt..."
na akkor borul minden...Én is inkább megvárom, míg nem látom a konkrét táblát, mert addig gyárthatunk akármilyen megoldást, aztán a konkrét táblában meg semmire nem lesz jó...
Új hozzászólás Aktív témák
- Xiaomi Redmi Note 12S 256GB, Kártyafüggetlen, 1 Év Garanciaval
- ÁRGARANCIA!Épített KomPhone i9 14900KF 32/64GB DDR5 RAM RX 9070 XT 16GB GAMER PC termékbeszámítással
- BESZÁMÍTÁS! 32GB (2x16) ADATA XPG Lancer RGB 7200MHz DDR5 memória garanciával hibátlan működéssel
- Apple iPhone 13 Pro max 512GB,Újszerű,Dobozával,12 hónap garanciával
- iPhone 14 128GB Midnight -1 ÉV GARANCIA - Kártyafüggetlen, MS3660
Állásajánlatok
Cég: Promenade Publishing House Kft.
Város: Budapest
Cég: NetGo.hu Kft.
Város: Gödöllő