Poprawka do poprzedniego posta

January 25th, 2012

Sprawdziłem reguły wpisywania znaków rozdzielających argumenty w funkcji JEŻELI. W przypadku polskiej wersji Excela są to przecinki, a wersji angielskojęzycznej, którą dysponuję są to średniki, za pomyłkę przepraszam. Opis funkcji pod schematem blokowym (zawarty też w pliku PDF) jest prawidłowy.

Excel 2010 zagnieżdżenie funkcji jeżeli - jeszcze raz o tym

January 7th, 2012

Dość dawno temu pisałem o zagnieżdżonej funkcji JEŻELI w Excelu, a ponieważ doszedłem do wniosku że dałoby się to łatwiej wyjaśnić postanowiłem napisać o tym ponownie.

Funkcja IF lub po polsku JEŻELI ma następującą konstrukcję

JEŻELI (test logiczny; wartość jeśli prawda; wartość jeśli fałsz) - tego możemy się dowiedzieć z pomocy w Excelu.

Jeśli rozumiemy istotę działania tej funkcji to jej zagnieżdżenie nie sprawi nam już żadnego problemu
Z tej prostej definicji wynikają następujące wnioski:
- Argument pierwszy - test logiczny - ma za zadanie porównać coś z czymś

testem logicznym może być na przykład:
A1 > C1
D1 < 20
E2 > SUMA(A1:D1)
itp

- Argument drugi - wartość jeśli prawda - w tym miejscu wpisujemy konkretną wartość jak na przykład
1, 100, “Franek” itp
lub …
właśnie …
Może to być funkcja jak SUMA(A10:A100), PRAWY(tekst,2), JEŻELI(tl;wjp;wjf)

Argument trzeci właściwie może być tym samym pod względem definicji co argument drugi z tą różnicą że obowiązuje dla niespełnionego testu logicznego czyli np A1>C1 jest nieprawdą bo w komórce C1 wpisaliśmy wartość większą niż jest a A1

Argumenty oddzielamy średnikami ( ; ) a tam gdzie trzeba dajemy nawiasy - zresztą ich pomijanie jest najczęstszą przyczyną błędów
Jak widzimy nic nie stoi na przeszkodzie aby zagnieżdżoną funkcję jeżeli zapisać na przykład tak

JEŻELI( test_logiczny_główny;instrukcja_wewnętrzna_JEŻELI_dla_PRAWDY; instrukcja_wewnętrzna_JEŻELI_dla_FAŁSZU)

p> instrukcja_wewnętrzna_JEŻELI jest podobna do tej nadrzędnej

Dla jakiegoś przykładu

Rysunek i postać funkcji.

Funkcja zagnieżdżona jeżeli

Schemat w pliku pdf

Postać funkcji
= IF(A1 > C1; IF(A1 < D1; "Wartosc jest w zadanym zakresie"; "Wartosc przekracza zadany zakres"); IF(A1=C1; "Wartosc minimalna"; "Wartosc ponizej zadanego zakresu"))

Uwaga:
Powyżej skopiowałem regułę, której użyłem w anglojęzycznej wersji Excela aby poprawnie działała należy zamienić słowo IF na JEŻELI w każdym miejscu formuły.

przykłady dla różnych wartości A1

jezeli_przyklady.png

Excel i VBA - formatowanie warunkowe inaczej

December 31st, 2011

Kiedyś już pisałem jak można formatować komórki w excelu za pomocą funkcji formatowania warunkowego. W większości przypadków jest to zupełnie wystarczająca umiejętność.
Jest jednak sposób który zabezpieczy dodatkowo nasze arkusze przed nieumyślnym skasowaniem lub nadpisaniem reguł formatowania, tym bardziej że do edytora Visual Basic osoby z nim nieobeznane bardzo niechętnie zaglądają :) nawet gdybyśmy nie zabezpieczyli dostępu do odczytania samego makra.

W dalszym ciągu będziemy korzystać z przykładu omówionego poprzednio nieco go tylko poszerzając.

vba_fw__r_dane.png

Wiemy już jak określić ostatnią kolumnę i ostatni wiersz.

vba_fw__r_granice.png

