Koordinačių pasirinkimas

Turite didelį monitorių, bet stalai, su kuriais dirbate, yra dar didesni. O žvelgiant per ekraną ieškant reikalingos informacijos, visada yra galimybė „nuleisti“ akis į kitą eilutę ir pažvelgti ne ta kryptimi. Net pažįstu žmonių, kurie tokioms progoms visada prie savęs laiko medinę liniuotę, kad ją pritvirtintų prie monitoriaus linijos. Ateities technologijos! 

Ir jei dabartinė eilutė ir stulpelis yra paryškinti, kai aktyvus langelis juda lape? Toks koordinačių pasirinkimas:

Geriau nei valdovas, tiesa?

Yra keli įvairaus sudėtingumo būdai tai įgyvendinti. Kiekvienas metodas turi savo privalumų ir trūkumų. Pažvelkime į juos išsamiai.

1 būdas. Akivaizdu. Makrokomandas, paryškinantis dabartinę eilutę ir stulpelį

Akivaizdžiausias būdas išspręsti mūsų problemą „ant kaktos“ – mums reikia makrokomandos, kuri sektų pasirinkimo pasikeitimą lape ir pasirinktų visą dabartinio langelio eilutę ir stulpelį. Taip pat pageidautina, kad prireikus šią funkciją būtų galima įjungti ir išjungti, kad toks kryžiaus formos pasirinkimas netrukdytų įvesti, pavyzdžiui, formulių, o veiktų tik tada, kai peržiūrime sąrašą ieškodami reikalingos informacija. Taip pateksime į tris makrokomandas (pasirinkti, įjungti ir išjungti), kurias reikės įtraukti į lapo modulį.

Atidarykite lapą su lentele, kurioje norite gauti tokį koordinačių pasirinkimą. Dešiniuoju pelės mygtuku spustelėkite lapo skirtuką ir kontekstiniame meniu pasirinkite komandą Šaltinio tekstas (Pirminis kodas).Turėtų atsidaryti „Visual Basic“ rengyklės langas. Nukopijuokite į jį šį šių trijų makrokomandų tekstą:

Dim Coord_Selection As Boolean 'Visuotinis pasirinkimo kintamasis įjungti/išjungti Sub Selection_On() 'Makrokomandą pasirenkant Coord_Selection = True End Sub Selection_Off() 'Makrokomandos išjungtas pasirinkimas Coord_Selection = Klaidingos pabaigos sub 'Pagrindinė procedūra, kuri atlieka pasirinkimą Private Sub Worksheet(sValC) Diapazonas) Dim WorkRange kaip diapazonas Jei Target.Cells.Count > 1 Tada Išeikite iš sub 'jei pasirinkta daugiau nei 1 langelis, išeikite Jei Coord_Selection = False Tada Išeikite iš sub "jei pasirinkimas išjungtas, išeikite Application.ScreenUpdating = False Set WorkRange = diapazonas („A6:N300“) „darbo diapazono, kuriame matomas pasirinkimas, adresas  

Pakeiskite darbo diapazono adresą į savo – būtent šiame diapazone veiks mūsų pasirinkimas. Tada uždarykite „Visual Basic“ rengyklę ir grįžkite į „Excel“.

Paspauskite spartųjį klavišą ALT + F8norėdami atidaryti langą su galimų makrokomandų sąrašu. Makro Pasirinkimas_Įjungtas, kaip galite atspėti, apima koordinačių pasirinkimą dabartiniame lape ir makrokomandą Pasirinkimas_Išjungtas – išjungia. Tame pačiame lange paspausdami mygtuką Parametrai (Galimybės) Šioms makrokomandoms galite priskirti sparčiuosius klavišus, kad būtų lengviau paleisti.

Šio metodo privalumai:

  • santykinis įgyvendinimo paprastumas
  • pasirinkimas – operacija nekenksminga ir niekaip nekeičia lapo langelių turinio ar formatavimo, viskas lieka kaip yra

