Koordinatval

Du har en stor bildskärm, men borden du arbetar med är ännu större. Och när du tittar över skärmen på jakt efter den nödvändiga informationen finns det alltid en chans att "glida" dina ögon till nästa rad och titta åt fel håll. Jag känner till och med folk som vid sådana tillfällen alltid håller en linjal av trä nära sig för att fästa den på linan på monitorn. Framtidens teknik! 

Och om den aktuella raden och kolumnen är markerade när den aktiva cellen flyttas över arket? Ett slags koordinatval så här:

Bättre än en linjal, eller hur?

Det finns flera sätt att variera komplexiteten för att implementera detta. Varje metod har sina för- och nackdelar. Låt oss ta en titt på dem i detalj.

Metod 1. Uppenbar. Makro som markerar den aktuella raden och kolumnen

Det mest uppenbara sättet att lösa vårt problem "på pannan" - vi behöver ett makro som spårar förändringen i urvalet på arket och väljer hela raden och kolumnen för den aktuella cellen. Det är också önskvärt att kunna aktivera och inaktivera denna funktion vid behov, så att ett sådant korsformat urval inte hindrar oss från att skriva in till exempel formler, utan bara fungerar när vi tittar igenom listan i jakt på det nödvändiga information. Detta tar oss till de tre makron (välj, aktivera och inaktivera) som kommer att behöva läggas till i arkmodulen.

Öppna ett ark med en tabell där du vill få ett sådant koordinatval. Högerklicka på arkfliken och välj kommandot från snabbmenyn Källtext (Källkod).Visual Basic Editor-fönstret bör öppnas. Kopiera denna text av dessa tre makron till den:

Dim Coord_Selection As Boolean 'Global variabel för val på/av Sub Selection_On() 'Makro vid urval Coord_Selection = True End Sub Selection_Off() 'Macro off selection Coord_Selection = False End Sub 'Huvudprocedur som utför urval Private Sub Worksheet_SelectionChange(ByVal Target As Range) Dim WorkRange As Range If Target.Cells.Count > 1 Then Exit Sub 'om mer än 1 cell är markerad, avsluta If Coord_Selection = False Then Exit Sub 'om valet är av, avsluta Application.ScreenUpdating = False Set WorkRange = Range (" A6:N300") 'adress till arbetsområdet inom vilket urvalet är synligt  

Ändra adressen till arbetsområdet till din egen – det är inom detta intervall som vårt urval kommer att fungera. Stäng sedan Visual Basic Editor och återgå till Excel.

Tryck på kortkommandot ALT + F8för att öppna ett fönster med en lista över tillgängliga makron. Makro Selection_On, som du kanske kan gissa, inkluderar koordinatval på det aktuella arket och makrot Selection_Off – stänger av den. I samma fönster, genom att klicka på knappen parametrar (Alternativ) Du kan tilldela kortkommandon till dessa makron för enkel start.

Fördelar med denna metod:

  • relativt enkel implementering
  • urval – operationen är ofarlig och ändrar inte innehållet eller formateringen av arkcellerna på något sätt, allt förblir som det är

Nackdelar med denna metod:

  • ett sådant urval fungerar inte korrekt om det finns sammanslagna celler på arket – alla rader och kolumner som ingår i föreningen väljs samtidigt
  • om du av misstag trycker på Delete-tangenten kommer inte bara den aktiva cellen att raderas utan hela det markerade området, dvs radera data från hela raden och kolumnen

Metod 2. Original. CELL + villkorlig formateringsfunktion

Denna metod, även om den har ett par nackdelar, verkar för mig mycket elegant. För att implementera något med enbart de inbyggda Excel-verktygen, är minimalt med programmering i VBA konstflygning 😉

Metoden bygger på att använda funktionen CELL, som kan ge mycket olika information om en given cell – höjd, bredd, rad-kolumnnummer, talformat, etc. Denna funktion har två argument:

  • ett kodord för parametern, till exempel "kolumn" eller "rad"
  • adressen till cellen för vilken vi vill bestämma värdet på denna parameter

Tricket är att det andra argumentet är valfritt. Om det inte anges, tas den aktuella aktiva cellen.

