Tühjade lahtrite eemaldamine vahemikust

Probleemi sõnastamine

Meil on hulk lahtreid, mille andmed sisaldavad tühje lahtreid:

 

Ülesanne on eemaldada tühjad lahtrid, jättes alles ainult teabega lahtrid.

1. meetod. Karm ja kiire

  1. Algse vahemiku valimine
  2. Vajutage klahvi F5, nupp järgmine Esile tõstma (Eriline). Valige avanevas aknas Tühjad rakud(Tühjad) ja kliki OK.

    Tühjade lahtrite eemaldamine vahemikust

    Valitakse kõik vahemiku tühjad lahtrid.

  3. Anname menüüs käsu valitud lahtrite kustutamiseks: paremklõpsake- Kustuta lahtrid (Kustuta lahtrid) ülespoole nihutamisega.

2. meetod: massiivi valem

Lihtsustamise huvides nimetame oma töövahemikke kasutades Nimehaldur (Nimehaldur) tab valem (Valemid) või Excel 2003 ja vanemates versioonides menüü Sisesta – nimi – määra (Sisesta - nimi - määrake)

 

Nimetage vahemik B3:B10 Ole tühi, vahemik D3:D10 – PuudubTühi. Vahemikud peavad olema rangelt sama suurusega ja võivad asuda üksteise suhtes kõikjal.

Nüüd valige teise vahemiku esimene lahter (D3) ja sisestage see hirmutav valem:

=IF(RIDA() -RIDA(NoTühi)+1>NOTROWS(JahTühi)-COUNTTÜHIK(JahTühi);””;INDIRECT(ADDRESS(LOWEST((IF(Tühi<>“”,RIDA(Tühi);ROW()) + RIDAD (Seal on tühje))); LINE () - RIDA (pole tühja) + 1); VEerg (on tühje); 4)))

Ingliskeelses versioonis on see:

=IF(RIDA()-RIDA(Tühi pole)+1>RIAD(Tühi)-LOENDTÜHIK(Tühi),”,”,INDIRECT(ADDRESS(VÄIKE((IF(Tühi<>“”,RIDA(Tühi),RIDA)) +RIAD(Tühi))),RIDA()-RIDA(Tühi pole)+1),VEerg(tühi),4)))

Pealegi tuleb see sisestada massiivivalemina, st vajutada peale kleepimist sisene (nagu tavaliselt) ja Ctrl + Tõstuklahv + Sisesta. Nüüd saab valemi automaatse täitmise abil alla kopeerida (lohistage lahtri alumises paremas nurgas olevat musta risti) ja saame algse vahemiku, kuid ilma tühjade lahtriteta:

 

3. meetod. Kohandatud funktsioon VBA-s

Kui on kahtlus, et vahemikest tühjade lahtrite eemaldamise protseduuri tuleb sageli korrata, siis on parem lisada standardkomplekti üks kord oma tühjade lahtrite eemaldamise funktsioon ja kasutada seda kõigil järgnevatel juhtudel.

Selleks avage Visual Basicu redaktor (ALT + F11), sisestage uus tühi moodul (menüü Sisesta – moodul) ja kopeerige selle funktsiooni tekst sinna:

Funktsioon NoBlanks(Andmevahemik As Range) As Variant() Dim N Nii Long Dim N2 As Long Dim Rng As Range Dim MaxCells As Long Dim Result() Nagu Variant Dim R Nii Long Dim C As Long MaxCells = Application.WorksheetFunction.Max( _ Application.Caller.Cells.Count, DataRange.Cells.Count) ReDim Result (1 kuni MaxCells, 1 To 1) iga Rng jaoks jaotises DataRange.Cells If Rng.Value <> vbNullString then N = N + 1 Result(N, 1) ) = Rng.Value End If Next Rng For N2 = N + 1 To MaxCells Tulemus(N2, 1) = vbNullString Järgmine N2 Kui Application.Caller.Rows.Count = 1 Siis NoBlanks = Application.Transpose(Result) Else NoBlanks = Tulemus Lõpeta kui Lõpeta funktsioon  

Ärge unustage faili salvestada ja lülituda Visual Basicu redaktorist tagasi Excelile. Selle funktsiooni kasutamiseks meie näites toimige järgmiselt.

  1. Valige piisav hulk tühje lahtreid, näiteks F3:F10.
  2. Minge menüüsse Sisesta – funktsioon (Sisesta – funktsioon)või klõpsake nuppu Sisesta funktsioon (Sisesta funktsioon) tab valem (Valemid) Exceli uuemates versioonides. Kategoorias Kasutaja määratletud (kasutaja määratud) vali meie funktsioon Ei mingeid tühikuid.
  3. Määrake funktsiooni argumendiks tühimike (B3:B10) lähtevahemik ja vajutage Ctrl + Tõstuklahv + Sisestafunktsiooni sisestamiseks massiivivalemina.

:

  • Tabeli kõigi tühjade ridade korraga kustutamine lihtsa makroga
  • Kõigi tühjade ridade eemaldamine töölehel korraga PLEX-i lisandmooduli abil
  • Täitke kiiresti kõik tühjad lahtrid
  • Mis on makrod, kuhu VBA-s makrokood sisestada

 

Jäta vastus