Tyle osób mnie odwiedziło

niedziela, 12 czerwca 2011

Filtrowanie

Z dużej bazy filtruję rekordy, które mnie interesują za pomocą kodu VBA:

ActiveSheet.Range("$A$1:$M$100000").AutoFilter Field:=4, Criteria1:=">0", Operator:=xlAnd
ActiveSheet.Range("$A$1:$M$100000").AutoFilter Field:=2, Criteria1:=Array("2001", "2002", "2003", "2004", "2005", "2006", "2007", "2008", "2009", "2011"), Operator:=xlFilterValues

W aktywnym arkuszu, w oznaczonym obszarze (.Range) należy określić kryteria filtrowania:
.AutoFilter Field kolumna, do której chcemy zastosować filtr (liczymy od lewej)
Criteria1 warunek, jaki musi być spełniony
Operator tutaj jest podawany jeden z XlAutoFilterOperator, w moim przypadku xlAnd (czyli logiczny operator "and").

W taki sposób otrzymałam bazę mniejszą z potrzebnymi mi danymi. 

czwartek, 9 czerwca 2011

Zmiana kropek na przecinki

Musiałam troszkę się namęczyć, żeby zmienić kropki na przecinki otwierając plik tekstowy za pomocą makro. Nie jest to takie oczywiste, jakby się mogło wydawać :) W Excelu - prosta sprawa Znajdź/Zamień, a w VBA:
Cells.Replace What:=".", Replacement:=".", LookAt:=xlPart, SearchOrder:=xlByRows, MatchCase:=False, ReplaceFormat:=False

wtorek, 7 czerwca 2011

Otwieranie pliku tekstowego

Ponieważ często pracuję na plikach tekstowych nazwanych "xxx-data.txt", zrobiłam makro, które otwiera plik tekstowy z podanej lokalizacji:

Sub otworz_plik_teksotwy()
'made by madziarka
'otwieranie pliku tekstowego z odpowiedniej lokalizacji
Workbooks.OpenText Filename:=Range("A1"), origin:=1250, startrow:=1, DataType:=xlDelimited, consecutivedelimiter:=False, Tab:=False, semicolon:=False, comma:=True, Space:=False, other:=False, fieldinfo:=Array(Array(1, 1), Array(2, 1), Array(3, 2), Array(4, 1), Array(5, 1), Array(6, 1), Array(7, 1), Array(8, 3), Array(9, 3), Array(10, 1), Array(11, 1), Array(12, 1), Array(13, 1))


W komórce A1 wpisałam lokalizację, z której ma otwierać się plik:
="C:\Madziarka\xxx"&"\xxx-"&B3&".txt"

Zatem po kolei prześledźmy zapis:
Workbooks.OpenText Filename skoroszyt otwiera plik z podanej lokalizacji
Origin określa pochodzenie tego pliku, jak piszą w helpie "1256" koduje plik arabski
startrow określa od którego rzędu będzie zaczynał, domyślną wartością jest 1
DataType może być podany jako xlDelimited lub xlFixedWidth (ustalona szerokość kolumn)
consecutivedelimiter domyślnie utawiony jako False, jeżeli chcemy mieć ogranicznik ustawić należy True
Tab domyślnie utawiony jako False, jeżeli chcemy mieć ogranicznik - tab ustawić należy True
semicolon domyślnie utawiony jako False, jeżeli chcemy mieć ogranicznik - średnik ustawić należy True
comma domyślnie utawiony jako False, jeżeli chcemy mieć ogranicznik - kropka ustawić należy True
Space domyślnie utawiony jako False, jeżeli chcemy mieć ogranicznik - spacja ustawić należy True
other domyślnie utawiony jako False, jeżeli chcemy mieć ogranicznik (inny niż wymienione wcześniej) ustawić należy True
fieldinfo zawiera informację o poszczególnych kolumnach (czy w danej kolumnie jest tekst, data, czy liczba).

Zlecenie

Pewnego razu moja Pani Dyrektor poprosiła mnie, abym przygotowała krótki test z Excela dla ludzi starających się o pracę. Wymagana była dobra znajomość Excela. Test był prosty, krótki (zrobienie zajęło osobie dobrze znającej Excela 10 minut) i wydawałoby się, że będzie można przebierać w kandydatach. Okazało się inaczej: wśród 20 osób rozwiązujących test 2 poddały się od razu (nie dotknęły komputera), a tylko jedna rozwiązała go bezbłędnie. Oto test, który powalił tylu :))
1. Otwórz plik tekstowy w Excelu
2. W pliku tekstowym była data, ilość i produkt (ukryty w liczbie). Należało znaleźć w pliku nazwy.xls nazwę produktu i przypisać ją do produktu podanego jako liczba
3. Należało sformatować niestandardowo - wyróżnić jeden produkt na czerwono
4. Utworzyć tabelę przestawną, podając ilość jednego produktu razem z datami.

Niby nic trudnego ... a jednak :)

środa, 13 kwietnia 2011

Powitanie

Mając liczne zainteresowania, trzeba mieć kilka blogów :) podział tematyczny trzeba zrobić.
Praca w MS Excelu zawsze była dla mnie przyjemnością. Praca na dużych bazach danych, opracowanie nowych rozwiązań daje mi zawsze błysk w oku i radość tworzenia. Będę prezentowała tutaj może i proste (oczywiste) rzeczy związane z Excelem i VBA, ale mam nadzieję że ktoś z tego skorzysta (oprócz mnie) :))