Ehdollisen muotoilun käyttäminen Excel VBA: n kanssa

Excelin ehdollinen muotoilu

Excelin ehdollisen muotoilun avulla voit määrittää säännöt, jotka määrittävät solujen muotoilun.

Voit esimerkiksi luoda säännön, joka korostaa tietyt ehdot täyttävät solut. Esimerkkejä ovat:

  • Numerot, jotka kuuluvat tietylle alueelle (esim. Alle 0).
  • Luettelon kymmenen parasta kohdetta.
  • "Lämpökartan" luominen.
  • "Kaavapohjaiset" säännöt lähes kaikille ehdollisille muotoiluille.

Excelissä ehdollinen muotoilu löytyy valintanauhan kohdasta Koti> Tyylit (ALT> H> L).

Jos haluat luoda oman säännön, napsauta "Uusi sääntö" ja uusi ikkuna avautuu:

Ehdollinen muotoilu VBA: ssa

Kaikkiin näihin ehdollisen muotoilun ominaisuuksiin pääsee VBA: n avulla.

Huomaa, että kun määrität ehdollisen muotoilun VBA-koodista, uudet parametrit näkyvät Excelin käyttöliittymän ehdollisessa muotoiluikkunassa ja näkyvät käyttäjälle. Käyttäjä voi muokata tai poistaa niitä, ellet ole lukinnut laskentataulukkoa.

Ehdolliset muotoilusäännöt tallennetaan myös laskentataulukon tallennuksen yhteydessä

Ehdollisia muotoilusääntöjä sovelletaan erityisesti tiettyyn laskentataulukkoon ja tiettyyn solualueeseen. Jos niitä tarvitaan muualla työkirjassa, ne on määritettävä myös kyseiselle laskentataulukolle.

Ehdollisen muotoilun käytännön käyttö VBA: ssa

Laskentataulukkoosi voidaan tuoda suuri osa raakadataa CSV-tiedostosta (pilkuilla erotetut arvot) tai tietokantataulukosta tai -kyselystä. Tämä voi kulkea koontinäyttöön tai raporttiin, ja muuttuvat numerot tuodaan ajanjaksolta toiselle.

Jos luku muuttuu ja on hyväksyttävän alueen ulkopuolella, voit korostaa tämän esim. solun taustaväri punaisena, ja voit tehdä tämän asettamalla ehdollisen muotoilun. Tällä tavalla käyttäjä vetoaa välittömästi tähän numeroon ja voi sitten tutkia, miksi näin tapahtuu.

Voit ottaa ehdollisen muotoilun käyttöön tai poistaa sen käytöstä VBA: n avulla. VBA: n avulla voit tyhjentää säännöt eri soluista tai ottaa ne uudelleen käyttöön. Saattaa olla tilanne, jossa epätavalliseen numeroon on täysin hyvä syy, mutta kun käyttäjä esittelee kojelaudan tai raportin korkeammalle johdolle, hän haluaa pystyä poistamaan ”hälytyskellot”.

Voit myös korostaa tuoduista raakatiedoista, missä numerot ovat naurettavan suuria tai naurettavan pieniä. Tuodut tietoalueet ovat yleensä eri kokoisia kullekin ajanjaksolle, joten voit käyttää VBA: ta uuden dataluokan koon arvioimiseen ja lisätä ehdollisen muotoilun vain tälle alueelle.

Sinulla voi myös olla tilanne, jossa on lajiteltu luettelo nimistä, joissa on numeerisia arvoja, esim. työntekijän palkka, tentit. Ehdollisella muotoilulla voit siirtyä asteikkoväreistä korkeimmasta matalimpaan, mikä näyttää erittäin vaikuttavalta esitystarkoituksiin.

Nimiluettelo ei kuitenkaan aina ole staattinen, ja voit käyttää VBA -koodia päivittääksesi asteikkoväreiden asteikon alueen koon muutosten mukaan.

Yksinkertainen esimerkki ehdollisen muodon luomisesta alueelle

Tämä esimerkki määrittää ehdollisen muotoilun laskentataulukon solualueelle (A1: A10). Jos alueen arvo on välillä 100 ja 150, solun taustaväri on punainen, muuten sillä ei ole väriä.

