Selectarea coordonatelor

Ai un monitor mare, dar mesele cu care lucrezi sunt și mai mari. Și, privind peste ecran în căutarea informațiilor necesare, există întotdeauna șansa de a vă „aluneca” ochii la următoarea linie și de a privi în direcția greșită. Cunosc chiar și oameni care, pentru astfel de ocazii, țin mereu aproape o riglă de lemn pentru a o atașa de linia de pe monitor. Tehnologiile viitorului! 

Și dacă rândul și coloana curente sunt evidențiate atunci când celula activă se deplasează pe foaie? Un fel de selecție de coordonate ca acesta:

Mai bine decât un conducător, nu?

Există mai multe moduri de complexitate diferită pentru a implementa acest lucru. Fiecare metodă are avantajele și dezavantajele sale. Să le aruncăm o privire în detaliu.

Metoda 1. Evident. Macro-comandă care evidențiază rândul și coloana curente

Cel mai evident mod de a ne rezolva problema „pe frunte” – avem nevoie de o macrocomandă care va urmări modificarea selecției pe foaie și va selecta întregul rând și coloana pentru celula curentă. De asemenea, este de dorit să putem activa și dezactiva această funcție dacă este necesar, astfel încât o astfel de selecție în formă de cruce să nu ne împiedice să introducem, de exemplu, formule, ci să funcționeze numai atunci când ne uităm prin listă în căutarea necesarului. informație. Acest lucru ne aduce la cele trei macrocomenzi (selectați, activați și dezactivați) care vor trebui adăugate la modulul de foaie.

Deschideți o foaie cu un tabel în care doriți să obțineți o astfel de selecție de coordonate. Faceți clic dreapta pe fila foii și selectați comanda din meniul contextual Text sursă (Cod sursa).Ar trebui să se deschidă fereastra Visual Basic Editor. Copiați acest text din aceste trei macrocomenzi în el:

Dim Coord_Selection As Boolean 'Variabilă globală pentru selecție activată/dezactivată Sub Selection_On() 'Macro la selecție Coord_Selection = True End Sub Selection_Off() 'Macro off selection Coord_Selection = False End Sub 'Procedura principală care efectuează selecția Private Sub Worksheet_SelectionChange(ByVal Target As Range) Dim WorkRange As Range If Target.Cells.Count > 1 Then Exit Sub 'dacă este selectată mai mult de 1 celulă, exit If Coord_Selection = False Then Exit Sub 'dacă selecția este dezactivată, ieșiți Application.ScreenUpdating = False Set WorkRange = Range ("A6:N300") „adresa intervalului de lucru în care este vizibilă selecția  

Schimbați adresa intervalului de lucru cu propria dvs. – în acest interval va funcționa selecția noastră. Apoi închideți Visual Basic Editor și reveniți la Excel.

Apăsați comanda rapidă de la tastatură ALT + F8pentru a deschide o fereastră cu o listă de macrocomenzi disponibile. Macro Selectie_Activată, după cum ați putea ghici, include selecția de coordonate pe foaia curentă și macrocomanda Selectie_Dezactivată – îl stinge. În aceeași fereastră, făcând clic pe butonul parametrii (Opțiuni) Puteți atribui comenzi rapide de la tastatură acestor macrocomenzi pentru o lansare ușoară.

Avantajele acestei metode:

  • relativă uşurinţă de implementare
  • selecție – operațiunea este inofensivă și nu modifică în niciun fel conținutul sau formatarea celulelor foii, totul rămâne așa cum este

Contra acestei metode:

  • o astfel de selecție nu funcționează corect dacă există celule îmbinate pe foaie - toate rândurile și coloanele incluse în unire sunt selectate simultan
  • dacă apăsați din greșeală tasta Delete, atunci nu numai celula activă va fi ștersă, ci întreaga zonă selectată, adică ștergeți datele din întreg rândul și coloana

Metoda 2. Original. CELL + Funcția de formatare condiționată

Această metodă, deși are câteva dezavantaje, mi se pare foarte elegantă. Pentru a implementa ceva folosind doar instrumentele Excel încorporate, introducerea minimă în programare în VBA este acrobație 😉

Metoda se bazează pe utilizarea funcției CELL, care poate oferi o mulțime de informații diferite despre o celulă dată – înălțime, lățime, număr rând-coloană, format de număr etc. Această funcție are două argumente:

  • un cuvânt de cod pentru parametru, cum ar fi „coloană” sau „rând”
  • adresa celulei pentru care dorim să determinăm valoarea acestui parametru

Trucul este că al doilea argument este opțional. Dacă nu este specificat, atunci celula activă curentă este luată.

