Excel Forum - Porady, Pomoc,  Excel Help, Excel FAQ Strona Główna
 FAQ  RegulaminRegulamin  Szukaj   Użytkownicy   Grupy   Rejestracja   Profil   Twoje wiadomości   Zaloguj 


Poprzedni temat «» Następny temat
ID tematu: 70063 Skopiuj do schowka Zastąpienie formuł z trzech Kolumn UDF-em
Autor Wiadomość
ws1948 
Stały bywalec Excelforum


Wersja: Win Office 2019
Pomógł: 10 razy
Posty: 338
Wysłany: 05-02-2021, 20:32   Zastąpienie formuł z trzech Kolumn UDF-em

witam,
chciałbym zastąpić formuły w trzech kolumnach jednym UDFem z jednoczesną możliwością jego wstawienia do wykorzystywanego UDF "zuzel".

Jak zawsze dalsze szczegóły w załączniku.

ws

ZUZEL.xlsm
Pobierz Plik ściągnięto 13 raz(y) 27.9 KB

ID posta: 399809 Skopiuj do schowka
 
 
Maciej Gonet 
Excel Expert


Wersja: Win Office 2016
Pomógł: 2035 razy
Posty: 6432
Wysłany: 06-02-2021, 11:23   

Wrzucenie wszystkiego do jednej funkcji UDF nie jest, moim zdaniem, najlepszym pomysłem.
Funkcja zuzel przetwarza argument z jednego wiersza, a dokładniej nawet z jednej komórki.
Nowa funkcjonalność, jaką chciałeś jej przypisać, wymagałaby przetwarzania 4 wierszy, więc albo funkcję należałoby wywoływać tablicowo, albo te same obliczenia byłyby niepotrzebnie wykonywane 4 razy.
Lepszym rozwiązaniem wydaje mi się lekka modyfikacja funkcji zuzel tak, by zwracała do kolumny L liczbę, a nie tekst (o ile jest to możliwe) i wtedy nie byłaby potrzebna kolumna N, a wyznaczenie położenia gwiazdki można by oprzeć na wartościach z kolumny L.
Propozycja w załączniku. Formułę zapisałem w taki sposób, aby widać było jej związek z poprzednim zapisem. Po zweryfikowaniu poprawności działania można to oczywiście zmienić na zapis bardziej naturalny.
Formuła działa poprawnie dla takich danych jakie były w załączniku. Ale tam są możliwe teoretycznie również inne warianty, których nie weryfikowałem z powodu braku danych do testowania.

ZUZEL1.xlsm
Pobierz Plik ściągnięto 3 raz(y) 26.13 KB

ID posta: 399829 Skopiuj do schowka
 
 
ws1948 
Stały bywalec Excelforum


Wersja: Win Office 2019
Pomógł: 10 razy
Posty: 338
Wysłany: 06-02-2021, 20:44   

Witam,
dziękuję za zainteresowanie tematem, za wyczerpujące wyjaśnienie oraz za modyfikacje formuły.

Prosiłbym o wyjaśnienie dlaczego w formule np.
Kod:
If IsNumeric(Punkty) Then Punkty = CLng(Punkty)
nie ma zakończenia "The End". Kiedy nie jest konieczne?

W załączniku przedstawiłem większą ilość sytuacji biegowych.

Pozdrawiam
Stanisław

ZUZEL2.xlsm
Pobierz Plik ściągnięto 1 raz(y) 31.2 KB

ID posta: 399873 Skopiuj do schowka
 
 
Maciej Gonet 
Excel Expert


Wersja: Win Office 2016
Pomógł: 2035 razy
Posty: 6432
Wysłany: 06-02-2021, 20:58   

ws1948 napisał/a:
Prosiłbym o wyjaśnienie dlaczego w formule np.
Kod:
If IsNumeric(Punkty) Then Punkty = CLng(Punkty)
nie ma zakończenia "The End". Kiedy nie jest konieczne?
Raczej chyba End If, a nie The End :-)
Jeśli instrukcja If warunek Then instrukcja mieści się w jednym wierszu logicznym, nie potrzeba End If.
Wiersz logiczny może obejmować dwa lub więcej wierszy fizycznych (wierszy druku), jeśli stosuje się znaki kontynuacji.
Jeśli natomiast po Then jest przejście do nowej linii, to potrzebne jest End If na końcu instrukcji.
ID posta: 399877 Skopiuj do schowka
 
 
ws1948 
Stały bywalec Excelforum


