Wpis z mikrobloga

Mirki potrzebuje pomocy, mam taką formułę:
=JEŻELI(K1=0;"";WYSZUKAJ.PIONOWO("*"&K1&"*";kontakty!$B$2:$D$320;3;0))
Wszystko to jest wklepane w komórce L1. Dodatkowo potrzebuję do tego dodać żeby sprawdzało czy komórka L1 jest koloru czerwonego, jeżeli nie to nie będzie nic robiło, a jeżeli tak to wtedy dopiero wyszukuje dane. Ktoś jest w stanie pomóc?
#pytanie #excel #programowanie
  • 17
  • Odpowiedz
@oskar-piasecki:
po co ten zapis ""&K1&""?
Starczy zwykle K1.

A co do sprawdzania kolorów, to bez VBA chyba się nie obedzie,zwlaszcza jeśli kolor jest ustawiany ręcznie a nie formatowaniem warunkowym. Kolor komórki sprawdzasz atrybutem .Interior.ColorIndex
  • Odpowiedz
@oskar-piasecki: To masz dwa wyjścia

1) bardziej profesjonalne- musisz bawić się VBA i napisać makro

2) mniej profesjonalnie, ale działa- zmieniasz sposób wypełnienia komórek
a) wstawiasz nowy wiersz obok kolorowanych komórek (lub gdzie indziej gdzie będziesz o nim wiedział)
b) wstawiasz np 1. w miejscu gdzie komórki mają zmienić kolor na czerwony
c) robisz na to formatowanie warunkowe
d) robisz kolejne jeżeli w oparciu o to czy w komórce obok jest
  • Odpowiedz
@oskar-piasecki: To potrzebujesz VBA. Ogólnie operowanie na kolorach komórek to zły pomysł -- lepiej dorzucić sobie kolumnę pomocniczą ze statusem i na podstawie tego statusu formatowaniem warunkowym kolorować.
I wtedy możesz sobie prosto te wyszukaj.pionowo uzależnić od wartości w tej kolumnie statusu.
  • Odpowiedz
nie mogę sobie pozwolić na dodatkową kolumnę ze statusem ponieważ to dodatkowa robota


@oskar-piasecki: Co za różnica, czy wybierzesz coś z listy w komórce, czy ją pokolorujesz? Jeśli nie znasz VBA, to proponowałbym nie pchać się w tę stronę, a masz tylko te dwa wyjścia.
  • Odpowiedz
@oskar-piasecki: Jest jeszcze jeden problem z rozwiązaniem w VBA - funkcja nie będzie reagowała automagicznie na zmiany koloru komórek, a na formatowanie warunkowe w ogóle. Teoretycznie można to obejść, ale wymagałoby to sporo kombinowania. Spróbuj, może Tobie takie coś wystarczy (alt+F11, Insert -> Module, do modułu wklej poniższy kod i nie zapomnij zapisać pliku jako .xlsm):

Function szukaj(co As Range, gdzie As Range, przesuniecie As Integer) As String

If co.Value =
  • Odpowiedz