1234567891011121314 Ehdollinen muotoiluEsimerkki ()"Määritä alueDim MyRange alueenaAseta MyRange = Range (“A1: A10”)"Poista olemassa oleva ehdollinen muotoilu alueeltaMyRange.FormatConditions.Delete"Käytä ehdollista muotoiluaMyRange.FormatConditions.Add Type: = xlCellValue, Operaattori: = xlBetween, _Kaava1: = "= 100", Kaava2: = "= 150"MyRange.FormatConditions (1) .Interior.Color = RGB (255, 0, 0)End Sub

Huomaa, että ensin määritämme alueen MyRange ehdollisen muotoilun käyttöön.

Seuraavaksi poistamme alueen kaikki ehdolliset muotoilut. Tämä on hyvä idea estää saman säännön lisääminen joka kerta, kun koodi suoritetaan (se ei tietenkään sovellu kaikissa olosuhteissa).

Värit annetaan numeroarvoina. Tätä varten on hyvä käyttää RGB -merkintöjä (punainen, vihreä, sininen). Voit käyttää tähän vakiovärivakioita esim. vbRed, vbBlue, mutta sinulla on vain kahdeksan värivaihtoehtoa.

Saatavilla on yli 16,7 miljoonaa väriä, ja RGB: n avulla voit käyttää niitä kaikkia. Tämä on paljon helpompaa kuin yrittää muistaa, mikä numero liittyy mihin tahansa väriin. Jokainen kolmesta RGB -värinumerosta on 0–255.

Huomaa, että "xlBetween" -parametri sisältää kaiken, joten solun arvot 100 tai 150 täyttävät ehdon.

Moniehtoinen muotoilu

Voit halutessasi määrittää useita ehdollisia sääntöjä tietoalueellesi, jotta kaikki alueen arvot kuuluvat eri ehtojen piiriin:

12345678910111213141516171819 Sub MultipleConditionalFormattingExample ()Dim MyRange alueena'Luo alueobjektiAseta MyRange = Range (“A1: A10”)'Poista aiemmat ehdolliset muodotMyRange.FormatConditions.Delete'Lisää ensimmäinen sääntöMyRange.FormatConditions.Add Type: = xlCellValue, Operaattori: = xlBetween, _Kaava1: = "= 100", Kaava2: = "= 150"MyRange.FormatConditions (1) .Interior.Color = RGB (255, 0, 0)'Lisää toinen sääntöMyRange.FormatConditions.Add Type: = xlCellValue, Operaattori: = xlLess, _Kaava1: = "= 100"MyRange.FormatConditions (2) .Interior.Color = vbBlue'Lisää kolmas sääntöMyRange.FormatConditions.Add Type: = xlCellValue, Operaattori: = xlGreater, _Kaava1: = "= 150"MyRange.FormatConditions (3) .Interior.Color = vbKeltainenEnd Sub

Tämä esimerkki määrittää ensimmäisen säännön kuten aiemmin, ja solun väri on punainen, jos solun arvo on välillä 100 ja 150.

Sitten lisätään vielä kaksi sääntöä. Jos solun arvo on alle 100, solun väri on sininen ja jos se on suurempi kuin 150, solun väri on keltainen.

Tässä esimerkissä sinun on varmistettava, että kaikki numeroiden mahdollisuudet on katettu ja että säännöt eivät ole päällekkäisiä.

Jos tyhjiä soluja on tällä alueella, ne näkyvät sinisinä, koska Excel pitää niiden arvoina edelleen alle 100.

Tapa kiertää on lisätä toinen ehto lausekkeeksi. Tämä on lisättävä koodin ensimmäisenä ehtosääntönä. On erittäin tärkeää, että jos on useita sääntöjä, on saatava oikea suoritusjärjestys, muuten tulokset voivat olla arvaamattomia.