Tym razem chcę wprowadzić coś nowszego polegającego na użyciu pętli for…next wewnątrz której będzie kilka instrukcji warunkowych if i w zależności od wartości w komórce wykona się instrukcja zmieniająca kolor tła komórki

Cells(wiersz, kolumna).Interior.ColorIndex = indeks_koloru

indeks_koloru - to wartość powinna być w przedziale od 1 do 56

Ponieważ nie wiemy jakie kolory są dostępne pod jakim indeksem to sobie trochę pomożemy generując tabelę kolorów. Zrobimy to w kolumnie ósmej. Po wklejeniu poniższego kodu do okna Visual Basic. Czyli w Excelu za pomocą Lewy Alt + F11 uruchamiamy VBA wybieramy Arkusz1 i wklejamy ten kod

Sub kolory ()
For w = 1 To 56
Cells(w, 7).Value = w
Cells(w, 8).Interior.ColorIndex = w
Next
End Sub

W liniach wewnątrz pętli for znajdują się instrukcje, które kolejno:
1 wstawiają wartość w kolumnę 7
2 zmieniają kolor tła komórki w koluminie 8

Wszystko po to by można było zidentyfikować jaki indeks odpowiada danemu kolorowi.

Będzie to wyglądać mniej więcej tak

kolor-index.png

Kiedy już wiemy jaki kod ma dany kolor możemy przejść do sedna

Wpiszmy następujący przykładowy kod.


Sub kolory()

For w = 1 To 16
If Cells(w, 2).Value < 5 Then
Cells(w, 1).Interior.ColorIndex = 33
End If
If Cells(w, 2).Value > 5 And Cells(w, 2).Value < 10 Then
Cells(w, 1).Interior.ColorIndex = 26
End If
If Cells(w, 2).Value > 10 Then
Cells(w, 1).Interior.ColorIndex = 3
End If
If Cells(w, 2).Value = 5 Then
Cells(w, 1).Interior.ColorIndex = 3
End If
If Cells(w, 2).Value = 10 Then
Cells(w, 1).Interior.ColorIndex = 44
End If
Next

Po uruchomieniu tego makra dostaniemy coś takiego

makro_kolory.png

Aby pogrubić tekst w danej komórce stosujemy polecenie


Cells(w, 1).Font.Bold = True

To na razie tyle :)

Nieco więcej przeczytasz klikając w ten link Excel i VBA - formatowanie warunkowe

Excel 2010 - określenie maks. używanej ilości wierszy i kolumn za pomocą kodu VBA

December 19th, 2011

Chciałem omówić małą ale przydatną rzecz, która mi ostatnio bardzo pomogła w pracy a mianowicie określenie za pomocą komend VBA ilości użytych wierszy i kolumn w pliku. Jest to o tyle ułatwieniem że na tej podstawie mogę zadać granicę dla pętli for (lub innej) w celu dalszej analizy danych.

Aby sprawdzić jak to działa warto otworzyć jakiś plik z danymi lub samemu je przygotować :)

dane do sprawdzenia działania

Warto zwrócić uwagę przy otwieraniu pliku Excela 2010 z makrami (jeżeli mamy już plik z napisanymi makrami) że trzeba niestety kliknąć przycisk “Enable content” (zezwalaj na treść) bez tego nasze makra nie będą działać.

makro_finalrowand-finalcol-1a.png

Druga sprawa, od której należało może zacząć to ta że plik excela 2010 “utrudni” nam bezmyślne zapisanie go jako zwykłego pliku excela i zasugeruje by zapisać go w postaci pliku z zezwoleniem dla makr

macro_save-as-2.png

i ten właśnie plik będzie wymagał wciśnięcia przycisku enable content aby je uruchamiać. oznaczony jest on specjalną ikoną

ikonka

Teraz do rzeczy
1 mamy już dane
2 Po otwarciu pliku Excela naciskamy Lewy Alt +F11 i otwiera nam się okno VBA (Visual Basic for Applications) i zaznaczamy klikając dwukrotnie arkusz z naszymi danymi (w moim przypadku Arkusz1)

makro_finalrowand-finalcol-2.png

3. Wpisujemy kod jak niżej


Sub granice()

