Tartalomjegyzék
Ebben a bemutatóban 3 különböző módszert ismerhet meg arra, hogy dinamikusan kiemelje a kiválasztott cella sorát és oszlopát az Excelben.
Ha hosszú ideig nézeget egy nagyméretű munkalapot, előbb-utóbb elveszítheti a fonalat, hogy hol van a kurzor, és milyen adatokat néz. Hogy minden pillanatban pontosan tudja, hol van, vegye rá az Excelt, hogy automatikusan kiemelje az aktív sort és oszlopot! Természetesen a kiemelésnek dinamikusnak kell lennie, és minden alkalommal változni kell, amikor egy másik cellát választ ki. Lényegében ezt szeretnénk elérni:
A kiválasztott cella sorának és oszlopának automatikus kiemelése VBA-val
Ez a példa azt mutatja be, hogy hogyan lehet egy aktív oszlopot és sort programozottan kiemelni a VBA segítségével. Ehhez a SelectionChange eseménye a Munkalap tárgy.
Először is, törölje a lap összes cellájának háttérszínét a ColorIndex tulajdonságát 0-ra. Ezután az aktív cella teljes sorát és oszlopát kiemeli azáltal, hogy beállítja a ColorIndex tulajdonságot a kívánt szín indexszámára.
Private Sub Worksheet_SelectionChange( ByVal Target As Range) If Target.Cells.Count> 1 Then Exit Sub Application.ScreenUpdating = False 'Az összes cella színének törlése Cells.Interior.ColorIndex = 0 With Target 'A kiválasztott cella sorának és oszlopának kiemelése .EntireRow.Interior.ColorIndex = 38 .EntireColumn.Interior.ColorIndex = 24 End With Application.ScreenUpdating = True End Sub.A kód testreszabása
Ha a kódot a saját igényeidhez szeretnéd igazítani, ezek az apró tippek jól jöhetnek:
- A mi példakódunk két különböző színt használ a fenti gifben - a 38-as színindexet a sorhoz és a 24-es színindexet az oszlophoz. a kiemelés színének megváltoztatása , csak cserélje ki ezeket tetszőleges ColorIndex-kódokra.
- A sorok és oszlopok színezéséhez a ugyanúgy , használja ugyanazt a színindexszámot mindkettőhöz.
- Csak a aktív sor , távolítsa el vagy kommentálja ki ezt a sort: .EntireColumn.Interior.ColorIndex = 24
- Csak a aktív oszlop , távolítsa el vagy kommentálja ki ezt a sort: .EntireRow.Interior.ColorIndex = 38
A kód hozzáadása a munkalaphoz
Ahhoz, hogy a kódot egy adott munkalap hátterében csendben futtassa, nem a normál modulba, hanem az adott munkalaphoz tartozó kódablakba kell beillesztenie. Ehhez a következő lépéseket kell végrehajtania:
- A munkafüzetben nyomja meg az Alt + F11 billentyűkombinációt a VBA-szerkesztőhöz.
- A bal oldali Project Explorerben az összes megnyitott munkafüzet és munkalapjaik listája látható. Ha nem látja, a Ctrl + R billentyűkombinációval hozza elő a Project Explorer ablakot.
- Keresse meg a célmunkafüzetet. Microsoft Excel objektumok mappában, kattintson duplán arra a lapra, amelyen a kiemelést alkalmazni szeretné. Ebben a példában ez a 1. lap .
- A jobb oldali Kód ablakban illessze be a fenti kódot.
- Mentsd el a fájlt Makró-képes munkafüzet (.xlsm).
Előnyök : minden a backendben történik; a felhasználó oldalán nincs szükség beállításokra/szokásokhoz való igazításra; minden Excel-verzióban működik.
Hátrányok : van két lényeges hátránya, ami miatt ez a technika bizonyos körülmények között nem alkalmazható:
- A kód törli a háttérszíneket Ha vannak színes cellái, ne használja ezt a megoldást, mert az egyéni formázás elveszik.
- A kód végrehajtása blokkok a visszavonás funkció a lapon, és a hibás műveletet nem tudja visszacsinálni a Ctrl + Z billentyűkombinációval.
Aktív sor és oszlop kiemelése VBA nélkül
A legjobb, amit VBA nélkül a kijelölt sor és/vagy oszlop kiemelésére kaphat, az Excel feltételes formázása. Ennek beállításához hajtsa végre a következő lépéseket:
- Válassza ki az adatkészletet, amelyben a kiemelést el kell végezni.
- A Home lapon, a Stílusok csoport, kattintson a Új szabály .
- A Új formázási szabály párbeszédpanelen válassza a Egy képlet segítségével határozza meg, hogy mely cellákat kell formázni .
- A Formázza azokat az értékeket, ahol ez a képlet igaz mezőbe írja be az alábbi képletek egyikét:
Kiemelni aktív sor :
=CELL("row")=ROW()
Kiemelni aktív oszlop :
=CELL("col")=COLUMN()
Kiemelni aktív sor és oszlop :
=OR(CELL("row")=ROW(), CELL("col")= COLUMN())
Minden képlet a CELL függvényt használja a kiválasztott cella sor- és oszlopszámának visszaadására.
- Kattintson a Formátum gomb megnyomásával váltson a Töltse ki a címet. lapot, és válassza ki a kívánt színt.
- Kattintson kétszer az OK gombra mindkét párbeszédablak bezárásához.
Ha úgy érzi, hogy részletesebb utasításokra van szüksége, tekintse meg a Hogyan hozzunk létre képletalapú feltételes formázási szabályt?
Ebben a példában a VAGY képletet választottuk az oszlop és a sor egyforma színű árnyékolásához. Ez kevesebb munkát igényel, és a legtöbb esetben megfelelő.
Sajnos ez a megoldás nem olyan szép, mint a VBA, mert a VBA-hez szükséges a lap kézi újraszámítása (az F9 billentyű lenyomásával). Alapértelmezés szerint az Excel csak új adatok bevitele vagy a meglévő adatok szerkesztése után számítja újra a munkalapot, de nem, ha a kijelölés megváltozik. Tehát kijelöl egy másik cellát - nem történik semmi. Nyomja meg az F9-et - a lap frissül, a képlet újraszámolódik, és a kiemelés frissül.
A munkalap automatikus újraszámításához, amikor a SelectionChange esemény bekövetkezik, ezt az egyszerű VBA-kódot a céllap kódmoduljában helyezheti el, ahogyan az előző példában elmagyaráztuk:
Private Sub Worksheet_SelectionChange( ByVal Target As Range) Target.Calculate End SubA kód a kijelölt tartomány/cella újraszámítását kényszeríti ki, ami viszont a CELL függvényt frissíti, és a feltételes formázást a változás tükrözésére kényszeríti.
Előnyök : az előző módszerrel ellentétben ez a módszer nem befolyásolja a meglévő, kézzel alkalmazott formázást.
Hátrányok : ronthatja az Excel teljesítményét.
- Ahhoz, hogy a feltételes formázás működjön, rá kell kényszerítenie az Excelt, hogy a képletet minden egyes kijelölésváltáskor újraszámítsa (vagy manuálisan az F9 billentyűvel, vagy automatikusan a VBA-val). Az erőltetett újraszámítások lelassíthatják az Excel-t. Mivel a kódunk a kijelölést számítja újra, nem pedig a teljes lapot, a negatív hatás valószínűleg csak a nagyon nagy és összetett munkafüzeteken lesz észrevehető.
- Mivel a CELL funkció az Excel 2007 és újabb verziókban érhető el, a módszer nem működik a korábbi verziókban.
A kijelölt sor és oszlop kiemelése feltételes formázás és VBA használatával
Ha az előző módszer jelentősen lelassítja a munkafüzetet, akkor másképp is megközelítheti a feladatot: ahelyett, hogy minden egyes felhasználói mozdulatnál újraszámolná a munkalapot, a VBA segítségével szerezze meg az aktív sor/oszlop számát, majd ezt a számot feltételes formázási képletek segítségével adja meg a ROW() vagy COLUMN() függvénynek.
Ehhez az alábbi lépéseket kell követnie:
- Adjunk hozzá egy új üres lapot a munkafüzethez, és nevezzük el úgy, hogy Segítő lap Ennek a lapnak egyetlen célja, hogy két számot tároljon, amelyek a kijelölt cellát tartalmazó sort és oszlopot jelölik, így később biztonságosan elrejtheti a lapot.
- Szúrja be az alábbi VBA-t annak a munkalapnak a kódablakába, ahol a kiemelést szeretné megvalósítani. A részletes utasításokat lásd az első példánkban. Private Sub Worksheet_SelectionChange( ByVal Target As Range) Application.ScreenUpdating = False Worksheets( "Helper Sheet" ).Cells(2, 1) = Target.Row Worksheets( "Helper Sheet" ).Cells(2, 2) = Target.Column Application.ScreenUpdating.= True End Sub
A fenti kód az aktív sor és oszlop koordinátáit a "Segédlap" nevű lapra helyezi. Ha az 1. lépésben máshogy nevezte el a lapot, ennek megfelelően változtassa meg a munkalap nevét a kódban. A sorszámot az A2-re, az oszlopszámot pedig a B2-re írja.
- A célmunkalapon jelölje ki a teljes adatkészletet, és hozzon létre egy feltételes formázási szabályt az alábbi képletekkel. A fenti példában lépésről-lépésre történő útmutatás található.
Most pedig részletesen foglalkozzunk a három fő felhasználási esettel.
Hogyan lehet kiemelni az aktív sort
Annak a sornak a kiemeléséhez, ahol a kurzor éppen áll, állítson be egy feltételes formázási szabályt ezzel a képlettel:
=ROW()='Helper Sheet'!$A$2
Ennek eredményeképpen a felhasználó világosan láthatja, hogy melyik sor van jelenleg kijelölve:
Hogyan lehet kiemelni az aktív oszlopot
A kiválasztott oszlop kiemeléséhez táplálja be az oszlop számát a COLUMN funkcióba ezzel a képlettel:
=COLUMN()='Helper Sheet'!$B$2
Mostantól a kiemelt oszlop lehetővé teszi, hogy kényelmesen és könnyedén olvassa a függőleges adatokat, teljes mértékben rájuk összpontosítva.
Aktív sor és oszlop kiemelése
Ahhoz, hogy a kijelölt sor és oszlop automatikusan ugyanolyan színűre árnyékolódjon, kombinálja a ROW() és COLUMN() függvényeket egy képletbe:
=OR(ROW()='Segédlap'!$A$2, COLUMN()='Segédlap'!$B$2)
A releváns adatok azonnal a fókuszba kerülnek, így elkerülheti a félreolvasást.
Előnyök : optimalizált teljesítmény; minden Excel verzióban működik
Hátrányok : a leghosszabb beállítás
Így lehet kiemelni egy kiválasztott cella oszlopát és sorát az Excelben. Köszönöm, hogy elolvastad, és várom a jövő heti blogunkon!
Gyakorlati munkafüzet letölthető
Aktív sor és oszlop kiemelése (.xlsm fájl)