Kategorie szkoleń | Egzaminy | Kontakt
  • 1
  • 9
  • 303

Korzystam z funkcji tablicowej użytkownika (UDF),  napisanej w VBA. Funkcja zwraca array np. funkcja poniżej, która dzieli string w miejscu wystąpień spacji i umieszcza w macierzy.

Aby ją zwrócić, zaznaczam zakres trochę większy niż spodziewany wynik tak, aby pierwsza komórka była aktywna, a pozostałe zaznaczone i wprowadzam dla nich wszystkich jedną formułę, np. =SplitCell(A1) i zatwierdzam Ctrl+Shift+Enter.

Public Function SplitCell(rng As Range, delimit As String) As Variant
SplitCell = (Split(rng, delimit))
End Function

W nadmiarowych komórkach tych, które są poza zakresem zwracanych elementów macierzy Excel pokazuje błąd #N/A. Niestety nie mogę się go pozbyć wykorzystując funkcje, które pozwalają pominąć błąd albo wyświetlić alternatywną wartość.  IFERROR/JEŻELI.BŁĄD ani ISNA czy .nd. Excel ignoruje te funkcje i wyświetla w nadmiarowych komórkach zakresu funkcji tablicowej #N/D (#N/A).

Jak pozbyć się tych komunikatów w komórkach? Na razie jedynie pozbywam się ich, stosując formatowanie warunkowe i kolor czcionki w kolorze tła, ale to chyba nie jest najlepsze rozwiązanie, jeśli uzyskane wartości biorą udział w dalszych obliczeniach?

Z góry dziękuję za wszelkie wskazówki. 

 

 

 

Jacek_Kotowski
  • Zapytał
  • @ Jacek_Kotowski | 19.03.2015
    • lider
    • laureat
    • ekspert
    • 60
    • 54
    • 94

Odpowiedź (1)

  • 2

Witam.

Błędów w funkcji nie można zamienić, ponieważ funkcja nie wie, że są błędy. To jest normalne zachowanie Excela dla funkcji tablicowych, jeżeli obszar jest "większy". Można użyć np. Funkcji JEŻELI.BŁĄD, ale w komórkach obok i już nie tablicowo. Powinno zadziałać. Można też użyć procedury, której zadaniem byłoby konwertowanie zakresu albo przerobić funkcję na taką, która by rozdzielała te parametry, ale nie działa tablicowo (niestety kod już nie będzie taki ładny i prosty).

Pozdrawiam.
Paweł Niemyt.

pawel_niemyt
  • Odpowiedział
  • @ pawel_niemyt | 28.07.2015