Zwykle więc nie publikuję na stronach takich jak te, ale używam ich dość często. Dziękuję bardzo, jeśli wpadłem tutaj tylko po to, by zwiększyć moją naukę. Jednak dziś wieczorem jestem bardzo sfrustrowany. Oto moje wyzwanie: zagnieżdżam formułę hiperłącza w instrukcji if do dziennika cyfrowego, który stworzyłem na podstawie tego, czy są to informacje już wprowadzone do dziennika. Jeśli tak, link do następnego wiersza wprowadzania danych; jeśli ich nie ma, połącz się z pierwszym rzędem. Formułę stworzyłem z powodzeniem przy użyciu wielu łączy, jednak nie mogę jej uruchomić, jeśli formuła opiera się na unikalnym numerze umieszczonym w innej komórce (będącej nazwą arkusza dynamicznego, którą chcę osiągnąć). Numer to numer w pustym pojemniku, a arkusze są nazywane tym numerem. Muszę użyć jednej formuły hiperłącza zamiast setek, aby mój program miał trwały, dynamiczny interfejs, który nie wymaga ode mnie aktualizacji za każdym razem, gdy nasza organizacja dodaje więcej zasobów.
Oto przykład działającej formuły:
=IF('1016'!$J$7="", HYPERLINK("#'1016'!$J$7",""), HYPERLINK("#INDEX('1016'!$j$7:$j$56,MATCH(999999,'1016'!$j$7:$j$56,1)+1)",""))
To właśnie daje mi więcej siwych włosów, jak mówię:
=IF('"&X2&"'!$J$7="", HYPERLINK("#'"&X2&"'!$J$7",""), HYPERLINK("#INDEX('"&X2&"'!$j$7:$j$56,MATCH(999999,'"&X2&"'!$j$7:$j$56,1)+1)",""))
Zatem część formuły & amp; X2 i ... to w zasadzie jakikolwiek numer kosza, który użytkownik może wprowadzić do jednej komórki, a formuła będzie linkować do dziennika dla tego kosza. W rzeczywistości są to zdjęcia wklejone w tło arkuszy, które sprawiają, że obrazek wydaje się być linkiem do kliknięcia w ten sposób „” przyjaznej nazwy „pustej”.
To, co jest tak frustrujące, to to, że oba moje warunki hiperłącza działają same w sobie, ale kiedy podłączam tę samą dokładną składnię do części logicznej mojej funkcji if, łącze arkusza nie będzie działać, jeśli dziennik wprowadzania danych jest pusty. Uważam, że mam hiperłącze do fałszywej części instrukcji if, ale bez względu na to, co spróbuję, nie mogę uzyskać prawdziwej części mojej instrukcji if. Dostaję wiadomość z informacją, że link jest w zasadzie nieprawidłowy, błąd #REF lub błąd #VALUE. Przesunąłem moje skróty, moje znaki cudzysłowu, wypróbowałem funkcje łączenia zamiast powyższej składni, wypiłem więcej, zrobiłem przerwy, nazywacie to, nic nie działa. Poważnie się w tym momencie wściekam. Proszę pomóż mi, jeśli możesz. Wiem, że to musi być prosta poprawka. Jeszcze raz dziękuję. Jeśli muszę opublikować mój arkusz, nie będę w tym momencie pewien, jak to zrobić. Och, tak na marginesie, szukałem odpowiedzi bez końca w sieci i wygląda na to, że jestem jedyną osobą na naszej planecie, która próbuje to zrobić, a nasza organizacja marszczy brwi na jakikolwiek kod, proszę, bez VBA. Dziękuję Ci
źródło
Odpowiedzi:
W twoim pierwszym przykładzie
'1016'!$J$7=""
sprawdza, czy wartość komórki J7 na arkuszu 1016 jest pusta.W twoim drugim przykładzie
'"&X2&"'!$J$7=""
sprawdza, czy wartość komórki J7 na arkuszu i X2 i jest pusty, co nie powiedzie się, jeśli nie będzie mógł znaleźć arkusza o nazwie & amp; X2 i amp;The & amp; ” operuj konkatenuje łańcuchy, a nie odwołania do komórek, więc aby poprawnie zbudować odwołanie, musisz traktować je wszystkie jako ciąg znaków i odpowiednio sortować cytaty i konkatenację:
"'" & X2 &"'!$J7"
. Jednak po prostu testowałbyś wartość jednego ciągu na innym. Aby przekonwertować łańcuch na odwołanie do komórki, należy użyćINDIRECT()
. Coś takiego powinno działać:=IF( INDIRECT("'" & X2 & "'!$J$7",TRUE), true hyperlink, false hyperlink)
The
TRUE
parametr jest wymagany, aby powiedzieć INDIRECT, że łańcuch używa stylu odwołania do komórki w stylu A1, a nie domyślnego odniesienia R1C1.Musisz także naprawić swoje dynamiczne hiperłącza (prawdopodobnie przez połączenie ciągu „#” z przodu formuły).
źródło