Wersja: Win Office 2019
Pomógł: 10 razy
Posty: 338
Wysłany: 06-02-2021, 22:35   

Witam,
naturalnie mój błąd. Dziękuję za wyjaśnienie.
Dołożyłem 4 opcję. Wykonywałem wg wzorów z poprzednich opcji. Jednak nie działa. Jaka przyczyna?

oto część kodu:
Kod:

   Case nr = 4
   If InStr(zawod, "zwykła") > 0 Then
     z1 = "rz"
     Else
     z1 = ""
   End If
    zuzel = z1
   If InStr(zawod, "taktyczna") > 0 Then
     z2 = "rt"
     Else
     z2 = ""
    End If
     zuzel = z2
    If InStr(zawod, "Zastępstwo") > 0 Then
     z3 = "zz"
     Else
     z3 = ""
    End If
     zuzel = z3
    If InStr(zawod, "Taśma") > 0 Then
     z4 = "t"
     Else
     z4 = ""
    End If
     zuzel = z4
   End Select


Całość w załączniku.

Pozdrawiam

ws

Zuzel2a.xlsm
Pobierz Plik ściągnięto 2 raz(y) 32.2 KB

ID posta: 399883 Skopiuj do schowka
 
 
Maciej Gonet 
Excel Expert


Wersja: Win Office 2016
Pomógł: 2035 razy
Posty: 6432
Wysłany: 06-02-2021, 23:48   

A sprawdziłeś sobie swój program krokowo?
Co zawierała zmienna 'zawod' przy wejściu do drugiej instrukcji Select Case?
Przecież wcześniej te fragmenty, których teraz chciałeś szukać zostały już zamienione na "|".
Jedno z możliwych rozwiązań to zrobienie kopii zmiennej 'zawod' zanim zostanie pocięta.
Nie ma potrzeby używania 4 dodatkowych zmiennych - wystarczy jedna. Nie ma też potrzeby przypisywania tekstu pustego. Zmienna zadeklarowana jako String jest od razu inicjowana pustym tekstem.

Zuzel2a.xlsm
Pobierz Plik ściągnięto 3 raz(y) 30.93 KB

ID posta: 399888 Skopiuj do schowka
 
 
ws1948 
Stały bywalec Excelforum


Wersja: Win Office 2019
Pomógł: 10 razy
Posty: 338
Wysłany: 07-02-2021, 13:29   

Witam,
Dziękuję za pomoc i uwagi wyjaśniające istotę problemu.
Wszystkie formuły działają poprawnie.

Pozdrawiam

Stanisław
ID posta: 399916 Skopiuj do schowka
 
 
umiejead 
Excel Expert


Wersja: Win Office 2013
Pomógł: 775 razy
Posty: 4174

Wysłany: 07-02-2021, 13:57   

Cytat:
oto część kodu:
Tak - na tym można bazować... :angry
.
_________________
.
Jak poprawnie opisać problem: http://www.excelforum.pl/...ika-vt59262.htm
Chcesz precyzyjną odpowiedź - zadaj precyzyjne pytanie.
ID posta: 399920 Skopiuj do schowka
 
 
Wyświetl posty z ostatnich:   
Odpowiedz do tematu
Nie możesz pisać nowych tematów
Nie możesz odpowiadać w tematach
Nie możesz zmieniać swoich postów
Nie możesz usuwać swoich postów
Nie możesz głosować w ankietach
Nie możesz załączać plików na tym forum
Możesz ściągać załączniki na tym forum
Dodaj temat do Ulubionych
Wersja do druku

Skocz do:  

Powered by phpBB modified by Przemo © 2003 phpBB Group
Theme xandgreen created by spleen& Programosy modified v0.3 by warna
Opieka techniczna www.marketingNET.pl

Archiwum

Strona używa plików cookies.

Kliknij tutaj, żeby dowiedzieć się jaki jest cel używania cookies oraz jak zmienić ustawienia cookie w przeglądarce.
Korzystając ze strony użytkownik wyraża zgodę na używanie plików cookies, zgodnie z bieżącymi ustawieniami przeglądarki.
Sprawdź, w jaki sposób przetwarzamy dane osobowe