1234567891011121314151617181920212223 Sub MultipleConditionalFormattingExample ()Dim MyRange alueena'Luo alueobjektiAseta MyRange = Range (“A1: A10”)'Poista aiemmat ehdolliset muodotMyRange.FormatConditions.Delete'Lisää ensimmäinen sääntöMyRange.FormatConditions.Add Type: = xlExpression, Formula1: = _"= LEN (TRIM (A1)) = 0"MyRange.FormatConditions (1) .Interior.Pattern = xlNone'Lisää toinen sääntöMyRange.FormatConditions.Add Type: = xlCellValue, Operaattori: = xlBetween, _Kaava1: = "= 100", Kaava2: = "= 150"MyRange.FormatConditions (2) .Interior.Color = RGB (255, 0, 0)'Lisää kolmas sääntöMyRange.FormatConditions.Add Type: = xlCellValue, Operaattori: = xlLess, _Kaava1: = "= 100"MyRange.FormatConditions (3) .Interior.Color = vbBlue"Lisää neljäs sääntöMyRange.FormatConditions.Add Type: = xlCellValue, Operaattori: = xlGreater, _Kaava1: = "= 150"MyRange.FormatConditions (4) .Interior.Color = RGB (0, 255, 0)End Sub

Tämä käyttää xlExpression -tyyppiä ja määrittää sen jälkeen Excel -vakiomallin avulla, onko solu tyhjä numeerisen arvon sijaan.

FormatConditions -objekti on osa Range -objektia. Se toimii samalla tavalla kuin kokoelma, jonka indeksi alkaa 1. Voit iteroida tämän objektin käyttämällä For… Next tai For… Jokainen silmukka.

Säännön poistaminen

Joskus sinun on ehkä poistettava yksittäinen sääntö useiden sääntöjen joukosta, jos se ei täytä tietovaatimuksia.

12345678910111213 Sub DeleteConditionalFormattingExample ()Dim MyRange alueena'Luo alueobjektiAseta MyRange = Range (“A1: A10”)'Poista aiemmat ehdolliset muodotMyRange.FormatConditions.Delete'Lisää ensimmäinen sääntöMyRange.FormatConditions.Add Type: = xlCellValue, Operaattori: = xlBetween, _Kaava1: = "= 100", Kaava2: = "= 150"MyRange.FormatConditions (1) .Interior.Color = RGB (255, 0, 0)'Poista sääntöMyRange.FormatConditions (1) PoistaEnd Sub

Tämä koodi luo uuden säännön alueelle A1: A10 ja poistaa sen. Poistaessasi sinun on käytettävä oikeaa hakemistonumeroa, joten tarkista Excelin käyttöliittymän Hallitse sääntöjä (tämä näyttää säännöt suoritusjärjestyksessä) varmistaaksesi, että saat oikean hakemistonumeron. Huomaa, että Excelissä ei ole peruutusmahdollisuutta, jos poistat ehdollisen muotoilusäännön VBA: ssa, toisin kuin jos teet sen Excelin käyttöliittymän kautta.

Säännön muuttaminen

Koska säännöt ovat kokoelma objekteja, jotka perustuvat tiettyyn alueeseen, voit helposti muuttaa tiettyjä sääntöjä VBA: n avulla. Todelliset ominaisuudet, kun sääntö on lisätty, ovat vain luku -muodossa, mutta voit muuttaa niitä Muokkaa-menetelmällä. Ominaisuudet, kuten värit, luetaan / kirjoitetaan.

123456789101112131415 AlamuutosConditionalFormattingExample ()Dim MyRange alueena'Luo alueobjektiAseta MyRange = Range (“A1: A10”)'Poista aiemmat ehdolliset muodotMyRange.FormatConditions.Delete'Lisää ensimmäinen sääntöMyRange.FormatConditions.Add Type: = xlCellValue, Operaattori: = xlBetween, _Kaava1: = "= 100", Kaava2: = "= 150"MyRange.FormatConditions (1) .Interior.Color = RGB (255, 0, 0)'Muuta sääntöäMyRange.FormatConditions (1) .Modify xlCellValue, xlLess, "10""Vaihda säännön väriMyRange.FormatConditions (1) .Interior.Color = vbVihreäEnd Sub

Tämä koodi luo alueobjektin (A1: A10) ja lisää säännön numeroille 100 ja 150. Jos ehto on tosi, solun väri muuttuu punaiseksi.

Sitten koodi muuttaa säännön numeroiksi, jotka ovat pienempiä kuin 10. Jos ehto on totta, solun väri muuttuu nyt vihreäksi.

Valmistetun värimallin käyttäminen

Excelin ehdollisessa muotoilussa voidaan käyttää asteikkovärejä nousevassa tai laskevassa järjestyksessä.

