Innehållsförteckning
I den här handledningen får du lära dig tre olika sätt att dynamiskt markera raden och kolumnen i en markerad cell i Excel.
När du tittar på ett stort kalkylblad under en längre tid kan du till slut tappa bort var markören befinner sig och vilka data du tittar på. För att veta exakt var du befinner dig när som helst kan du få Excel att automatiskt markera den aktiva raden och kolumnen åt dig! Naturligtvis ska markeringen vara dynamisk och ändras varje gång du markerar en annan cell. Det är i princip det här som vi vill uppnå:
Auto-highlight rad och kolumn i vald cell med VBA
Det här exemplet visar hur du kan markera en aktiv kolumn och rad programmatiskt med VBA. För detta kommer vi att använda SelectionChange händelse av den Arbetsblad objekt.
Först tar du bort bakgrundsfärgen för alla celler på arket genom att ställa in ColorIndex till 0. Sedan markerar du hela raden och kolumnen i den aktiva cellen genom att ställa in deras ColorIndex till indexnumret för den önskade färgen.
Private Sub Worksheet_SelectionChange( ByVal Target As Range) If Target.Cells.Count> 1 Then Exit Sub Application.ScreenUpdating = False 'Rensa färgen på alla celler Cells.Interior.ColorIndex = 0 With Target 'Markera raden och kolumnen för den valda cellen .EntireRow.Interior.ColorIndex = 38 .EntireColumn.Interior.ColorIndex = 24 End With Application.ScreenUpdating = True End SubAnpassning av koden
Om du vill anpassa koden till dina behov kan dessa små tips vara till nytta:
- I vår exempelkod används två olika färger som visas i ovanstående gif - färgindex 38 för raden och 24 för kolumnen. Till ändra färg på markeringen ersätter du dem med valfria ColorIndex-koder.
- För att få raden och kolumnen färgade i på samma sätt Använd samma färgindexnummer för båda.
- Om du bara vill markera den aktiv rad ta bort eller kommentera denna rad: .EntireColumn.Interior.ColorIndex = 24
- Om du bara vill markera den aktiv kolumn ta bort eller kommentera denna rad: .EntireRow.Interior.ColorIndex = 38
Hur du lägger till koden i ditt kalkylblad
Om du vill att koden ska exekveras tyst i bakgrunden på ett visst arbetsblad måste du infoga den i kodfönstret som tillhör det arbetsbladet, inte i den normala modulen. För att göra det, utför följande steg:
- I arbetsboken trycker du på Alt + F11 för att komma till VBA-redigeraren.
- I Projektutforskaren till vänster visas en lista över alla öppna arbetsböcker och deras kalkylblad. Om du inte ser den kan du använda genvägen Ctrl + R för att visa fönstret Projektutforskaren.
- Hitta målarbetsboken. I dess Microsoft Excel-objekt mappen, dubbelklicka på det ark där du vill tillämpa markeringen. I det här exemplet är det Blad 1 .
- Klistra in ovanstående kod i kodfönstret till höger.
- Spara din fil som Arbetsbok med makroaktivering (.xlsm).
Fördelar : allt görs i backend; inga justeringar/anpassningar behövs på användarsidan; fungerar i alla Excel-versioner.
Nackdelar : Det finns två viktiga nackdelar som gör att denna teknik inte kan användas under vissa omständigheter:
- Koden rensar bakgrundsfärger Om du har färgade celler ska du inte använda den här lösningen eftersom din anpassade formatering då går förlorad.
- Exekvering av denna kod block funktionen för att ångra en åtgärd på arket, och du kan inte ångra en felaktig åtgärd genom att trycka på Ctrl + Z .
Markera aktiv rad och kolumn utan VBA
Det bästa du kan få för att markera den markerade raden och/eller kolumnen utan VBA är Excels villkorliga formatering. För att ställa in den utför du de här stegen:
- Välj det dataset som ska markeras.
- På den Hem på fliken Stilar grupp, klicka på Ny regel .
- I Ny formateringsregel dialogrutan, väljer du Använd en formel för att bestämma vilka celler som ska formateras .
- I Formatera värden där denna formel är sann ange en av dessa formler:
Markera aktiv rad :
=CELL("row")=ROW()
Markera aktiv kolumn :
=CELL("col")=COLUMN()
Markera aktiv rad och kolumn :
=OR(CELL("row")=ROW(), CELL("col")= COLUMN())
Se även: Hur man gör beräkningar i ExcelAlla formler använder sig av CELL-funktionen för att återge rad- och kolumnnumret för den valda cellen.
- Klicka på Format knappen, växla till den Fyll på och välj den färg du vill ha.
- Klicka på OK två gånger för att stänga båda dialogrutorna.
Om du känner att du behöver mer detaljerade instruktioner kan du läsa Hur man skapar formelbaserade villkorliga formateringsregler.
I det här exemplet valde vi OR-formeln för att skugga både kolumn och rad i samma färg. Det kräver mindre arbete och passar i de flesta fall.
Tyvärr är den här lösningen inte lika bra som VBA-lösningen eftersom den kräver omräkning av arket manuellt (genom att trycka på tangenten F9). Som standard räknar Excel om ett kalkylblad endast när nya data läggs in eller när befintliga data redigeras, men inte när markeringen ändras. Så du markerar en annan cell - ingenting händer. Tryck på F9 - bladet uppdateras, formeln räknas om och markeringen uppdateras.
Om du vill att kalkylbladet ska räknas om automatiskt när SelectionChange kan du placera den här enkla VBA-koden i kodmodulen i ditt målark som förklaras i det föregående exemplet:
Private Sub Worksheet_SelectionChange( ByVal Target As Range) Target.Calculate End SubKoden tvingar det valda intervallet/cell att räknas om, vilket i sin tur tvingar CELL-funktionen att uppdateras och den villkorliga formateringen att återspegla ändringen.
Fördelar : till skillnad från den tidigare metoden påverkar den här metoden inte den befintliga formateringen som du har tillämpat manuellt.
Nackdelar : kan försämra Excels prestanda.
- För att den villkorliga formateringen ska fungera måste du tvinga Excel att räkna om formeln vid varje ändring av urvalet (antingen manuellt med F9-tangenten eller automatiskt med VBA). Tvingade omräkningar kan göra Excel långsammare. Eftersom vår kod räknar om urvalet i stället för hela arket kommer en negativ effekt troligen bara att märkas på riktigt stora och komplexa arbetsböcker.
- Eftersom CELL-funktionen är tillgänglig i Excel 2007 och senare fungerar metoden inte i tidigare versioner.
Markera markerad rad och kolumn med hjälp av villkorlig formatering och VBA
Om den tidigare metoden saktar ner arbetsboken avsevärt kan du ta dig an uppgiften på ett annat sätt - i stället för att räkna om arbetsbladet vid varje rörelse av användaren kan du ta reda på det aktiva rad- och kolumnnumret med hjälp av VBA och sedan skicka det numret till funktionen ROW() eller COLUMN() med hjälp av formler för villkorlig formatering.
Här är de steg som du måste följa för att uppnå detta:
- Lägg till ett nytt tomt ark i arbetsboken och ge det namnet Hjälparblad Det enda syftet med det här arket är att lagra två siffror som representerar raden och kolumnen som innehåller en markerad cell, så att du säkert kan dölja arket vid ett senare tillfälle.
- Infoga nedanstående VBA i kodfönstret i det arbetsblad där du vill implementera markeringen. För detaljerade instruktioner hänvisar vi till vårt första exempel. 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
Ovanstående kod placerar koordinaterna för den aktiva raden och kolumnen i det ark som heter "Helper Sheet". Om du namngav ditt ark på ett annat sätt i steg 1 ändrar du arbetsbladets namn i koden i enlighet med detta. Radnumret skrivs till A2 och kolumnnumret till B2.
- Välj hela datasetet i målarbetsbladet och skapa en regel för villkorlig formatering med nedanstående formler. Steg-för-steg-vägledningen finns i exemplet ovan.
Nu ska vi gå igenom de tre viktigaste användningsområdena i detalj.
Hur man markerar den aktiva raden
Om du vill markera den rad där markören är placerad just nu, skapar du en regel för villkorlig formatering med den här formeln:
=ROW()="Hjälpartikel"!$A$2
Resultatet är att användaren tydligt kan se vilken rad som för närvarande är vald:
Hur man markerar den aktiva kolumnen
Om du vill markera den valda kolumnen matar du in kolumnnumret till funktionen COLUMN med den här formeln:
=COLUMN()="Hjälpartikel"!$B$2
Med en markerad kolumn kan du bekvämt och enkelt läsa vertikala data och fokusera helt och hållet på dem.
Hur man markerar aktiva rader och kolumner
Om du vill få både den markerade raden och kolumnen automatiskt skuggade i samma färg kombinerar du funktionerna ROW() och COLUMN() i en formel:
=OR(ROW()='Helper Sheet'!$A$2, COLUMN()='Helper Sheet'!$B$2)
De relevanta uppgifterna visas omedelbart, så att du kan undvika att läsa dem fel.
Fördelar : optimerad prestanda; fungerar i alla Excel-versioner
Nackdelar : den längsta inställningen
Så här markerar du kolumnen och raden i en markerad cell i Excel. Tack för att du läste och vi ses på vår blogg nästa vecka!
Arbetsbok för övning för nedladdning
Markering av aktiva rader och kolumner (.xlsm-fil)