Den andra komponenten i denna metod är villkorlig formatering. Denna extremt användbara Excel-funktion låter dig formatera celler automatiskt om de uppfyller specificerade villkor. Om vi ​​kombinerar dessa två idéer till en får vi följande algoritm för att implementera vårt koordinatval genom villkorlig formatering:

  1. Vi väljer vår tabell, dvs de celler där koordinatvalet ska visas i framtiden.
  2. Öppna menyn i Excel 2003 och äldre Format – Villkorlig formatering – Formel (Format — Villkorlig formatering — Formel). I Excel 2007 och senare – klicka på fliken Hem (Hem)Knappen Villkorlig formatering – Skapa regel (Villkorlig formatering – Skapa regel) och välj regeltyp Använd en formel för att bestämma vilka celler som ska formateras (Använd formel)
  3. Ange formeln för vårt koordinatval:

    =ELLER(CELL(“rad”)=RAD(A2),CELL(“kolumn”)=KOLUMN(A2))

    =ELLER(CELL(«rad»)=RAD(A1),CELL(«kolumn»)=KOLUMN(A1))

    Den här formeln kontrollerar om kolumnnumret för varje cell i tabellen är detsamma som kolumnnumret för den aktuella cellen. Likaså med kolumner. Således kommer endast de celler som har antingen ett kolumnnummer eller ett radnummer som matchar den aktuella cellen att fyllas i. Och detta är det korsformade koordinatvalet som vi vill uppnå.

  4. tryck Ramverk (Formatera) och ställ in fyllningsfärgen.

Allt är nästan klart, men det finns en nyans. Faktum är att Excel inte betraktar en förändring i urvalet som en förändring av uppgifterna på arket. Och som ett resultat utlöser det inte omberäkning av formler och omfärgning av villkorlig formatering endast när positionen för den aktiva cellen ändras. Låt oss därför lägga till ett enkelt makro till arkmodulen som kommer att göra detta. Högerklicka på arkfliken och välj kommandot från snabbmenyn Källtext (Källkod).Visual Basic Editor-fönstret bör öppnas. Kopiera denna text av detta enkla makro till det:

Private Sub Worksheet_SelectionChange(ByVal Target As Range) ActiveCell.Calculate End Sub  

Nu, när urvalet ändras, kommer processen att räkna om formeln med funktionen att startas CELL i villkorlig formatering och översvämma den aktuella raden och kolumnen.

Fördelar med denna metod:

  • Villkorlig formatering bryter inte anpassad tabellformatering
  • Detta valalternativ fungerar korrekt med sammanslagna celler.
  • Ingen risk att radera en hel rad och kolumn med data vid oavsiktligt klick Radera.
  • Makron används minimalt

Nackdelar med denna metod:

  • Formeln för villkorlig formatering måste anges manuellt.
  • Det finns inget snabbt sätt att aktivera/avaktivera sådan formatering – den är alltid aktiverad tills regeln tas bort.

Metod 3. Optimal. Villkorlig formatering + makron

Gyllene medelväg. Vi använder mekanismen för att spåra urvalet på arket med hjälp av makron från metod-1 och lägger till säker markering till det med villkorlig formatering från metod-2.

Öppna ett ark med en tabell där du vill få ett sådant koordinatval. Högerklicka på arkfliken och välj kommandot från snabbmenyn Källtext (Källkod).Visual Basic Editor-fönstret bör öppnas. Kopiera denna text av dessa tre makron till den:

Dim Coord_Selection As Boolean Sub Selection_On() Coord_Selection = True End Sub Sub Selection_Off() Coord_Selection = False End Sub Private Sub Worksheet_SelectionChange(ByVal Target As Range) Dim WorkRange As Range, CrossRange As Range Set WorkRange = Range("7"):N300") 'адрес рабочего диапазона с таблицей If Target.Count > 1 Then Exit Sub If Coord_Selection = False Then WorkRange.FormatConditions.Delete Exit Sub End If Application.ScreenUpdating = False If Not Is Not Intersect(RangegetR) WorkRange, Union(Target.EntireRow, Target.EntireColumn)) WorkRange.FormatConditions.Delete CrossRange.FormatConditions.Add Typ:=xlExpression, Formula1:="=1" CrossRange.FormatConditions(1).Interior.ColorIndex.FormatConditions.FormatConditions .Ta bort End If End Sub  

Glöm inte att ändra arbetsintervallsadressen till din bordadress. Stäng Visual Basic Editor och återgå till Excel. För att använda de tillagda makron, tryck på kortkommandot ALT + F8  och fortsätt på samma sätt som metod 1. 

Metod 4. Vackert. FollowCellPointer-tillägget

Excel MVP Jan Karel Pieterse från Nederländerna ger bort ett gratis tillägg på sin hemsida Följ CellPointer(36Kb), vilket löser samma problem genom att rita grafiska pillinjer med hjälp av makron för att markera den aktuella raden och kolumnen:

 

Fin lösning. Inte utan fel på sina ställen, men definitivt värt ett försök. Ladda ner arkivet, packa upp det till disk och installera tillägget:

  • i Excel 2003 och äldre – via menyn Service – Tillägg – Översikt (Verktyg — Tillägg — Bläddra)
  • i Excel 2007 och senare, till och med Arkiv – Alternativ – Tillägg – Gå – Bläddra (Arkiv — Excel-alternativ — Tillägg — Gå till — Bläddra)

  • Vad är makron, var ska man infoga makrokod i Visual Basic

 

Kommentera uppropet