Šio metodo trūkumai:

  • toks pasirinkimas neveikia tinkamai, jei lape yra sujungtų langelių – visos į jungtį įtrauktos eilutės ir stulpeliai parenkami iš karto
  • jei netyčia paspausite klavišą Delete, bus išvalytas ne tik aktyvus langelis, bet ir visa pasirinkta sritis, ty ištrinami duomenys iš visos eilutės ir stulpelio

2 metodas. Originalus. CELL + sąlyginio formatavimo funkcija

Šis metodas, nors ir turi porą trūkumų, man atrodo labai elegantiškas. Norint ką nors įgyvendinti naudojant tik įmontuotus Excel įrankius, minimalus įsikišimas į programavimą VBA yra akrobatika 😉

Metodas pagrįstas funkcijos CELL naudojimu, kuri gali suteikti daug įvairios informacijos apie tam tikrą langelį – aukštį, plotį, eilutės-stulpelio numerį, skaičių formatą ir kt. Ši funkcija turi du argumentus:

  • parametro kodinis žodis, pvz., „stulpelis“ arba „eilutė“
  • langelio, kuriam norime nustatyti šio parametro reikšmę, adresas

Apgaulė ta, kad antrasis argumentas yra neprivalomas. Jei jis nenurodytas, paimamas dabartinis aktyvus langelis.

