Mam skoroszyt o nazwie „stu”, ma od 1 do 30 arkuszy. W komórce H4
połączyłem formułę:
=[sub.xlsx]Sheet1!$B$2
w arkuszu 1 : komórka H4 formuła w komórce H4
powinna znajdować się =[sub.xlsx]Sheet1!$B$2
w arkuszu 2 : komórka H4 formuła w komórce H4
powinna znajdować się =[sub.xlsx]Sheet1!$B$3
w arkuszu 3 : komórka H4 formuła w komórce H4
powinna znajdować się =[sub.xlsx]Sheet1!$B$4
w arkuszu 4 : komórka H4 formuła w komórce H4
powinna znajdować się =[sub.xlsx]Sheet1!$B$5
w arkuszu 5 : komórka H4 formuła w komórce H4
powinna być… i =[sub.xlsx]Sheet1!$B$6
tak dalej…
..................................
Dlatego w każdym arkuszu komórka nr nie powinna zmieniać się automatycznie. Nie będę musiał naciskać = znak i wchodzić raz po raz.
Odpowiedzi:
W programie Excel wpisz Alt+, F11aby otworzyć okno Visual Basic. Po lewej kliknij prawym przyciskiem myszy nazwę swojego arkusza kalkulacyjnego i
Insert
→Module
.Module1 - Code
Sub-okno zostanie otwarte po prawej stronie. Wstaw następujące okno w tym oknie:Teraz wróć do arkusza kalkulacyjnego. Dla zabawy, aby zobaczyć, jak to działa, wpisz
=SHEET_NUM()
dowolną komórkę. Powinien wyświetlać numer arkusza, na którym jest. Więc wejdźdo komórki
H4
na każdym arkuszu.SHEET_NUM()+1
Podwyrażenie oceni się2
naSheet1
,3
naSheet2
, etc ... - innymi słowy, liczba wierszy, które chcesz w celach informacyjnych.&
jest operatorem konkatenatu; połączy ciąg stały"[sub.xlsx]Sheet1!$B$"
z obliczonym numerem wiersza, co da pożądane odwołanie.INDIRECT
Funkcja przyjmuje ciąg znaków, który wygląda jak punkt odniesienia i DE-IT odniesienia; tzn. pobiera wskazaną wartość.Kilka ostrzeżeń:
stu.xlsx
odwołującym się do innego (sub.xlsx
), musisz mieć otwartą drugą książkę za każdym razem, gdy pracujesz z pierwszą - chociaż program Excel może odwoływać się do danych w zamkniętej książce,INDIRECT
funkcja nie może. Jeśli jest to problem, możesz wykonać manewr Kopiuj i Wklej Wartości..xlsm
plik i włączyć makra przy każdym otwarciu. (Lub wykonaj wyżej wspomniany manewr Kopiuj i Wklej Wartości).źródło
Poniższe kroki powinny uzyskać dokładnie taką formułę, jakiej szukasz, bez VBA:
Nie rób nic innego między krokami 1 i 7, chyba że wiesz, jak pracować z wybranymi wieloma arkuszami.
źródło
Najlepszym rozwiązaniem może być otwarcie pliku sub.xlsx, zgrupowanie wszystkich 30 arkuszy w stu, wstawienie jednej wersji formuły (np. = [Sub.xlsx] Arkusz 1! $ B 2 USD w H4 arkusza 1 stu), rozgrupowanie, a następnie ręczne dostosowanie H4 w każdym arkuszu STU (z wyjątkiem tego, w którym wprowadzono wzór, np. W arkuszu 2 zamień 2 na 3 itd.).
źródło