Programowanie VBA, Excel, Access
Triki, sztuczki, żeby przyspieszyć sobie pracę z Excelem. Kursy Excel, Kursy Access, Kursy VBA Programowanie VBA, Excel, Access
piątek, 9 maja 2014
niedziela, 23 marca 2014
MAKRO - Usuwanie zbędnych spacji z zaznaczonych komórek
Często zdarza mi się dostać od kogoś plik w którym ktoś na początku lub końcu komórki w tekście wpisał spacje.
Jak się ich pozbyć?
Jak się ich pozbyć?
KOD
Sub usunZbedneSpacje()
On Error Resume Next
Dim komorka As Range '
zmienna która będzie wskazywała aktualną komórkę
For Each komorka In Selection ' dla każdej zaznaczonej komórki rób:
' trim - usuwa białe znaki z obu lewej i prawej tekstu.
komorka = Trim(komorka) ' wynik zapisujemy z powrotem do tej samej komórki
Next komorka ' koniec for. Czyli przejdź do następnej komórki
End Sub
KONIEC! Widzisz jakie proste?
A jeśli chcemy coś więcej....
Modyfikacje:
Potrzebujemy usunąć również podwójne spacje ze środka tekstu
wystarczy zamiast funkcji Trim użyć funkcji WorksheetFunction.Trim
czyli linijka może wyglądać tak:
komorka = WorksheetFunction.Trim(komorka)
Tutaj użyliśmy funkcji która dodatkowo wszystkie podwójne spacje zamienia na pojedyncze.
Jeśli chcesz usunąć wszystkie spacje z komórek.
komorka = replace(komorka, " ", "")
Funkcja Replace działa jak znajdź i zamień. Tutaj chcemy, żeby w komórce znalazł wszystkie spacje (" ") i je zlikwidował, czyli zamienił na nic ("")
Jeśli potrzebujemy usunąć spacje z konkretnego zakresu (a nie z zaznaczenia)
Pętla For each jest tak fajna, że możesz użyć jej również w tym przypadku.
Poniżej przykład pętli, która iteruje po wszystkich komórkach z zakresu od A1 do B20 oraz w kolumnie C:
For Each
komorka In Range("A1:B20,C:C")
Jeśli masz pytania / uwagi / propozycje jakie makra byłyby Ci potrzebne to pisz w komentarzach
poniedziałek, 5 sierpnia 2013
Excel - Formatowanie Warunkowe - zadanie i rozwiązanie
ZADANIE
Zadanie polega na wyróżnieniu wszystkich osób o wieku poniżej 30 lat.a) chcemy pokolorować tylko ich wiek
b) chcemy pokolorować cały wiersz w którym jest taka osoba
Do zadania będzie potrzebna baza osób kliknij tu (xlsx) lub tu (zip)
Najwygodniej rozwiązać to zadanie używając formatowania warunkowego.
Dzięki temu po zmianie danych kolorowanie komórek również się zmieni. (będzie aktualizowało się na bieżąco)
Rozwiązanie pkt a)
To do dzieła!
- Zaznaczamy wszystkie komórki zawierające wiek.
- z karty Narzędzia Główne wybieramy Formatowanie Warunkowe -> Nowa Reguła -> Formatuj komórki zawierające
- wpisujemy kryteria w kolejnych kratkach (konkretnie: wartość, mniejsza niż, 30)
- musimy jeszcze wybrać kolor na który mają sformatować się komórki spełniające kryteria, czyli Formatuj -> karta Wypełnienie -> wybieramy kolor
- Klikamy OK
Rozwiązanie pkt b)
- Zaznaczamy całą tabelę (bez nagłówków) a nie tylko wiek.
(bo jeśli wszyscy mieliby poniżej 30 lat, to chcemy kolorować wszystkie komórki) - z karty Narzędzia Główne wybieramy Formatowanie Warunkowe -> Nowa Reguła -> Użyj formuły do określenie komórek...
- wpisujemy formułę: =$E2 < 30
Formułę piszemy tak, żeby była prawdziwa jeśli komóreka ma być kolorowana, w przeciwnym razie ma dać w wyniku fałsz.
Formuła ma być napisana dla lewej górnej komórki (aktywnej) czyli w naszym przypadku dla A2
A po co znaczek $ ?
musimy wstawić go przed E, ponieważ Excel kopiując komórki powinien zawsze sprawdzać wiek (kolumnę E). Jeśli zabrakło by $ to Excel Dla liczb porządkowych działałoby prawidłowo, ale dla kolejnych kolumn przesuwałby kryteria w prawo (dla imion sprawdzałby zawód (kolumna F), a dla nazwisk kolumnę G) - nie zapomnij o zdefiniowaniu formatowania komórek (ja wybrałem kolor niebieski)
Subskrybuj:
Posty (Atom)