Antrasis šio metodo komponentas yra sąlyginis formatavimas. Ši itin naudinga „Excel“ funkcija leidžia automatiškai formatuoti langelius, jei jie atitinka nurodytas sąlygas. Jei šias dvi idėjas sujungsime į vieną, gausime tokį koordinačių pasirinkimo algoritmą naudojant sąlyginį formatavimą:

  1. Mes pasirenkame savo lentelę, ty tuos langelius, kuriuose ateityje turėtų būti rodomas koordinačių pasirinkimas.
  2. „Excel 2003“ ir senesnėse versijose atidarykite meniu Formatas – Sąlyginis formatavimas – Formulė (Formatas – sąlyginis formatavimas – formulė). „Excel 2007“ ir naujesnėje versijoje spustelėkite skirtuką Pagrindinis (Namai)mygtukas Sąlyginis formatavimas – sukurti taisyklę (Sąlyginis formatavimas – sukurti taisyklę) ir pasirinkite taisyklės tipą Norėdami nustatyti, kuriuos langelius formatuoti, naudokite formulę (Naudokite formulę)
  3. Įveskite mūsų koordinačių pasirinkimo formulę:

    =ARBA(CELL("eilutė")=ROW(A2),CELL("stulpelis"=Stulpelis(A2))

    =arba

    Ši formulė patikrina, ar kiekvienos lentelės langelio stulpelio numeris sutampa su dabartinio langelio stulpelio numeriu. Taip pat ir su stulpeliais. Taigi, bus užpildyti tik tie langeliai, kurių stulpelio numeris arba eilutės numeris atitinka esamą langelį. Ir tai yra kryžiaus formos koordinačių pasirinkimas, kurį norime pasiekti.

  4. Spustelėkite mygtuką Struktūra (Formatas) ir nustatykite užpildymo spalvą.

Viskas beveik paruošta, tačiau yra vienas niuansas. Faktas yra tas, kad „Excel“ pasirinkimo pakeitimo nelaiko lapo duomenų pasikeitimu. Ir dėl to jis nesukelia formulių perskaičiavimo ir sąlyginio formatavimo perspalvinimo tik tada, kai pasikeičia aktyvaus langelio padėtis. Todėl prie lapo modulio pridėkime paprastą makrokomandą, kuri tai padarys. Dešiniuoju pelės mygtuku spustelėkite lapo skirtuką ir kontekstiniame meniu pasirinkite komandą Šaltinio tekstas (Pirminis kodas).Turėtų atsidaryti „Visual Basic“ rengyklės langas. Nukopijuokite į jį šį šios paprastos makrokomandos tekstą:

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

Dabar, pasikeitus pasirinkimui, bus paleistas formulės perskaičiavimo su funkcija procesas LĄSTELĖ sąlyginiu formatavimu ir užtvindykite dabartinę eilutę bei stulpelį.

Šio metodo privalumai:

  • Sąlyginis formatavimas nepažeidžia pasirinktinio lentelės formatavimo
  • Ši pasirinkimo parinktis tinkamai veikia su sujungtais langeliais.
  • Nėra rizikos, kad atsitiktinai spustelėsite visą duomenų eilutę ir stulpelį panaikinti.
  • Makrokomandos naudojamos minimaliai

Šio metodo trūkumai:

  • Sąlyginio formatavimo formulė turi būti įvesta rankiniu būdu.
  • Nėra greito būdo įjungti / išjungti tokį formatavimą – jis visada įjungtas, kol taisyklė neištrinama.

3 metodas. Optimalus. Sąlyginis formatavimas + makrokomandos

Aukso vidurkis. Naudojame pasirinkimo sekimo lape mechanizmą naudodami makrokomandas iš 1 metodo ir pridedame saugų paryškinimą naudodami sąlyginį formatavimą iš 2 metodo.

Atidarykite lapą su lentele, kurioje norite gauti tokį koordinačių pasirinkimą. Dešiniuoju pelės mygtuku spustelėkite lapo skirtuką ir kontekstiniame meniu pasirinkite komandą Šaltinio tekstas (Pirminis kodas).Turėtų atsidaryti „Visual Basic“ rengyklės langas. Nukopijuokite į jį šį šių trijų makrokomandų tekstą:

Pritemdyti Coord_Selection As Boolean Sub Selection_On() Coord_Selection = True End Sub Sub Selection_Off() Coord_Selection = Klaidinga Pabaiga Privatus Sub Worksheet_SelectionChange (ByVal Target As Range) Pritemd WorkRange kaip diapazonas, CrossRange kaip diapazonas, CrossRange kaip diapazonas, CrossRange kaip 7 diapazonas 'адрес рабочего диапазона с таблицей If Target.Count > 300 then Exit Sub If Coord_Selection = False then WorkRange.FormatConditions.Delete Exit Sub End If Application.ScreenUpdating = Netiesa, jei nesikerta(CrossTiksl.), No RangeTarget. WorkRange, Union(Target.EntireRow, Target.EntireColumn)) WorkRange.FormatConditions.Delete CrossRange.FormatConditions.Add Type:=xlExpression, Formula1:="=1" CrossRange.FormatConditions(1).Interior.ColorIndex =1ditions .Ištrinti End If End Sub  

Nepamirškite pakeisti darbo diapazono adreso į lentelės adresą. Uždarykite „Visual Basic“ rengyklę ir grįžkite į „Excel“. Norėdami naudoti pridėtas makrokomandas, paspauskite spartųjį klavišą ALT + F8  ir tęskite taip pat, kaip ir 1 metodu. 

4 būdas. Gražu. FollowCellPointer priedas

„Excel“ MVP Janas Karelas Pieterse'as iš Nyderlandų savo svetainėje dovanoja nemokamą priedą Sekite CellPointer(36 Kb), kuri išsprendžia tą pačią problemą nubrėždama grafines rodyklių linijas, naudojant makrokomandas, kad būtų paryškinta dabartinė eilutė ir stulpelis:

 

Puikus sprendimas. Ne be nesklandumų vietomis, bet pabandyti tikrai verta. Atsisiųskite archyvą, išpakuokite jį į diską ir įdiekite priedą:

  • „Excel 2003“ ir senesnėse versijose – per meniu Paslauga – Priedai – Apžvalga (Įrankiai – Priedai – Naršyti)
  • „Excel 2007“ ir naujesnėje versijoje, per Failas – Parinktys – Priedai – Eiti – Naršyti (Failas — „Excel“ parinktys — Priedai — Eiti į — Naršyti)

  • Kas yra makrokomandos, kur įterpti makrokomandos kodą „Visual Basic“.

 

Palikti atsakymą