Tomek Badurek

Tomek Badurek Student, WAT

Temat: Rozdzielenie arkusza z danymi i wynikami

Cześć,
Mam mały problem z excelem. Potrzebuję przenieść formuły z zachowaniem relatywnego adresu funkcji tzn. mam arkusz, w którym są dane z których stworzyłem pare wykresów i tabel zmieniających wartości w zależności od wyboru w formularzu userform. Potrzebuje rozdzielić dane od wykresów i tabel (w jednym arkuszu dane, w drugim wykresy i tabele) tak abym nie musiał każdej funkcji ręcznie zmieniać (np. zeby wykresy i tabele miały odwołanie do innego arkusza). O ile wykresy wystarczy skopiować i źródło danych zostaje to samo to mam gorszy problem z tabelami, ponieważ po skopiowaniu ich biorą dane z nowego arkusza nie ze starego.
Z góry dzięki za pomoc :)Ten post został edytowany przez Autora dnia 05.01.14 o godzinie 18:37
Łukasz N.

Łukasz N. ETL Developer

Temat: Rozdzielenie arkusza z danymi i wynikami

PPM (Prawy Przycisk Myszy) na arkuszu jaki chcemy skopiować >>> Przesuń/Skopiuj>>> Z listy wyboru wybieramy nowy Arkusz. Należy dodatkowo zaznaczyć "Utwórz kopię".

Pozdrawiam

Ps. Nazwy opcji podałem z głowy, ponieważ używam tylko angielskiej wersji Excela.
Tomek Badurek

Tomek Badurek Student, WAT

Temat: Rozdzielenie arkusza z danymi i wynikami

Może źle to napisałem. Potrzebuje przenieść tabele i formularze userform (z arkusza nr 1) do arkusza n2 tak aby dane do nich były pobierane z arkusza nr 1.
Funkcji i wykresów jest znaczna ilość więc opcja dopisywania !arkusz nr 1 do każdego adresu raczej odpada.
Niezależnie czy wpisany mam adres względny czy bezwzględny po skopiowaniu tabel i wykresów funkcje zmieniają adres odniesiania na arkusz nr 2, próbowałem też wklejania specjalnego i nie tworzy mi połączenia z danymi z arkusza nr 1Ten post został edytowany przez Autora dnia 05.01.14 o godzinie 19:08
Łukasz N.

Łukasz N. ETL Developer

Temat: Rozdzielenie arkusza z danymi i wynikami

Panie Tomaszu,

proszę wypróbować takie oto makro na kopii pliku z jakim Pan pracuje (nie chcemy niczego uszkodzić):
Sub addSheetAddressToFormulas()
Dim r As Range
Set r = Selection
With Application
.ScreenUpdating = False
.Calculation = xlCalculationManual
.EnableEvents = False
End With

'create temp worksheet
Worksheets.Add().Name = "TEMP_FORMULA_SHEET"

For Each c In r 'c - single cell
If c.HasFormula Then
'cut cell with formula and paste into temp worksheet
c.Cut Sheets("TEMP_FORMULA_SHEET").Range(c.Address)
'cut cell and paste it back to original worksheet
Sheets("TEMP_FORMULA_SHEET").Range(c.Address).Cut Sheets(c.Parent.Name).Range(c.Address)
End If
Next c


With Application
.DisplayAlerts = False
'remove temp worksheet
Worksheets("TEMP_FORMULA_SHEET").Delete
.DisplayAlerts = True
.ScreenUpdating = True
.Calculation = xlCalculationAutomatic
.EnableEvents = True
End With
End Sub

Kod ten ma za zadanie znalezienie wśród zaznaczonych komórek takich, które zawierają jakąkolwiek formułę i zamienienie typowego adresowania komórek (np. A1, $A1, A$1, $A$1 itd) na ich odpowiedniki posiadające nazwę arkusza (np. Arkusz1!A1, Arkusz1!$A1 itd)

Mając tak zmienione adresowanie, powinien Pan móc bez problemu kopiować komórki z formułami do innych arkuszy bez obaw że będą się one odwoływać do błędnych zakresów.

PozdrawiamTen post został edytowany przez Autora dnia 05.01.14 o godzinie 22:12

Następna dyskusja:

Ciekawostki arkusza




Wyślij zaproszenie do