Tämä on erittäin hyödyllistä, jos sinulla on tietoja, kuten myyntiluvut maantieteellisen alueen, kaupunkilämpötilojen tai kaupunkien välisen etäisyyden mukaan. VBA: n avulla sinulla on lisäetu, että voit valita oman asteikkoväriisi Excel-käyttöliittymän vakiovärien sijasta.

1234567891011121314151617181920212223242526272829 Välttämättömät värit ()Dim MyRange alueena'Luo alueobjektiAseta MyRange = Range (“A1: A10”)'Poista aiemmat ehdolliset muodotMyRange.FormatConditions.Delete'Määrittele mittakaavan tyyppiMyRange.FormatConditions.AddColorScale ColorScaleType: = 3'Valitse väri alimmalle arvolle alueellaMyRange.FormatConditions (1) .ColorScaleCriteria (1) .Type = _xlConditionValueLowestValueMyRange.FormatConditions (1) .ColorScaleCriteria (1) .FormatColor.Väri = 7039480Lopeta'Valitse väri alueen keskiarvoilleMyRange.FormatConditions (1) .ColorScaleCriteria (2) .Type = _xlConditionValuePercentileMyRange.FormatConditions (1) .ColorScaleCriteria (2). Arvo = 50'Valitse alueen keskipisteen väriMyRange.FormatConditions (1) .ColorScaleCriteria (2) .FormatColor.Väri = 8711167Lopeta'Valitse väri, jolla on alueen suurin arvoMyRange.FormatConditions (1) .ColorScaleCriteria (3) .Type = _xlConditionValueHighestValueMyRange.FormatConditions (1) .ColorScaleCriteria (3) .FormatColor.Väri = 8109667LopetaEnd Sub

Kun tämä koodi suoritetaan, se siirtyy solun väreihin nousevien arvojen mukaan alueella A1: A10.

Tämä on erittäin vaikuttava tapa näyttää tiedot ja kiinnittää varmasti käyttäjien huomion.

Virhearvojen ehdollinen muotoilu

Kun sinulla on valtava määrä dataa, saatat helposti menettää virhearvon eri laskentataulukoissasi. Jos tämä esitetään käyttäjälle ratkaisematta, se voi johtaa suuriin ongelmiin ja käyttäjän luottamuksen menettämiseen numeroihin. Tämä käyttää solutyyppiä xlExpression ja IsErrorin Excel -funktiota solun arvioimiseen.

Voit luoda koodin siten, että kaikissa virheellisissä soluissa solun väri on punainen:

1234567891011 AlavirheConditionalFormattingExample ()Dim MyRange alueena'Luo alueobjektiAseta MyRange = Range (“A1: A10”)'Poista aiemmat ehdolliset muodotMyRange.FormatConditions.Delete'Lisää virhesääntöMyRange.FormatConditions.Add Type: = xlExpression, Formula1: = "= IsError (A1) = true"'Aseta sisätilojen väri punaiseksiMyRange.FormatConditions (1) .Interior.Color = RGB (255, 0, 0)End Sub

Ehdollinen muotoilu päivämäärille menneisyydessä

Saatat tuoda tietoja, joissa haluat korostaa menneitä päivämääriä. Esimerkki tästä voi olla velallisraportti, jossa haluat, että vanhat yli 30 päivän ikäiset laskujen päivämäärät erottuvat toisistaan.

Tämä koodi käyttää xlExpression sääntötyyppiä ja Excel -funktiota päivämäärien arvioimiseen.

1234567891011 Sub DateInPastConditionalFormattingExample ()Dim MyRange alueenaLuo alueobjekti päivämääräsarakkeen perusteellaAseta MyRange = Range (“A1: A10”)'Poista aiemmat ehdolliset muodotMyRange.FormatConditions.Delete'Lisää virhesääntö menneille päivämäärilleMyRange.FormatConditions.Add Type: = xlExpression, Formula1: = "= Now ()-A1> 30"'Aseta sisätilojen väri punaiseksiMyRange.FormatConditions (1) .Interior.Color = RGB (255, 0, 0)End Sub

Tämä koodi kestää päivämäärät alueella A1: A10 ja asettaa solun värin punaiseksi kaikille päivämäärille, jotka ovat yli 30 päivää aiemmin.

Ehdossa käytettävässä kaavassa Now () antaa nykyisen päivämäärän ja kellonajan. Tämä laskee jatkuvasti joka kerta, kun laskentataulukko lasketaan uudelleen, joten muotoilu muuttuu päivästä toiseen.

