Jak zapobiec wycinaniu i wklejaniu odniesień zmieniających dane w formułach?

49

Arkusze Google mają funkcję polegającą na tym, że jeśli w formule znajduje się odwołanie do komórki danych, a dane z tej komórki są wycinane i wklejane w nowej lokalizacji, odwołanie w formule jest aktualizowane, aby wskazywało nową lokalizację komórki.

Chciałbym móc wycinać i wklejać moje dane bez zmiany formuł.

W przeszłości robiłem kilka ohydnych rzeczy, które obejmowały INDIRECT()funkcję obejścia tej funkcji, ale wygląda na to, że musi być łatwiejszy sposób. Jakieś sugestie?

grahamparki
źródło
2
zabawne ... Nigdy nie myślałem o tej funkcji jako o błędzie. Działa to w Excelu od dziesięcioleci.
mhoran_psprep
1
Czy znalazłeś czas, aby sprawdzić udzielone odpowiedzi? Być może możesz oznaczyć jedną z nich jako najlepszą odpowiedź.
Jacob Jan Tuinstra
1
Wiele różnych pytań znajduje się poniżej. Czy można to pytanie wyjaśnić? Myślę, że przykładem twojego problemu może być: Komórka A2 zawiera formułę taką jak „= B1 + 5”. B1 zawiera „42”. A2 wyświetla „47”, zgodnie z oczekiwaniami. Ale zdałeś sobie sprawę, że B1 nie powinien mieć w nim „42”, C1 powinien mieć „42”, a B1 powinien mieć „58”. Kliknij B1, „wytnij”, kliknij C1, wklej. B1 jest teraz puste (oczekiwane), C1 jest teraz „42” (oczekiwane), ale A2 nadal wyświetla „47”, ponieważ A2 automatycznie zaktualizowało się do „= C1 + 5”, aby wykonać cięcie i wklejanie (nie oczekiwane). To, czego chciałeś, to pozostać A2 „= B1 + 5”. Czy mam rację?
cesoid

Odpowiedzi:

22

=$A$1Notacja może być automatycznie przenoszone, jeżeli wartość w (powiedzmy) A1jest zmieniany.

Jedynym pewnym rozwiązaniem jest zawarcie wszystkich odniesień INDIRECT, np. =INDIRECT("$A$1")Lub nawet tylko =INDIRECT("A1").

Trudność z jednym z tych rozwiązań polega na tym, że masz wiele takich samych formuł, np

=A1
=A2
=A3
...
=A99

Zwykle należy wypełnić pierwszą, =A1a następnie skopiować i wkleić (lub przeciągnąć w dół za pomocą autouzupełniania), aby automatycznie wypełnić kolejną formułę. Jeśli jednak pierwsza formuła jest =$A$1lub =INDIRECT("A1")wtedy ta sztuczka nie zadziała (w rzeczywistości po to jest $- aby zapobiec automatycznej zmianie).

Jeśli masz wiele kolejnych formuł, jednym z rozwiązań jest:

  1. Utwórz formułę tak jak zwykle (użyj zwykłego =A1i automatycznego wypełniania)
  2. Użyj okna dialogowego zamień ( Ctrl+ H) i użyj opcji „szukaj w formułach”, aby zawinąć wszystko =A1, =A2... =A99w =INDIRECT("A1")itp. Uwaga: podczas wyszukiwania i zamiany możesz użyć wyrażeń regularnych.
Motti Strom
źródło
Zaktualizowana odpowiedź sugerująca użycie lepszego znajdź i zamień w nowych arkuszach kalkulacyjnych Google, które mogą zastąpić formuły i użyć wyrażeń regularnych,
Motti Strom
1
Czy możesz podać przykład, jakie byłyby parametry wyszukiwania / zamiany w celu zawijania wszystkich odwołań do komórek w formule za pomocą opcji POŚREDNIE?
Michael
Możesz użyć opcji POŚREDNIE w połączeniu z ROW (), aby uzyskać formułę działającą w bieżącym wierszu. Na przykład: = A1 + B1 staje się = POŚREDNIE („A” i ROW ()) + POŚREDNIE („B” i ROW ())
Gołąb Zły
31

Z forum Dokumentów Google :

Wybierz zakres komórek. Następnie użyj Ctrl+ C(kopiuj; powinno to umieścić komórki i ich formuły w buforze wklejania).

Teraz przeciągnij (najedź na krawędź zaznaczenia, aż kursor myszy zmieni się w dłoń; teraz możesz przeciągnąć) wybrane komórki do nowej pozycji.

Wróć do pierwotnej lewej górnej pozycji skopiowanych komórek i użyj Ctrl+ V(wklej).

Teraz powinieneś mieć dwa zestawy formuł odnoszące się do tych samych komórek.

