-
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
-
Mutt
senior tag
válasz
KaliJoe
#53475
üzenetére
Szia,
Az én megoldásom azon alapszik, hogy van egy táblázat amely tartalmaz pár adatot ami alapján meg lehet találni, hogy melyik formátumot kell használni.
Mutatom.
Jobb oldalt van a táblázat, amiben a telefonszám első pár karaktere van megadva (lehet dzsóker karaktert - kérdőjel most csak - is használni). Aztán van hossz is, hogy az altípusokat meg lehessen különböztetni (biztosra mentem és tartományt lehet megadni).
Majd jön a kívánt számformátum, itt követni kell az Excel speciális számformátum szabályait. Meg lehet adni, hogy milyen háttérszíne legyen a cellának (három szám 0-255 között, vesszővel felsorolva a vörös-zöld-kék alapszínekhez). A komment pedig segít eligazodni a káoszban.A táblázatban fontos a sorrend. Ha több lehetőség is van akkor is az első találatot fogja használni a makró.
Ezek után a makró:
Option ExplicitDim arrFormatsSub FormatNumbers()Dim s As RangeDim r As VariantDim szinek As Variant'megadott formátumokat memóriába töltjük'ha más a tábla neve akkor a tFormats helyére a helyes kerüljönarrFormats = ActiveSheet.ListObjects("tFormats").DataBodyRange.ValueSet s = Intersect(Selection, ActiveSheet.UsedRange)If Not s Is Nothing Then'kijelölt adatokon végigmegyünkFor Each s In Selectionr = FindFormat(s.Value)If IsArray(r) Then'a cél cella formázását levesszüks.ClearFormats'beállítjuk a formátumots.NumberFormat = r(1)'ha van színezünkIf r(2) <> "" Thenszinek = Split(r(2), ",")If UBound(szinek) = 2 Then s.Interior.Color = RGB(szinek(0), szinek(1), szinek(2))End IfEnd IfNext sEnd IfEnd SubFunction FindFormat(p As String) As VariantDim i As LongDim pFormat(1 To 2) 'formátum és színkódDim pKezdo As StringDim pHossz As LongpHossz = Len(p)FindFormat = ""If pHossz = 0 Then Exit Function'végigmegyünk a létező formátumokonFor i = 1 To UBound(arrFormats)pKezdo = ""'hossz alapján keresünk egyezéstIf arrFormats(i, 2) >= pHossz And arrFormats(i, 3) <= pHossz ThenpKezdo = arrFormats(i, 1)'kezdõ karakterek alapján keresünk egyezéstIf Left(p, Len(pKezdo)) Like pKezdo Then'ha van egyezés akkor elmentjük és kilépünk a ciklusbólpFormat(1) = arrFormats(i, 4)pFormat(2) = arrFormats(i, 5)FindFormat = pFormatExit ForEnd IfEnd IfNext iEnd FunctionCsak a kijelölt cellák formátumát változtatja meg! Vagyis előbb jelöljük ki a cellákat/oszlopokat és utána futassuk (Alt+F8-at nyomva vagy egy gombot kitéve).
Új hozzászólás Aktív témák
- Kingdom Come: Deliverance I-II.
- Sony MILC fényképezőgépcsalád
- MasterDeeJay: Asus Q170M-C coffeetime mod!
- NVIDIA GeForce RTX 5070 / 5070 Ti (GB205 / 203)
- Milyen videókártyát?
- Milyen asztali (teljes vagy fél-) gépet vegyek?
- Spórolós topik
- Sorozatok
- Okos Otthon / Smart Home
- PC-k milliói kerülhetnek veszélybe idén
- További aktív témák...
- ÁRGARANCIA! Épített KomPhone i5 12400F 16/32/64GB RAM RTX 3060 12GB GAMER PC termékbeszámítással
- ÁRGARANCIA!Épített KomPhone Ryzen 7 9700X 32/64GB RAM RX 9070 16GB GAMER PC termékbeszámítással
- Lenovo ThinkPad L16 Gen 1 - 16" WUXGA IPS - Ultra 5 135U - 16GB - 512GB - Win11 - 2,5 év gari
- Apple iPhone 13 Pro Max 128GB, Kártyafüggetlen, 1 Év Garanciával
- BESZÁMÍTÁS! Gigabyte B760M i5 14600K 16GB DDR4 512GB SSD RX 9060 XT 16GB Asus A31 PLUS TG ARGB 650W
Állásajánlatok
Cég: PCMENTOR SZERVIZ KFT.
Város: Budapest
Cég: Laptopműhely Bt.
Város: Budapest

Fferi50
