vsebina
Formulacija problema
Imamo vrsto celic s podatki, ki vsebujejo prazne celice:
Naloga je odstraniti prazne celice in pustiti samo celice z informacijami.
Metoda 1. Grobo in hitro
- Izbira izvirnega obsega
- Pritisnite tipko F5, naslednji gumb Označite (Poseben). V oknu, ki se odpre, izberite Prazne celice(Prazne) in kliknite OK.
Izbrane so vse prazne celice v obsegu.
- V meniju damo ukaz za brisanje izbranih celic: desni klik - Izbriši celice (Izbriši celice) s premikom navzgor.
2. način: matrična formula
Za poenostavitev poimenujmo naša delovna območja z uporabo Upravitelj imen (Upravitelj imen) tab Formula (Formule) ali v Excelu 2003 in starejših meni Vstavi – Ime – Dodeli (Vstavi — Ime — Določi)
Poimenujte obseg B3:B10 HaveEmpty, obseg D3:D10 – NoneEmpty. Območja morajo biti popolnoma enake velikosti in se lahko nahajajo kjerkoli drug glede na drugega.
Zdaj izberite prvo celico drugega obsega (D3) in vanjo vnesite to strašljivo formulo:
=IF(ROW() -ROW(NoEmpty)+1>NOTROWS(YesEmpty)-COUNTBLANK(YesEmpty);””;INDIRECT(ADDRESS(LOWEST((IF(Empty<>“”,ROW(Empty);ROW() + ROWS(Prazne so))); LINE()-ROW(Ni praznih)+1); COLUMN(Prazne so); 4)))
V angleški različici bo to:
=IF(ROW()-ROW(NoEmpty)+1>ROWS(Empty)-COUNTBLANK(Empty),””,INDIRECT(ADDRESS(SMALL((IF(Empty<>“”,ROW(Empty),ROW() +ROWS(ImamPrazno))),ROW()-ROW(BrezPraznega)+1),COLUMN(ImamPrazno),4)))
Poleg tega ga je treba vnesti kot matrično formulo, tj. pritisniti po lepljenju Vnesite (kot ponavadi) in Ctrl + Shift + Enter. Zdaj lahko formulo kopirate s samodokončanjem (povlecite črni križ v spodnjem desnem kotu celice) - in dobili bomo izvirni obseg, vendar brez praznih celic:
3. način. Funkcija po meri v VBA
Če obstaja sum, da boste morali pogosto ponavljati postopek odstranjevanja praznih celic iz obsegov, potem je bolje, da dodate lastno funkcijo za odstranjevanje praznih celic v standardni nabor enkrat in jo uporabite v vseh naslednjih primerih.
Če želite to narediti, odprite urejevalnik Visual Basic (ALT + F11), vstavite nov prazen modul (meni Vstavi – Modul) in kopirajte besedilo te funkcije tja:
Funkcija NoBlanks(DataRange As Range) As Variant() Dim N As Long Dim N2 As Long Dim Rng As Range Dim MaxCells As Long Dim Result() As Variant Dim R As Long Dim C As Long MaxCells = Application.WorksheetFunction.Max( _ Application.Caller.Cells.Count, DataRange.Cells.Count) ReDim Result(1 To MaxCells, 1 To 1) Za vsak Rng v 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 Result(N2, 1) = vbNullString Next N2 If Application.Caller.Rows.Count = 1 Then NoBlanks = Application.Transpose(Result) Else NoBlanks = Rezultat Funkcija End If End
Ne pozabite shraniti datoteke in preklopiti nazaj z urejevalnika Visual Basic na Excel. Za uporabo te funkcije v našem primeru:
- Izberite zadosten obseg praznih celic, na primer F3:F10.
- Pojdite v meni Vstavi – funkcija (Vstavi — funkcija)ali kliknite na gumb Vstavi funkcijo (Vstavi funkcijo) tab Formula (Formule) v novejših različicah Excela. V kategoriji Uporabnik definiran (Uporabnik definiran) izberite našo funkcijo Noblanks.
- Določite izvorni obseg s prazninami (B3:B10) kot argument funkcije in pritisnite Ctrl + Shift + Enterza vnos funkcije kot matrične formule.
:
- Brisanje vseh praznih vrstic v tabeli hkrati s preprostim makrom
- Odstranjevanje vseh praznih vrstic na delovnem listu hkrati z uporabo dodatka PLEX
- Hitro zapolni vse prazne celice
- Kaj so makri, kam v VBA vstaviti kodo makra