A doua componentă a acestei metode este formatarea condiționată. Această caracteristică Excel extrem de utilă vă permite să formatați automat celulele dacă îndeplinesc condițiile specificate. Dacă combinăm aceste două idei într-una singură, obținem următorul algoritm pentru implementarea selecției noastre de coordonate prin formatare condiționată:

  1. Selectăm tabelul nostru, adică acele celule în care selectarea coordonatelor ar trebui să fie afișată în viitor.
  2. În Excel 2003 și mai vechi, deschideți meniul Format – Formatare condiționată – Formula (Format — Formatare condiționată — Formula). În Excel 2007 și mai nou – faceți clic pe filă Acasă (Acasă)buton Formatare condiționată – Creare regulă (Formatare condiționată — Creați regulă) și alegeți tipul de regulă Utilizați o formulă pentru a determina ce celule să formatați (Folosește formula)
  3. Introduceți formula pentru selecția noastră de coordonate:

    =SAU(CELULA(„rând”)=RÂND(A2),CELULA(„coloană”)=COLUMN(A2))

    =SAU(CELULA(«rând»)=RÂND(A1),CELULA(«coloană»)=COLOANĂ(A1))

    Această formulă verifică dacă numărul coloanei fiecărei celule din tabel este același cu numărul coloanei celulei curente. La fel și cu coloanele. Astfel, vor fi completate doar acele celule care au fie un număr de coloană, fie un număr de rând care se potrivește cu celula curentă. Și aceasta este selecția de coordonate în formă de cruce pe care dorim să o realizăm.

  4. presa Cadru (format) și setați culoarea de umplere.

Totul este aproape gata, dar există o nuanță. Faptul este că Excel nu consideră o modificare a selecției ca o modificare a datelor de pe foaie. Și, ca rezultat, nu declanșează recalcularea formulelor și recolorarea formatării condiționate numai atunci când poziția celulei active se schimbă. Prin urmare, să adăugăm o macrocomandă simplă la modulul de foaie care va face acest lucru. Faceți clic dreapta pe fila foii și selectați comanda din meniul contextual Text sursă (Cod sursa).Ar trebui să se deschidă fereastra Visual Basic Editor. Copiați acest text al acestei macrocomenzi simple în el:

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

Acum, când selecția se schimbă, va fi lansat procesul de recalculare a formulei cu funcția CELULĂ în formatare condiționată și inundați rândul și coloana curente.

Avantajele acestei metode:

  • Formatarea condiționată nu întrerupe formatarea personalizată a tabelului
  • Această opțiune de selecție funcționează corect cu celulele îmbinate.
  • Niciun risc de a șterge un întreg rând și coloană de date la un clic accidental Șterge.
  • Macro-urile sunt utilizate minim

Contra acestei metode:

  • Formula pentru formatarea condiționată trebuie introdusă manual.
  • Nu există o modalitate rapidă de a activa/dezactiva o astfel de formatare - este întotdeauna activată până când regula este ștearsă.

Metoda 3. Optimal. Formatare condiționată + macrocomenzi

Mijloace de aur. Folosim mecanismul de urmărire a selecției pe foaie folosind macrocomenzi din metoda-1 și îi adăugăm evidențiere sigură folosind formatarea condiționată de la metoda-2.

Deschideți o foaie cu un tabel în care doriți să obțineți o astfel de selecție de coordonate. Faceți clic dreapta pe fila foii și selectați comanda din meniul contextual Text sursă (Cod sursa).Ar trebui să se deschidă fereastra Visual Basic Editor. Copiați acest text din aceste trei macrocomenzi în el:

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("A7:N300") 'адрес рабочего диапазона с таблицей If Target.Count > 1 Then Exit Sub If Coord_Selection = False Then WorkRange.FormatConditions.Delete Exit Sub End If Application.ScreenUpdating (Updating.ScreenUpdating, = Interacțiunea interzisă (Targerea interacțiunii) = Interacțiunea interzisă WorkRange, Union(Target.EntireRow, Target.EntireColumn)) WorkRange.FormatConditions.Delete CrossRange.FormatConditions.Add Type:=xlExpression, Formula1:="=1" CrossRange.FormatConditions(1).Interior.ColorIndex = 33 Target.FormatConditions .Delete End If End Sub  

Nu uitați să schimbați adresa intervalului de lucru cu adresa tabelului. Închideți Visual Basic Editor și reveniți la Excel. Pentru a utiliza macrocomenzile adăugate, apăsați comanda rapidă de la tastatură ALT + F8  și procedați în același mod ca metoda 1. 

Metoda 4. Frumos. Suplimentul FollowCellPointer

Excel MVP Jan Karel Pieterse din Olanda oferă un add-on gratuit pe site-ul său UrmărițiCellPointer(36Kb), care rezolvă aceeași problemă prin desenarea liniilor de săgeți grafice folosind macrocomenzi pentru a evidenția rândul și coloana curente:

 

Frumoasa solutie. Nu fără probleme pe alocuri, dar cu siguranță merită încercat. Descărcați arhiva, despachetați-o pe disc și instalați suplimentul:

  • în Excel 2003 și mai vechi – prin meniu Serviciu – Suplimente – Prezentare generală (Instrumente — Suplimente — Răsfoiți)
  • în Excel 2007 și mai târziu, prin Fișier – Opțiuni – Suplimente – Du-te – Răsfoiește (Fișier — Opțiuni Excel — Suplimente — Accesați — Răsfoiți)

  • Ce sunt macrocomenzile, unde să inserați codul macro în Visual Basic

 

Lasă un comentariu