Elektroda.pl
Elektroda.pl
X
Please add exception to AdBlock for elektroda.pl.
If you watch the ads, you support portal and users.

EXCEL 2010 - automatyczne blokowanie adresów komórek

bigrw 06 Mar 2013 09:30 11028 3
  • #1
    bigrw
    Level 9  
    Witam wszystkich...
    choć nie jestem na bakier z excelem.....to i tak mam dość duzy problem....
    z blokowaniem adresów komórek w funkcjach które zostały stworzone przez przeciągnięcie....(znam klawisz F4 i jego zadanie oraz skrót SHIFT + 4)...
    ...nie jestem laikiem...w tym temacie a jednak nie znalazłem rozwiazania....
    mój problem jest znacznie trudniejszy....
    posiadam pewne pliki rozliczające....
    i wykorzystuje w nich funkcje łączy z danymi w innych plikach (gdyż wiekość pliku zmusiła mnie do podzielenia go na mniejsze, całość ma już 1,5 GB)....
    posiadam w jednym z tych plików tabelę na 880 kolumn i 5800 wierszy (5.104.000 komórek)....w każdej komórce mam łącze do różnych innych plików...
    potrzebuję użyć jakiegoś skrótu (funkcji) która pozwoliła by mi zablokować adresy użyte w tych łączach z automatu gdyż nie uśmicha mi się blokować 5 mln komórk z ręki....potrzebuije je zablokowąc aby móc tą tabelę prze TRANSPONOWAĆ (czyli obrócić z poziomej na pionową) ale aby to zrobić muszą być tam wartości adresów bezwględnych, bo po wykonaniu transponuj....poprostu się wszystko wysypuje....
    wiem że mogę poprostu wkleić efekt tych łączy i do piero zrobić transponuj ale chce uzyskać mozliwość automatyzacji w pliku...i aby się wszystko na nowo przeliczało jesli dane się zmienią....

    może ktoś z was coś zaproponuje....
  • #2
    adamas_nt
    Moderator of Programming
    Przy użyciu funkcji TRANSPONUJ tablicowo z tabelą wynikową, typy adresów w tablicy źródłowej nie mają znaczenia. Teoretycznie nie powinno się wysypywać...
  • #3
    Maciej Gonet
    VBA, Excel specialist
    Dzień dobry,
    Funkcja TRANSPONUJ działa bezbłędnie, ale ma też swoje wady. Tablica jest duża i wyniki trzeba gdzieś umieścić. Potem będzie je Pan chciał dalej przetwarzać. Po użyciu TRANSPONUJ traci Pan kontrolę nad źródłem danych, bo w każdej komórce widzi Pan tylko TRANSPONUJ i adres, poza tym nie można zmieniać pojedynczych komórek.
    Pewnie wygodniej byłoby Panu skorzystać z operacji Transpozycja, ale ta ma dużo ograniczeń (jest niedopracowana) i nie wiem czy to Panu zadziała, zależy co Pan ma w transponowanych komórkach. Problemy mogą być gdy są tam formuły tablicowe lub stałe tablicowe lub odwołania do zakresów obejmujących więcej niż 1 wiersz i więcej niż 1 kolumnę.
    Co do zamiany adresów względnych na absolutne trzeba zastosować makro wykorzystujące metodę ConvertFormula, np. takie
    Code: vb
    Log in, to see the code

    Makro to zmieni Panu wszystkie odwołania w zaznaczonym zakresie na absolutne. Potem po drobnej modyfikacji można wrócić do odwołań względnych lub mieszanych, ale tylko do jednego typu. (Nota bene w helpie do metody jest błąd: argument ToAbsolute jest typu xlReferenceType a nie xlRefernceStyle jak napisano). Gdyby były u Pana odwołania tablicowe, to makro w tej formie prawdopodobnie nie będzie działać, ale nie miałem czasu sprawdzić, a może nie jest to Panu potrzebne.
    Gdyby miał Pan problemy musi Pan dokładnie opisać postać Pana danych, bo jest tu dużo możliwych wariantów.
    Powodzenia
  • #4
    bigrw
    Level 9  
    dzięki za podpowiedzi....
    funkcję transponuj znam....jednakże do moich potrzeb nie pasuje.....gdyż potrzbuję odwrócić tabele z poziomej na poinową ale zachowując przy tym łącza....tak aby dane zawarte w danej tabeli pionowej sie mogły odswierzyć gdy nastapi zmiana danych w tabeli poziomej....
    funkcja transponuj tylko i wyłącznie jest wynikowa na daną chwilę transpozycji....
    natomiast transpozycja sama w sobie jest coś w niej nie tak....
    odezwę się jeszcze jutro....
    Pozdrawiam i dziekuję...

    Dodano po 4 [godziny] 41 [minuty]:

    witam ponownie....
    olśniło mnie....
    rozwiązaniem jest poprostu tylko format wpisywanych danych....
    wystarczy skopiować użyć polecenia kopiuj , następnie wkleić do nowego arkusza na chwile....następnie zaznaczyć jeszcze raz tą wklejona do nowego arkusza tabelę użyć nastepnie polecenia ZNAJDŹ / ZAMIEŃ i zmienić znak "=" (który rozpoczyna wszelkie łącza) na jakiś znak....np."x".....
    następnie tą tabelę z dodatkowymi "x" użyć kopiuj a potem wkleić za pomocą transpozycji...
    potem wystarczy dane jeszcze raz skopiować do arkusza docelowego i uzyć znowu polecenia ZAMIEŃ/ZNAJDŹ i wskazać aby zamieniono "x" na = i przeliczyć arkusz....
    i działa....
    są odwołania i działają na zmiennych danych wejściowych...
    Pozdrawiam...
    i dziękuję

    Dodano po 2 [godziny] 24 [minuty]:

    ten "x" (znak zmieniający = na coś innego musi być unikatowy tak aby nie mógł sie powtórzyć w formule łączu itp) ja to wykonałem za pomocą "(x)" gdyż x w nawiasach w formule (łączach)u mnie nie występuje