Get.Cell - O.KOMÓRCE   strona główna:
A po co ten Excel ;-)
 
    W tym temacie chciałbym zająć się funkcją O.KOMÓRCE będącej funkcją Makr Excela4.0. Funkcje te można nadal wykorzystywać  
w Excelu przez politykę M$ tj. Zachowanie kompatybilności z wcześniejszymi wersjami programu Excel. Jednak funkcje te pomalutku  
odchodzą w zapomnienie wypierane przez VBA a może czasem szkoda.  
    Zamiast omawiać wszystkie możliwe wykorzystania, co byłoby nudne i czasochłonne chciałbym trochu inaczej zorganizować ten  
wątek: Zajmę się tylko tymi możliwościami które w praktyce wykorzystywałem, podając linki do przykładów.   
Jeżeli w jakiś ciekawy sposób zastosuję jeszcze nieprezentowaną możliwość omawianej funkcji zaktualizuję ten temat.  
 
   Zachęcam jednak do własnych testów i poszerzania wiedzy :-) Opis możliwości Makr Excela4.0 można przeglądnąć w pliku pomocy   help topics for Microsoft Excel 4.0 macro functions
Macrofun.hlp dostępnym na stronie M$ (link w prawej) W tym pliku wyszukujemy frazy GET.CELL function i... (nie mało tego nie? ;-)  
 
   W proponowanych definicjach nazw będą stosowane pewne fragmenty które chciałbym omówić na wstępie żeby nie robić tego przy  
każdym opisie prezentowanego rozwiązania.  
 
 - zakończenie def. Nazwy: +TERAZ()*0  
    >> Tajan (MVP)  Jeżeli chodzi o funkcję TERAZ, to jej zadaniem jest wymuszenie każdorazowego obliczenia formuły przy   
                             przeliczaniu arkusza. Jeżeli jej nie zastosujemy, formuła nazwy zostanie przeliczona tylko raz - po jej   
                             wprowadzeniu. Do chwili, gdy nie nastąpi zmiana  wartości w odpowiedniej komórce (..) formuła   
                             nie będzie przeliczana, nawet po naciśnięciu F9. <<   
 
 - odwołanie zdefiniowane przez: ADR.POŚR("wk3";0)    pomoc: ADR.POŚR
    ADR.POŚR(adres_tekst;a1)   
    - Adres_tekst jest odwołaniem do komórki zawierającej odwołanie w trybie adresowania A1 lub W1K1 (..)   
   - a1 to wartość logiczna określająca, jaki typ odwołania zawarto w komórce adres_tekst. (..) Jeśli wartością argumentu a1 jest   
          FAŁSZ, argument adres_tekst jest interpretowany jako odwołanie typu W1K1.  
Jest to więc odwołanie do komórki znajdującej się w 3'ciej kolumnie (kol.C) w tym samym wierszu w którego komórce odwołamy się do  
zdefiniowanej nazwy.  
 
 - choć do realizacji postawionych zadań nawet nie tknięto VBA to jednak są to makra, trzeba więc zezwolić na ich wykonanie!!  
Nie zdziwcie się więc jak przy włączaniu przykładów, czy po resecie własnego pliku, w którym będziecie wykorzystywać makra Excela 4.0   
definiowane w nazwach, w zależności od ustawień zabezpieczeń makr Excel może poinformować nas że skoroszyt zawiera Marka, które   Wybieranie odpowiedniego poziomu zabezpieczeń makr
zostały wyłączone. Formuły zwracają wtedy błąd #NAZWA? (zabezpieczenia: Wysokie) lub (zabezpieczenia: średnie) Excel zapyta was:  
 Excel 2003 >> Ten skoroszyt zawiera jedno lub kilka makr Microsoft Excel 4.0.   
                     Makra mogą zawierać wirusy lub inny szkodliwy kod. Jeżeli masz zaufanie do źródła możesz otworzyć skoroszyt.  
                     Czy chcesz włączyć te makra? <<  
 
 
          Omawiane przykłady:  
 
    17 Row height of cell, in points.  
    63 Returns the fill (background) color of the cell.  
 
 
Zadanie.1  
Komórkom kol.c został nadany ręcznie kolor wypełnienia. Jak zwrócić w następnej kolumnie numer koloru wypełnienia nadanego w kol.C?  
Definiujemy nazwę: kolIndex  
Odwołuje się do:  =O.KOMÓRCE(63;ADR.POŚR("wk3";0))+TERAZ()*0   (link do przykładu)
 
 
Zadanie.2  
  >> siemarek:  Mam tabelę 4 kolumny(asortyment, cena, cecha1, cecha2). (..) podsumowaniu ceny - Sumy.pośrednie() co przy   
                        zastosowaniu autofiltra sumuje ceny dla wybranego asortymentu. Potrzebuję (..) podsumować ceny dla wybranego   
                        asortymentu z uwzględnieniem cecha1, cecha2 (..) mogę manipulować warunkami filtra ale dla każdej kombinacji   
                        miałbym inną tabelę. <<  
 
A więc mamy tabelę z danymi filtrowaną po asortymencie. I tabelę: kolumny - cecha1, wiersze - cecha2. Filtrując dane chcemy żeby  
w tabeli cen dla danej kombinacji cech znajdowała się suma cen odpowiadająca tym cechom.  
    Choć funkcja SUMY.POŚREDNIE (dla XL'a >=2007 SUMY.CZĘŚCIOWE) trochu możliwości daje to zadanie ją przerasta. Nie można  
w arg. Adres podać niczego poza zakresem co uniemożliwia nadawanie na niego warunku typu JEŻELI(zakres=cecha1;zakres;0). Jak   
więc ugryźć problem? Sprawdzając właśnie wysokość komórki :-) Dla wiersza ukrytego, czy to poleceniem ukryj czy po wyfiltrowaniu,  
wysokość wiersza będzie równa 0.  
Definiujemy nazwę: hidden  
Odwołuj się do: =O.KOMÓRCE(17;ADR.POŚR("wk1";0))+TERAZ()*0  
W pomocniczej kolumnie obok tabeli: =hidden<>0 Formuła ta zwróci wartość logiczna PRAWDA/FAŁSZ którą wykorzystamy.  
Tabelę cen dla zestawu cech wypełniamy wykorzystując funkcję SUMA.ILOCZYNÓW i odpowiednią względność odwołań.   (link do przykładu)