Tietopalkkien käyttö VBA: n ehdollisessa muotoilussa

VBA: n avulla voit lisätä tietopalkkeja numeroalueelle. Nämä ovat melkein kuin minikaavioita ja antavat välittömän kuvan siitä, kuinka suuret numerot ovat toisiinsa nähden. Hyväksymällä datapalkkien oletusarvot koodi on erittäin helppo kirjoittaa.

123456 AlidatapalkkiFormattingExample ()Dim MyRange alueenaAseta MyRange = Range (“A1: A10”)MyRange.FormatConditions.DeleteMyRange.FormatConditions.AddDatabarEnd Sub

Tiedot näyttävät tältä laskentataulukolta:

Kuvakkeiden käyttäminen ehdollisessa VBA -muotoilussa

Voit asettaa ehdollisen muotoilun avulla kuvakkeita numeroidesi viereen laskentataulukkoon. Kuvakkeet voivat olla nuolia tai ympyröitä tai erilaisia ​​muita muotoja. Tässä esimerkissä koodi lisää numeroihin nuolikuvakkeita niiden prosentuaalisten arvojen perusteella:

12345678910111213141516171819202122232425 AlakuvakeSetsExample ()Dim MyRange alueena'Luo alueobjektiAseta MyRange = Range (“A1: A10”)'Poista aiemmat ehdolliset muodotMyRange.FormatConditions.Delete'Lisää kuvakesarja FormatConditions -objektiinMyRange.FormatConditions.AddIconSetCondition'Aseta kuvakkeet nuoliksi - ehto 1MyRange.FormatConditions (1).IconSet = ActiveWorkbook.IconSets (xl3Arrows)Lopeta'aseta kuvakkeen ehdot vaaditulle prosenttiosuudelle - ehto 2MyRange.FormatConditions (1) .IconCriteria (2).Type = xlConditionValuePercent.Arvo = 33.Operator = xlGreaterEqualLopeta'aseta kuvakkeen ehdot vaaditulle prosenttiosuudelle - ehto 3MyRange.FormatConditions (1) .IconCriteria (3).Type = xlConditionValuePercentArvo = 67.Operator = xlGreaterEqualLopetaEnd Sub

Tämä antaa välittömän näkymän, joka osoittaa, onko luku suuri vai pieni. Tämän koodin suorittamisen jälkeen laskentataulukosi näyttää tältä:

Ehdollisen muotoilun käyttäminen korostaen viisi parasta

Voit käyttää VBA -koodia korostamaan 5 parasta numeroa tietoalueella. Käytät parametria nimeltä "AddTop10", mutta voit säätää koodin sijoituksen numeroksi 5. Käyttäjä saattaa haluta nähdä alueen suurimmat luvut ilman, että tietoja on ensin lajiteltava.

1234567891011121314151617181920212223 Sub Top5Example ()Dim MyRange alueena'Luo alueobjektiAseta MyRange = Range (“A1: A10”)'Poista aiemmat ehdolliset muodotMyRange.FormatConditions.Delete'Lisää Top10 -ehtoMyRange.FormatConditions.AddTop10MyRange.FormatConditions (1)'Aseta parametri ylhäältä alas.TopBottom = xlTop10Top'Aseta vain top 5Sijoitus = 5LopetaMyRange.FormatConditions (1)'Aseta fontin väri.Väri = -16383844LopetaMyRange.FormatConditions (1)'Aseta solun taustaväri.Väri = 13551615LopetaEnd Sub

Laskentataulukon tiedot näyttäisivät tältä koodin suorittamisen jälkeen:

Huomaa, että arvo 145 näkyy kahdesti, joten kuusi solua on korostettu.

StopIfTrue- ja SetFirstPriority -parametrien merkitys

StopIfTrue on tärkeä, jos solualueella on useita ehdollisia muotoilusääntöjä. Yksi alueen solu voi täyttää ensimmäisen säännön, mutta se voi täyttää myös seuraavat säännöt. Kehittäjänä saatat haluta sen näyttävän vain ensimmäisen säännön muotoilun. Muut sääntöehdot voivat olla päällekkäisiä ja tehdä tahattomia muutoksia, jos niiden sallitaan jatkaa sääntöjen luetteloa.

