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ć?

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!
  1. Zaznaczamy wszystkie komórki zawierające wiek.
  2. z karty Narzędzia Główne wybieramy Formatowanie Warunkowe -> Nowa Reguła -> Formatuj komórki zawierające
  3. wpisujemy kryteria w kolejnych kratkach (konkretnie: wartość, mniejsza niż, 30)
  4. musimy jeszcze wybrać kolor na który mają sformatować się komórki spełniające kryteria, czyli Formatuj -> karta Wypełnienie -> wybieramy kolor
  5. Klikamy OK
Możesz zobaczyć to tutaj

Rozwiązanie pkt b)

  1. 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)
  2. z karty Narzędzia Główne wybieramy Formatowanie Warunkowe -> Nowa Reguła -> Użyj formuły do określenie komórek...
  3. 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)
  4. nie zapomnij o zdefiniowaniu formatowania komórek (ja wybrałem kolor niebieski)
Możesz zobaczyć to tutaj