kopiowanie arkuszy pomiędzy skoroszytami
Mam mały problem.
Przy kopiowaniu arkuszy pomiędzy różnymi skoroszytami do formuły w komórkach poszczególnych arkuszy dodaje się "łącznik" do pliku źródłowego. Mi zależy na tym żeby tego łącznika nie było a formuła odnosiła się do arkusza docelowego. wszystkie wypróbowane przeze mnie sposoby są zbyt czasochłonne i być może mógłby mi ktoś wskazać metodę na poradzenie sobie z tym fantem.
Mam nadzieję że wyjaśniłam problem w miarę przystępnie:)
Będę bardzo wdzięczna za wszelką pomoc.
Donia
Odpowiedzi: 1
Witaj Doniu!
Czasem szukamy rozwiązania tam, gdzie nie trzeba.
Dlatego najlepiej byłoby, abyś dokładnie określiła, co przenosisz, o jakie dane chodzi itd.
Po przećwiczeniu w Excelu stwierdzam, że faktycznie tak jest, jak napisałaś, ale wydaje mi się, że rozwiązaniem byłoby stworzenie szablonu arkusza/arkuszy, które zawierałyby odpowiednie formuły, a więc nie byłoby problemu jw.
Ale za mało mamy szczegółów, aby stwierdzić, czy takie rozwiązanie będzie właściwe.
Bo jeśli dobrze rozumiem: masz skoroszyt ABC.xls i jakieś formuły dajmy na to w Arkusz2, powiązane z danymi w Arkusz1 (np. jakieś stawki). I przy kopiowaniu Arkusz2 do innego skoroszytu, np. XYZ.xls, chciałabyś, aby dane do tych formuł w skopiowanym Arkusz2 pobierane były z Arkusza1, ale ze skoroszytu XYZ.xls - czy tak?
Jeśli chodzi o taką sytuację, jak powyżej, to możnaby wykorzystać częściowo odpowiednie odwołanie w nadawaniu nazwy obszarowi albo składać adres komórki znajdującej się w tych formułach - ale to w przypadku, gdy dane do formuł są pobierane z arkusza o zawsze tej samej nazwie.
Mam nadzieję, że dostatecznie zostało to przeze mnie zagmatwane - sorry, tak mi wyszło, ale jeśli opiszesz dokładnie o co chodzi, to podam Ci konkretną formułę.
Witaj Koziorożcu:) <br />Dziękuję bardzo za zainteresowanie moim problemem... <br />Jestem pełna podziwu, że mimo moich zakręconych wywodów zrozumiałeś sedno problemu. Chodzi dokładnie o sytuację którą zobrazowałeś na przykładzie skoroszytów ABC.xls oraz XYZ.xls. Kontynuując wywód... <br />W skoroszycie (nazwijmy go źródłowym) ABC.xls mam łącznie 5 arkuszy: <br />1. Nazwa:ABC to stopy zwrotów z akcji ABC w różnych horyzontach czasowych(łącznie kilkanaście kolumn) <br />2. Nazwa:midwig - taki sam arkusz dla każdego skoroszytu <br />3. Nazwa: bony - taki sam dla każdego skoroszytu <br />4 i 5: capm i capm2 to arkusze w których wyliczane są 2 modele i formuły które są tutaj uzyte będą odnosić się do pozostałych skoroszytów-chodzi o to żeby takie modele powstały dla każdej z akcji(a jest ich ok.100 a więc ok. 100 skoroszytów) <br />Dlatego sam rozumiesz, ze zależy mi bardzo na uproszczeniu sobie tej monotonnej pracy polegającej na wklejaniem formuł a następnie czasochłonnym dostosowywaniu ich do każdego skoroszytu. <br />Podsumowując, wszystkie arkusze, z wyjątkiem pierwszego mają tą samą nazwę <br />Mam nadzieję, ze nie zagmatwałam bardziej niż zrobiłam to z wersją pierwotną;) <br />Pozdrawiam! <br />Donia
po przemyśleniach... <br />Nie byłoby problemu żeby wszystkie arkusze dla każdego skoroszytu miały tą samą nazwę, ponieważ i tak bedę je odróżniała po nazwie skoroszytu(która de facto będzie informować o nazwie akcji) <br />Jeżeli jesteś w stanie przy takich warunkach rozwiązać ten problem to jestem otwarta na sugestie:) <br />Z góry wielkie dzięki:) <br />Donia
<P>Witam</P> <P><EM>Bo jeśli dobrze rozumiem: masz skoroszyt ABC.xls i jakieś formuły dajmy na to w Arkusz2, powiązane z danymi w Arkusz1 (np. jakieś stawki). I przy kopiowaniu Arkusz2 do innego skoroszytu, np. XYZ.xls, chciałabyś, aby dane do tych formuł w skopiowanym Arkusz2 pobierane były z Arkusza1, ale ze skoroszytu XYZ.xls - czy tak?</EM></P> <P>Może po przekopiowaniu wystarczy zmienić źródło łącza (z menu: edycja / łącza) z ABC.xls na XYZ.xls ?<BR></P>
<P>Moje rozwiązanie jest trochę inne:</P> <P>W arkuszu, np. ABC.xls, w komórkach, w których mają być formuły korzystające w obliczeniach, np. z komórki B2, gdzie podany jest aktualny kurs USD, z konkretnego arkusza o nazwie, np. Kursy, wpisuję formułę złozoną z odpowiednich funkcji - która spowoduje, ze będzie to kurs pobierany z komórki B2, zawsze z arkusza Stawki, zawsze z <STRONG>biezącego</STRONG> skoroszytu (wszystko powinno być wpisane w jednym wierszu):</P> <P><FONT face="Courier New" color=#000000 size=2>=ADR.POŚR("'" & </FONT><FONT face="Courier New" color=#000000 size=2><FONT color=#008000><STRONG>LEWY(</STRONG></FONT><FONT color=#ff1493>KOMÓRKA("nazwa_pliku")</FONT><FONT color=#008000>;</FONT><FONT color=#800080>ZNAJDŹ("]";<FONT color=#ff1493>KOMÓRKA("nazwa_pliku")</FONT>;1)</FONT><FONT color=#008000><STRONG>)</STRONG></FONT> & "Stawki'!B2"</FONT><FONT face="Courier New" color=#000000 size=2>)</FONT></P> <P><U>Wytłumaczenie:</U></P> <P>Chcę uzyskać odniesienie do komórki B2, znajdującej się zawsze w arkuszu Stawki, ale w <STRONG>biezącym</STRONG> skoroszycie. Uzyje zlozenia: odczytam nazwę biezącego skoroszytu, dodam do tego nazwę "Stawki" oraz odniesienie do komórki B2 i to wszystko podam, jako adres, z którego ma być pobierana wartość - wykorzystam funkcję ADR.POŚR:</P> <P><FONT face="Courier New" color=#000000 size=2>=ADR.POŚR(<BR> "'" &<BR> </FONT><FONT face="Courier New" color=#000000 size=2><FONT color=#008000><STRONG>LEWY(</STRONG></FONT><FONT color=#ff1493>KOMÓRKA("nazwa_pliku")</FONT><FONT color=#008000>;</FONT><FONT color=#800080>ZNAJDŹ("]";<FONT color=#ff1493>KOMÓRKA("nazwa_pliku")</FONT>;1)</FONT><FONT color=#008000><STRONG>)</STRONG></FONT> &<BR> "Stawki'!B2"<BR> </FONT><FONT face="Courier New" color=#000000 size=2>)</FONT></P><FONT face="Courier New" size=2> <P><BR></FONT><U>Po kolei:<BR></U><BR><FONT face="Courier New" size=2><FONT color=#ff1493>KOMÓRKA("nazwa_pliku")</FONT> <FONT face="Times New Roman" size=3>- wpisane dokładnie tak samo, bez podmieniania wyrazenia "nazwa_pliku" na cokolwiek innego - da w wyniku pełną ściezkę do nazwy pliku oraz nazwę biezącego arkusza.<BR>Wynik tej funkcji moze być np. taki: <FONT face="Courier New" size=2>c:\Moje dokumenty\Excelowe\[ABC.xls]Obliczenia<BR></FONT> <BR></FONT></FONT>Trzeba teraz podmienić nazwę biezącego arkusza ("Obliczenia") i wpisać na sztywno nazwę "Stawki". Znajdę (funkcja Znajdź), w którym miejscu jest nawias ] - a więc koniec adresu skoroszytu:</P> <P><FONT face="Courier New" size=2> <FONT color=#800080>ZNAJDŹ("]";<FONT color=#ff1493>KOMÓRKA("nazwa_pliku")</FONT>;1)</FONT></FONT></P> <P>Jak juz wiem, na której pozycji jest ten nawias, to chcę otrzymać adres tylko do niego - odczytam wszystkie litery, licząc od lewej do tego nawiasu:</P> <P><FONT face="Courier New" size=2> <FONT color=#008000>LEWY(<FONT color=#ff1493>KOMÓRKA("nazwa_pliku")</FONT>;ZNAJDŹ("]";<FONT color=#ff1493>KOMÓRKA("nazwa_pliku")</FONT>;1))</FONT></FONT></P> <P>Czyli dostanę w wyniku: <FONT face="Courier New" size=2>c:\Moje dokumenty\Excelowe\[ABC.xls]</FONT></P> <P>No to teraz złączę teksty:</P> <P><FONT face="Courier New" size=2>"'" & LEWY(KOMÓRKA("nazwa_pliku");ZNAJDŹ("]";KOMÓRKA("nazwa_pliku");1)) & "Stawki'!B2"</FONT></P> <P>i otrzymam:</P> <P><FONT face="Courier New" size=2>'c:\Moje dokumenty\Excelowe\[ABC.xls]Stawki'!B2</FONT></P> <P>Znaki pojedynczego apostrofu i wykrzyknika są potrzebne do skonstruowania prawidłowego odniesienia.</P> <P>Uzyskany adres w postaci tekstu umieszczam w funkcji ADR.POŚR i mam w wyniku odwołanie do komórki B2, zawsze z arkusza Stawki i zawsze z BIEZĄCEGO pliku.</P> <P>Wiem, wiem... strasznie to skomplikowana formuła ;)</P> <P>Jeśli ktoś chciałby z niej skorzystać, to wystarczy ją przekopiować, a zmienić tylko i <STRONG>wyłącznie</STRONG> tą część, gdzie podana jest <U>nazwa arkusza i adres komórki</U>, a więc tak, gdzie:</P> <P>"Stawki'!B2" - podać, np. "Kursy'!G10" albo np. "Wskaźniki'!$F$4", zwracając uwagę, aby pozostawić ten pojedynczy apostrof i wykrzyknik.</P> <P>Teraz mozemy uzyć tego odniesienia do komórki B2 w obliczeniach, np.:</P> <P><FONT face="Courier New"><FONT size=2>=A1 * ADR.POŚR("'" & <FONT face="Courier New" color=#000000><FONT color=#008000><STRONG>LEWY(</STRONG></FONT><FONT color=#ff1493>KOMÓRKA("nazwa_pliku")</FONT><FONT color=#008000>;</FONT><FONT color=#800080>ZNAJDŹ("]";<FONT color=#ff1493>KOMÓRKA("nazwa_pliku")</FONT>;1)</FONT><FONT color=#008000><STRONG>)</STRONG></FONT> & "Stawki'!B2"</FONT><FONT face="Courier New" color=#000000>)</FONT></FONT></FONT></P> <P>Mozna by było napisać prosą funkcję w VBA, aby łatwiej było to stosować, tylko trzeba by było dołączyć to, np. do personal.xls, a mogłyby to powodować problem przy przenoszeniu plików na inny komputer.</P> <P><U>Uwagi:</U></P> <OL> <LI>Jeśli arkusz, który zawiera takie formuły skopiujemy, np. do nowego skoroszytu, którego jeszcze nie zapiszemy, to zamiast wyniku moze pojawić się błąd, ale wystarczy go zapisać i powinno być ok. <LI>Jeśli w skoroszycie, do którego skopiujemy arkusz Obliczenia nie ma arkusza Stawki, to formuła zwróci błąd. <LI>Jeśli w komórce, do której się odnosimy poprzez tą naszą formułę nie ma wartości albo uzyjemy jej w obliczeniach w momencie, gdy zamiast liczby jest tam tekst, to równiez otrzymamy błąd.</LI></OL> <P>Mam nadzieję, ze podczas tłumaczenia nie zakradły się tu błędy ;)</P> <P>Ale tak w ogóle, to rozwiązanie <STRONG>ohcyRa</STRONG> wydaje mi się najlepsze! :)</P>
Udało się:) <br />Próbowałam wcześniej w taki sposób to rozwiązać ale było to niemożliwe...dopiero jak zmieniłam arkusze w ten sposób, ze w każdym skoroszycie maja taką sama nazwe to zamieniło mi łącza <br />Śliczne dzieki:D <br />Donia