ostatniwiersz = ActiveSheet.UsedRange.Rows.Count
ostatniakolumna = ActiveSheet.UsedRange.Columns.Count
MsgBox “W arkuszu jest ” & ostatniwiersz & ” wierszy”
MsgBox “W arkuszu jest ” & ostatniakolumna & ” kolumn”
End Sub

Funkcje Msgbox służą mi jedynie do upewnienia się że wszystko jest ok i po ich użyciu mogę na przedzie każdej takiej lini dodać pojedynczy apostrof aby interpretator VB widział te linie jako komentarz i nic z nimi nie robił.

4. Uruchamiamy makro używając F5 lub menu

runmacro.png

Możemy widzieć jeszcze coś takiego

runmacro2.png

5. Klikamy przycisk Run i oglądamy wyniki :)

macro_result1.png

macro_result2.png

To na razie tyle. Makro można zmodyfikować do swoich potrzeb. Dodam jeszcze że testowałem je w wersjach Excel 2000 i Excel 2003 a skoro w niezmienionej formie treść makra działa również w tej wersji (2010) to śmiało można powiedzieć że nie powinno być przeszkód aby działało również w wersji 2007

Chrome - wygoda użytkowania

November 13th, 2011

Dziś troszkę na temat przeglądarki Chrome. Od jakiegoś czasu chrome jest najczęściej używaną przeze mnie przeglądarką www (w domu). Obserwuję zmiany zachodzące w niej i chciałem się podzielić małymi spostrzeżeniami do wersji 15

chrome15_info.png

1 zmiana dotyczy podziału na dwie odrębne części w panelu startowym (odpowiednik dodatku Fast Dial w Firefox)
pierwsza część to najczęściej otwierane strony druga natomiast to aplikacje rozszerzające funkcjonalność Chrome. Aplikacje były uprzednio zaszyte gdzieś w menu przeglądarki więc to moim zdaniem duży plus.
2 zmiana to bardziej intuicyjne pojawianie się i szeregowanie najczęściej otwieranych stron i łatwe ich usuwanie w razie takiej potrzeby

Rozdzielenie na oba panele pokazałem niżej.

Strony najczęściej otwierane:
chrome15_panel-startowy.png

Panel aplikacji:
chrome15_panel-startowy2.png

Przełącznik między częściami panelu:

switch-panel-chrome.png

Wprawdzie z panelu aplikacji korzystam rzadziej, ale jednak - więc takie rozwiązanie wydaje mi się rozsądne.

Konsekwencje nie przedłużenia domeny w terminie

September 26th, 2011

Konsekwencje takiego przeoczenia mogą być różne. W przypadku tej strony to niestety znaczący spadek odwiedzin już po przywróceniu domeny. Tak się złożyło że mój laptop był drugi raz w naprawie, tym razem przeszedł gruntowny “przeszczep” układu graficznego w karcie nvidii bo poprzedni niemal całkiem się uszkodził i był wrażliwy nawet na drobne nagrzanie. Miejmy nadzieję że teraz będzie ok.

Pozdrawiam wszystkich którzy nie zwątpili i nadal czytają :)

Excel 2010 - Połączenie z chmurą Google Docs

August 13th, 2011

Excel to świetne narzędzie do pracy grupowej, przekonali się o tym na pewno ci, którzy używają go w firmach. Poza siecią firmową praca grupowa nie jest już taka łatwa do skonfigurowania. Na szczęście można do tego celu użyć zasobów Google Documents.

Oczywiście mam na myśli dokumenty i arkusze prywatne a nie firmowe, bo byłoby to naruszeniem polityki bezpieczeństwa swojej firmy, a tego należy się strzec, bo konsekwencje mogą być bardzo nieprzyjemne.
Aby móc podłączyć Excela do “chmury” google należy ściągnąć aplikację-wtyczkę Google cloud connect i zainstalować ją. Jest ona przeznaczona dla aplikacji word, excell i powerpoint w wersjach 2003/2007/2010

excell_and_cloud.png

Następnie należy uzupełnić danymi do logowania w koncie google i wybrać miejsce gdzie będzie przetrzymywana kopia lokalna.

excell_and_cloud2.png

i to właściwie wszystko. Po utworzeniu arkusza w Excelu i jego synchronizacji z google ustawiasz w Dokumentach Google komu chcesz go udostępnić.