Matt McClure
źródło
6
To jedyna odpowiedź, która zachowuje formuły.
amcnabb
3
Uzgodnione - to jedyna poprawna odpowiedź.
stevemidgley,
1
Dzięki! Byłem zaskoczony, że istnieje różnica między „Przeciągnij” a kopiuj / wklej!
rcreswick
Więc jeśli chcesz wycinać i wklejać, potrzebujesz tylko zaznaczonego zakresu + przeciągnij część, ale jeśli chcesz skopiować , potrzebujesz innych dodatkowych kroków, aby zachować oryginał.
Mu Mind
2
Lepsza metoda: zduplikuj arkusz, wytnij go z klonu, wklej do oryginalnego arkusza w nowym miejscu, w którym go potrzebujesz. Po zakończeniu usuń klon arkusza. W ten sposób odniesienia pozostają nienaruszone.
ADTC
30

Przekonałem się, szukając podobnego problemu i ostatecznie znalazłem rozwiązanie dla programu Excel, które wydaje się działać idealnie w arkuszach kalkulacyjnych Google.

W przypadku odwołań do komórek, których nie chcesz zmieniać podczas wklejania, po prostu dodaj $przed każdą częścią.

Tak G12by się stało$G$12

Komórka z arkusza kalkulacyjnego, którego używam, robi to, czego potrzebuję, wygląda mniej więcej tak:

 =$G$1&Sheet1!B3&Sheet1!A3&$G$2
Leonard
źródło
1
To mi nie zadziałało. Zobacz moją alternatywę poniżej webapps.stackexchange.com/questions/22558/...
Motti Strom
@Leonard, Wow, składnia jest okropna . Jest o wiele bardziej intuicyjny, jeśli jest odwrotnie, tzn. Komórki względne są używane, $podczas gdy komórki absolutne są domyślne.
Pacerier,
@Pacerier Całkowicie się z tobą zgadzam, choć działa, jest okropny i trudny do odczytania. Nie używam arkuszy kalkulacyjnych wystarczająco często, aby zrozumieć, co sugerujesz. Czy mógłbyś opracować?
Leonard,
@ Leonard, miałem na myśli, że domyślne zachowanie jest inne, więc zamiast tego $G$1&Sheet1!B3&Sheet1!A3&$G$2robimy G1&Sheet1!$B$3&Sheet1!$A$3&G2.
Pacerier,
1
@grahamparks: Potem głosuj i ewentualnie zostaw komentarz, dlaczego to nie jest rozwiązanie. Nie próbuj dodawać własnego komentarza do odpowiedzi.
ale
7

W arkuszach kalkulacyjnych Google do wycinania i wklejania komórek bez automatycznego przesuwania ich formuł używasz Ctrl+ Xdo wycinania (lub Ctrl+ Cdo kopiowania) i Ctrl+ Shift+ Vdo wklejania.

ShiftMówi Arkusze Google, aby zostawić swoje formuły.

zadziorny pingwin
źródło
fyi, jeśli używasz aplikacji takich jak Flycut (mac) z już aktywnym skrótem CTRL + SHIFT + V , spowoduje to konflikt ze skrótem arkusza kalkulacyjnego i blokowanie formuł nie będzie działać. Skrót wyłączyć Flycut app, albo po prostu zamknąć go najpierw przed wykonaniem Ctrl + Shift + V .
Hlung
13
Wydaje się, że modyfikowanie wklejania za pomocą Shift powoduje, że wartości wklejania w Arkuszu kalkulacyjnym Google są niezmodyfikowane.
Matt McClure,
4
Jest to niepoprawne - ctrl-shift-v po prostu wklei „wartości” twoich formuł. Zapobiegnie to transpozycji danych, ale wynikowe komórki będą zawierać wartości statyczne, a nie formuły.
stevemidgley,
1
Nie działa , -1.
Pacerier,
1
Nigdy nie tnę. Kiedy wklejasz ctrl+ shift+ v, zawsze kopiuje wartości, nawet jeśli zrobiłeś ctrl+ xna komórkach źródłowych.
sparebytes
5

Obejdź to w ten sam sposób, co w programie Excel:

KOPIUJ i wklej dane, a następnie wróć i usuń je z pierwotnego miejsca.

MaryC.fromNZ
źródło
3

Wytnij (zamiast Kopiuj) wydaje mi się działać, prawdopodobnie z tego samego powodu przeciąganie wybranych komórek działa - tzn. Jest to ta sama operacja. Jest to również jedyny znany mi sposób wklejania na inną stronę bez zmiany formuły.

Jeśli próbujesz wykonać Kopiowanie zamiast Przenieś, użyj metody przeciągania (skopiuj przed przeciągnięciem) lub skopiuj najpierw w innym miejscu strony.

Peter Tseng
źródło
2

Aby przenieść zakres komórek do nowej lokalizacji w Arkuszach Google:

1. Wybierz zakres komórek, które chcesz przenieść
2. Przesuń mysz do dowolnej krawędzi zaznaczenia, aż kursor zmieni się w dłoń
3. Przeciągnij komórki w nowe miejsce

Robi to, co powinien - przenosi je - aby wszystkie informacje o komórce pozostały dokładnie tak, jak były w pierwotnej lokalizacji.

