Elektroda.pl
Elektroda.pl
X
Proszę, dodaj wyjątek www.elektroda.pl do Adblock.
Dzięki temu, że oglądasz reklamy, wspierasz portal i użytkowników.

VBA excel, aktywowanie formuł przechowywanych jako tekst

spam28 13 Mar 2018 10:55 549 8
  • #1 13 Mar 2018 10:55
    spam28
    Poziom 10  

    Mam plik, w którym w jednej kolumnie w kolejnych wierszach wpisane są formuły jako tekst, np.

    Kod: text
    Zaloguj się, aby zobaczyć kod


    Żeby aktywować formuły muszę wejść w każdą, edytować przez F2, wówczas tekst zmieni się w działającą formułę.

    Alternatywnie mogę w całym zakresie poprzez polecenie zamień, podmienić wszystkie znaki "=" na znak "=" i formuły się aktywują.

    Jak to efektywnie zrobić poprzez VBA dla danego zakresu komórek, np. 100 tyś?

    0 8
  • #2 13 Mar 2018 12:38
    marcinj12
    Poziom 40  

    To makrem wypisujesz taką formułę? Użyj w pętli

    Kod: vbscript
    Zaloguj się, aby zobaczyć kod
    - mają być przecinki zamiast średników i odwołujesz się do właściwości Formula (chociaż dla Value też to zadziała).

    0
  • #3 13 Mar 2018 12:49
    spam28
    Poziom 10  

    Właśnie bardzo zależy mi na tym, żeby jej nie wypisywać makrem tylko z poziomu excela. Podałem tylko uproszczony przykład, formuła jest dużo bardziej rozbudowana.

    0
  • #4 13 Mar 2018 13:36
    marcinj12
    Poziom 40  

    To spróbuj

    Kod: vbscript
    Zaloguj się, aby zobaczyć kod

    0
  • #5 13 Mar 2018 13:48
    spam28
    Poziom 10  

    Dokładnie o to mi chodzi, tylko żeby zrobić to nie w pętli, tylko dla całego zakresu od razu. Przy 100k+ wierszy powiesił mi się excel niestety. Jeśli robię to poprzez Text to column albo Zamień "=" na "=" takiego problemu nie ma. Taka pętla niestety jest zbyt wolna.

    EDIT: Ok, zadziałało w połączeniu z Selection, ale dla formuł które mają więcej niż 70 znaków odcina wszystko od 69 znaku.

    0
  • Pomocny post
    #6 13 Mar 2018 14:04
    marcinj12
    Poziom 40  

    Można wyłączyć przeliczanie przed wejściem w pętlę i włączyć po wyjściu.
    http://www.automateexcel.com/vba/on-off-calculations
    Przy 100k+ wierszach i długaśnych formułach jakoś wcale mnie to spowolnienie nie dziwi.
    U mnie ten sposób nie obcina długich funkcji.
    Ale jak koniecznie chcesz użyć zamiany dla podanego zakresu, to:

    Kod: vbscript
    Zaloguj się, aby zobaczyć kod

    0
  • #7 13 Mar 2018 14:24
    spam28
    Poziom 10  

    Niestety sposób z Replace nie daje żadnego rezultatu, natomiast Prase odcina u mnie wszystko od 70 znaków wzwyż.

    0
  • Pomocny post
    #8 13 Mar 2018 15:18
    cbrman
    Poziom 27  

    A coś takiego:

    Kod: vb
    Zaloguj się, aby zobaczyć kod

    Ewentualnie zamiast FormulaLocal zastosuj Formula.

    0
  • #9 13 Mar 2018 15:35
    spam28
    Poziom 10  

    Super, ten sposób działa bezbłędnie! :)
    Dzięki wielkie, zamykam.

    0