Tämän parametrin oletusarvo on True, mutta voit muuttaa sitä, jos haluat, että kaikki muut solun säännöt otetaan huomioon:

1 MyRange. FormatConditions (1) .StopIfTrue = False

SetFirstPriority -parametri määrää, arvioidaanko ehtoa koskeva sääntö ensin, kun kyseiselle solulle on useita sääntöjä.

1 MyRange. FormatConditions (1) .SetFirstPriority

Tämä siirtää kyseisen säännön sijainnin muotoehtojen kokoelman kohtaan 1, ja kaikki muut säännöt siirretään alaspäin muutetuilla indeksinumeroilla. Varo, jos teet muutoksia koodin sääntöihin indeksinumeroiden avulla. Sinun on varmistettava, että muutat tai poistat oikean säännön.

Voit muuttaa säännön prioriteettia:

1 MyRange. FormatConditions (1). Prioriteetti = 3

Tämä muuttaa ehdollisten muotojen luettelon muiden sääntöjen suhteellisia sijainteja.

Ehdollisen muotoilun käyttäminen viittaamalla muihin solun arvoihin

Tämä on yksi asia, jota Excelin ehdollinen muotoilu ei voi tehdä. Voit kuitenkin rakentaa oman VBA -koodisi tätä varten.

Oletetaan, että sinulla on tietosarake ja jokaisen numeron vieressä olevassa solussa on tekstiä, joka osoittaa, mitä muotoilua tulisi suorittaa jokaiselle numerolle.

Seuraava koodi tyhjentää numeroluettelosi, etsi viereisestä solusta tekstin muotoilua ja muotoile sitten numero tarpeen mukaan:

123456789101112131415161718192021 Sub ReferToAnotherCellForConditionalFormatting ()'Luo muuttujia, jotka säilyttävät taulukkotietojen rivien määränDim RR Niin kauan, N niin kauan'Kaappaa taulukon tietoalueen rivien määräRRow = ActiveSheet.UsedRange.Rows.Count'Toista kaikki taulukon tietoalueen rivitN = 1 RRow'Valitse Select Case -lausekkeen avulla muotoilu sarakkeen 2 perusteellaValitse Case ActiveSheet.Cells (N, 2)'Käännä sisätilojen väri siniseksiKotelo "sininen"ActiveSheet.Cells (N, 1) .Interior.Color = vbBlue'Käännä sisätilojen väri punaiseksiKotelo "Punainen"ActiveSheet.Cells (N, 1) .Interior.Color = vbRed'Käännä sisätilojen väri vihreäksiKotelo "Vihreä"ActiveSheet.Cells (N, 1) .Interior.Color = vbVihreäLopeta ValitseSeuraava N.End Sub

Kun tämä koodi on suoritettu, laskentataulukkosi näyttää nyt tältä:

Muotoiluun viitatut solut voivat olla missä tahansa laskentataulukossa tai jopa toisella työkirjan laskentataulukolla. Voit käyttää mitä tahansa tekstimuotoa muotoilun ehdoksi, ja vain mielikuvituksesi rajoittaa käyttötarkoituksia, joihin voit käyttää tätä koodia.

Operaattorit, joita voidaan käyttää ehdollisissa muotoilulausekkeissa

Kuten olet nähnyt edellisissä esimerkeissä, operaattoreita käytetään määrittämään, kuinka ehtoarvoja arvioidaan, esim. xlVäliin.

Näitä operaattoreita voidaan käyttää useita sen mukaan, miten haluat määrittää sääntöehdot.

Nimi Arvo Kuvaus
xlVäliin 1 Välillä. Voidaan käyttää vain, jos mukana on kaksi kaavaa.
xlTasainen 3 Yhtä suuri.
xlSuuri 5 Suurempi kuin.
xlGreaterEqual 7 Suurempi tai yhtä suuri kuin.
xlVähemmän 6 Vähemmän kuin.
xlLessEqual 8 Pienempi kuin tai yhtä suuri kuin.
xlNotBetween 2 Ei välillä. Voidaan käyttää vain, jos mukana on kaksi kaavaa.
xlEi yhtä 4 Ei tasa -arvoinen.

Tulet auttaa kehittämään sivuston jakaminen sivu ystävillesi

wave wave wave wave wave