Excel,,, formuły i puste komórki,,,


(Joemix) #1

Może jest ktoś kto kuma trochę Excela,,,

Mam taki drobny problem,,, mam pewną formułę:

=JEŻELI(CZY.BŁĄD(INDEKS(Potwierdzenie!$A$31:$J$96;PODAJ.POZYCJĘ($F33;Potwierdzenie!$B$31:$B$96;0);10));"";INDEKS(Potwierdzenie!$A$31:$J$96;PODAJ.POZYCJĘ($F33;Potwierdzenie!$B$31:$B$96;0);10))

i taki o to z nią problem,,, generalnie zwracała zawartość wyłapanych komórek, lub błąd gdy nic nie znajdywała, więc dopisałem warunek który zamienia błąd na nic,,, czyli "", jak usunę to "" to jest zwracane 0, jak jest "" to jest pusta komórka.

Formuła pracuje w 49 kolumnach i 240 wierszach, oczywiście z rożnymi zakresami danych wypełniając tabelkę na podstawie innych tabelek,,, po wypełnieniu całość arkusza jest kopiowana a następnie wklejana w to samo miejsce z funkcją "tylko wartości" co ma na celu usunięcie z arkusza wszelkich formuł a pozostawienie jedynie wartości,,,

Wizualnie to wygląda dobrze, ale jeśli z tabelki korzystają inne arkusze to się robią błędy gdyż puste komórki nie są traktowane jak puste komórki,,, np. funkcja ile.niepustych nie widzi tych komórek jako pustych, tylko takie które coś zawierają,,, trzeba na komórce wcisnąć DEL aby z pustej była faktycznie pusta,,,

Co zrobić by funkcja zwracała faktycznie pustą komórkę?


(Dimatheus) #2

Hej,

Na początku myślałem, że wklejenie specjalne wartości z pominięciem pustych pomoże. Niestety nie bardzo. Dlatego proponuję drobną modyfikację formuły oraz dodatkowe makro - oczywiście by osiągnąć zamierzony efekt.

:arrow: Zamiast wprowadzać do formuły element pusty ("") wprowadź spację, bądź inny nietypowy znak - na przykład &. Wtedy formuła będzie wyglądać tak:

=JEŻELI(CZY.BŁĄD(INDEKS(Potwierdzenie!$A$31:$J$96;PODAJ.POZYCJĘ($F33;Potwierdzenie!$B$31:$B$96;0);10));"&";INDEKS(Potwierdzenie!$A$31:$J$96;PODAJ.POZYCJĘ($F33;Potwierdzenie!$B$31:$B$96;0);10))

:arrow: Następnie wykonujesz wszystkie procesy, a do makra, które przekleja wartości dodasz jeszcze polecenie, by znaki "&" były zamieniane na nic, czyli "". Powinno to wyglądać mniej więcej tak:

Range("C14:D15").Select

    Selection.Replace What:="&", Replacement:="", LookAt:=xlPart, _

        SearchOrder:=xlByRows, MatchCase:=False, SearchFormat:=False, _

        ReplaceFormat:=False

:arrow: Po wykonaniu tego fragmentu formuły zliczające pola niepuste poprawnie rozpoznają już komórki, które są puste.

Pozdrawiam,

Dimatheus