Elektroda.pl
Elektroda.pl
X

Wyszukiwarki naszych partnerów

Wyszukaj w ofercie 200 tys. produktów TME
Europejski lider sprzedaży techniki i elektroniki.
Proszę, dodaj wyjątek elektroda.pl do Adblock.
Dzięki temu, że oglądasz reklamy, wspierasz portal i użytkowników.

Jak można uprościć zapis formuły ??

Antidotum ex 05 Kwi 2013 17:59 858 4
  • #1 05 Kwi 2013 17:59
    Antidotum ex
    Poziom 9  

    Może ktoś ma pomysł jak uprościć formułę w B1 ??

    Text w kom. A1 abcdef
    Formuła w kom. B1 =ZASTĄP(ZASTĄP(ZASTĄP(A1;6;1;"Z");4;1;"Y");2;1;"X")
    musi dać wynik: aXcYeZ
    jest utworzona z trzech podobnych, zagnieżdżonych w sobie: ZASTĄP(A1;2;1;"X"), ZASTĄP(A1;4;1;"Y"), ZASTĄP(A1;6;1;"Z")

    Zmienia się w zasadzie tylko drugi parametr (rosnący ciąg liczb parzystych od 2 do 10), który można wpisać np w C3

    0 4
  • #2 08 Kwi 2013 10:21
    Maciej Gonet
    Poziom 31  

    Dzień dobry,
    Ta formuła jest niezbyt skomplikowana, można uprościć jedynie sposób wywołania, tzn. wprowadzania danych do formuły, albo definiując formułę nazwaną, albo pisząc w VBA odpowiednią funkcję użytkownika. Nie wiem, które z danych są u Pana stałe, a które zmienne. Jak chciałby Pan wprowadzać te dane? Pisze Pan coś o ciągu liczb parzystych w komórce C3. Jak Pan to sobie wyobraża? Może lepiej szablon np. "@X@Y@Z", w którym wstawiamy to co chcemy wstawić w określone miejsca, a tam gdzie jest znak @ pozostaje to co było.
    Pozdrowienia

    0
  • #3 08 Kwi 2013 16:09
    Antidotum ex
    Poziom 9  

    Najistotniejszy jest uproszczony zapis tej funkcji.Zmienna to drugi element funkcji: liczba_początkowa. Wpisana np do komórki C1 liczba 2 spowoduje, że funkcja w B1 wygląda tak: =ZASTĄP(ZASTĄP(ZASTĄP(A1;C1+4;1;"Z");C1+2;1;"Y");C1;1;"X"). Parametry txtu są bez znaczenia. Ponieważ cały zeszyt jak inne arkusze mają zapis za pomocą funkcji standardowych zależy mi żeby to było bez VBA. Jeśli można to może lepiej bez tego "Pana @#$%^.."
    pzdr

    0
  • #4 08 Kwi 2013 20:44
    adamas_nt
    Moderator Programowanie

    Zdaje się, jak pisał kolega Maciej, nie da się bardziej uprościć tej formuły. Można ją sobie jedynie skomplikować Np jakimś FRAGMENT.TEKSTU lub t.p.

    0
  • Pomocny post
    #5 09 Kwi 2013 13:18
    Maciej Gonet
    Poziom 31  

    Dzień dobry,
    Jeżeli położenie komórek jest stałe, to znaczy w kolejnych komórkach ma Pan tekst oryginalny (w przykładzie A1), wynik (w przykładzie B1) i położenie "X" w tekście wynikowym (w przykładzie C1) może Pan nadać nazwy swojej formule oraz jej parametrom (zgodnie z zasadami Excela). Można to zrobić w Menedżerze Nazw (Excel >= 2007) lub przez Wstaw/Nazwa/Definiuj (Excel < 2007). Nazwy parametrów muszą być skojarzone z adresami względnymi (bez $) argumentów (ważne!).
    Wpisuje Pan przykładowy tekst do A1, liczbę do C1 i ustawia kursor w B1 (w którym będzie wywołanie formuły - ważne!). Nadaje Pan nazwę np. "tekst" komórce A1 (=Arkusz1!A1), nazwę "poz" komórce C1 (=Arkusz1!C1) i nazwę "wynik" Pana formule, w której użyto nazw parametrów: =ZASTĄP(ZASTĄP(ZASTĄP(tekst;poz+4;1;"Z");poz+2;1;"Y");poz;1;"X"). Teraz może Pan wpisać w arkuszu wywołanie =wynik i otrzyma Pan to, co Pan chciał w dowolnym miejscu arkusza pomiędzy tekstem źródłowym a numerem pozycji.
    Jeśli liczba możliwych pozycji "X" jest niewielka można do każdej wartości stworzyć wariant formuły, np. wynik2, wynik4, wynik6 itd. Wtedy będzie tylko 1 argument do przekazania w komórce. Wszystko to ma sens jeśli musi Pan wywoływać formułę wielokrotnie. Argumenty do formuły nazwanej mogą być przekazywane tylko przez komórki i to jest najważniejsze ograniczenie. Jeśli argumenty mają być przekazywane w wywołaniu funkcji, trzeba ją napisać w VBA.

    0
TME logo Szukaj w ofercie
Zamknij 
Wyszukaj w ofercie 200 tys. produktów TME
TME Logo