ps. Google również to poinstruował tutaj, ale nie twierdzą, że możesz przeciągać z dowolnej krawędzi, tylko górnej, i dlatego moja instrukcja jest lepsza! :) Warto również zauważyć, że wybrane komórki muszą sąsiadować, aby to zadziałało.

Dniz
źródło
Bardzo fajny połów!
marikamitsos
Ta sama metoda jest również wymieniona tutaj . Nadal. Ten jest lepiej zbadany i wyjaśniony.
marikamitsos
1

Wykonaj kopię tekstu formuły zamiast kopii komórki: Użyj myszy, aby zaznaczyć tekst formuły i naciśnij CTRL + C. Następnie wybierz pole docelowe i naciśnij CTRL + V. To zachowanie formuły

Claus Rasmussen
źródło
1
Ale musisz powtórzyć to dla każdej komórki ... Czy istnieje sposób na skopiowanie tekstu przez wiele komórek?
Pacerier,
0

Najprościej jest po prostu wybrać wszystkie komórki, które chcesz przenieść, i przeciągnij / upuść tam, gdzie chcesz. Jeśli masz formuły w innych komórkach, które odwoływały się do pierwotnej lokalizacji przeniesionych komórek, formuły referencyjne automatycznie zaktualizują się do nowej lokalizacji przeniesionych komórek. Mam nadzieję że to pomoże! (Zakładając, że działa to w programie Excel, ale zrobiłem to tylko w Arkuszach Google).

Danny
źródło
0
  1. Wybierz komórki za pomocą myszy
  2. Skopiuj co schowka
  3. Przenieś wybrane komórki do nowej lokalizacji za pomocą myszy, przechwytując krawędź grupy
  4. Wklej ze schowka do pustej przestrzeni, z której właśnie wszystko wyprowadziłeś
Alex Debkaliuk
źródło
0

Właśnie Znajdź i zamień wszystkie wystąpienia „=” z „” (lub tyle wzorów Staram się jak mogę skopiować), aby wszystkie wzory na zwykły tekst. Kopiuję i wklejam komórki, a następnie dodaję „=” z powrotem.

Uwaga: prawdopodobnie nie będzie to działać w przypadku dużych arkuszy, ponieważ może mieć niezamierzone konsekwencje poprzez edycję innych komórek, ale zwykle działa dla moich celów.

Luke Redmore
źródło
0

Oto kolejna opcja:

  1. Przełącz do trybu „Pokaż formuły” (w menu Widok)
  2. skopiuj żądany obszar
  3. Wklej w zewnętrznym edytorze tekstu
  4. Wprowadź zmiany - może być tak proste, jak dodanie gdzieś spacji
  5. Skopiuj formuły z zewnętrznego edytora tekstu
  6. Wklej w obszarze docelowym w arkuszu
  7. Wyłącz opcję Pokaż formuły

Choć wydaje się to długą procedurą, w praktyce jest to tylko kilka kluczowych pociągnięć. Ponadto krok 4 jest obowiązkowy w mojej konfiguracji - bez niego Arkusze nadal będą aktualizować lokalizacje komórek, jakby były bezpośrednim kopiowaniem i wklejaniem. YMMV.

eran
źródło
0

Używanie INDIRECT()działa świetnie do zachowania bezwzględnej pozycji referencji po skopiowaniu i wklejeniu obiektów docelowych , ale problem polega na tym, że zachowuje również pozycję bezwzględną podczas kopiowania formuły , co oznacza, że ​​nie można łatwo rozszerzyć formuły na duże zasięg podczas korzystania z niego.

Rozwiązaniem jest połączenie INDIRECT()z ROW(), COLUMN()i ADDRESS()programowe wygenerowanie pozycji komórki docelowej na podstawie komórki formuły.

W najprostszym przypadku, na przykład gdy komórka docelowa ma stałą kolumnę i zawsze pozostaje w tym samym wierszu co formuła, można to zrobić w następujący sposób:

INDIRECT("A"&ROW())

Aby wprowadzić dynamiczne przesunięcia z komórki formuły, możesz użyć ADDRESS():

INDIRECT(ADDRESS(ROW()-1,COL()-4))

Na poniższym zrzucie ekranu formuły w B1:E1rozszerzono do 16 rzędów poniżej, a następnie A7:A10wycięto sekwencję liczb i wklejono 6 komórek w dół. Jak widać, najprostsze formuły zostały automatycznie dostosowane i zsynchronizowane, podczas gdy naiwne użycie INDIRECT()nie ekstrapolowało poprawnie wszystkich wierszy, ale dwie formuły, które używają INDIRECT()wraz z programowym wyszukiwaniem lokalizacji wierszy i kolumn, były w stanie zachować swoje odniesienia:

Zdjęcie demonstracyjne

Will Chen
źródło
-1

Możesz naciskać, F4aby przełączać się między różnymi opcjami absolutnego odniesienia, gdy kursor znajduje się w komórce lub zakresie. Działa to na komputerach Mac i Windows.

Mick Liubinskas
źródło