Як не допустити вирізання та вставлення даних, що змінюють посилання у формулах?


49

У Google Sheets є функція, коли у вас є формула посилання на комірку даних і ви вирізаєте дані з цієї комірки та вставляєте їх у нове місце, посилання у формулі оновляється, щоб вказувати на нове місце комірки.

Я хотів би мати можливість вирізати та вставити свої дані без зміни моїх формул.

У минулому я робив деякі жахливі речі, пов’язані з INDIRECT()функцією, щоб обійти цю функцію, але, схоже, має бути простіший спосіб. Будь-які пропозиції?


2
смішно ... Я ніколи не думав про цю особливість як про помилку. Це працювало в Excel десятиліттями.
mhoran_psprep

1
Ви знайшли час перевірити відповіді? Можливо, ви можете позначити одну з них як найкращу відповідь.
Яків Ян Туінстра

1
Нижче відповіді на багато різних питань. Чи можна питання прибрати? Я думаю, що прикладом вашої проблеми може бути такий: Осередок А2 містить формулу типу "= B1 + 5". В1 містить "42". A2 відображає "47", як очікувалося. Але ви зрозуміли, що в B1 не повинно бути "42", у C1 має бути "42", а в B1 - "58". Ви натискаєте на В1, "вирізаєте", натискаєте на С1, вставляєте. B1 тепер порожній (очікується), C1 зараз "42" (очікується), але на A2 все ще відображається "47", оскільки A2 автоматично оновився до "= C1 + 5", щоб слідкувати за вирізанням та вставкою (не очікується). Що ви хотіли, щоб A2 залишився "= B1 + 5". Маю рацію?
цезоїд

Відповіді:


22

=$A$1Позначення також може бути автоматично переміщається , якщо значення в (скажімо) A1змінюється.

Єдине вірне рішення - включити всі свої посилання INDIRECT, наприклад, =INDIRECT("$A$1")або навіть просто =INDIRECT("A1").

Труднощі з будь-яким із цих рішень полягають у тому, що у вас багато однакової формули, наприклад

=A1
=A2
=A3
...
=A99

Як правило, ви б заповнили першу, =A1а потім скопіювали та вставили (або перетягніть вниз за допомогою автозаповнення), щоб автоматично заповнити послідовну формулу. Якщо, однак, перша формула є =$A$1або =INDIRECT("A1")тоді цей трюк не буде працювати (насправді, це те, що $- для того, щоб не змінити його автоматично).

Якщо у вас багато послідовних формул, одне рішення:

  1. Створіть формулу як зазвичай (використовуйте звичайну =A1та автоматичну заповнення)
  2. Використовуйте діалогове вікно заміни ( Ctrl+ H) та використовуйте "пошук у формулах", щоб обернути все =A1, =A2... =A99у =INDIRECT("A1")тощо.

Оновлена ​​відповідь, щоб запропонувати краще використовувати «Знайти та замінити» в нових електронних таблицях Google, які можуть замінити формули та використовувати регулярні вирази,
Motti Strom

1
Чи можете ви навести приклад того, якими були б параметри пошуку / заміни, щоб обернути всі посилання комірок у формулу з INDIRECT?
Майкл

Ви можете використовувати INDIRECT у поєднанні з ROW (), щоб мати формулу, яка працює на поточному рядку. Наприклад: = A1 + B1 стає = INDIRECT ("A" & ROW ()) + INDIRECT ("B" & ROW ())
Злий Голуб

31

З форуму Документів Google :

Виберіть діапазон комірок. Потім використовуйте Ctrl+ C(копіювати; це повинно помістити комірки та їх формули в буфер вставки).

Тепер перетягніть (наведіть курсор миші на край вибору, поки курсор миші не зміниться на руку; тепер ви можете перетягнути) вибрані комірки на нове місце.

Поверніться до вихідного верхнього лівого положення скопійованих комірок та скористайтеся Ctrl+ V(вставити).

Тепер у вас повинно бути два набори формул, обидві посилання на однакові комірки.


6
Це єдина відповідь, яка зберігає формули.
amcnabb

3
Погоджено - це єдина правильна відповідь.
stevemidgley

1
Дякую! Мене здивувало, що існує різниця між "перетягуванням" та копіюванням / вставкою!
rcreswick

Тож якщо ви хочете вирізати та вставити, вам просто потрібен діапазон вибору + перетягніть частину, але якщо ви хочете скопіювати , потрібні інші додаткові кроки для збереження оригіналу.
Mu Mind

2
Кращий спосіб: скопіюйте аркуш, вирізаний з клону аркуша, вставте в оригінальний лист в новому місці, де вам це потрібно. Коли ви закінчите, видаліть клон аркуша. Таким чином, посилання залишаються без змін.
ADTC

30

З цією проблемою зіткнувся з подібною проблемою і знайшов рішення для Excel, який, здається, прекрасно працює в електронних таблицях Google.

Для посилань на клітинки, які ви не бажаєте змінювати, просто додайте їх $перед кожною частиною.

Так G12би стало$G$12

Клітина з електронної таблиці, яку я використовую, робить те, що мені потрібно, виглядає приблизно так:

 =$G$1&Sheet1!B3&Sheet1!A3&$G$2

1
Це не спрацювало для мене. Дивіться мою альтернативу нижче webapps.stackexchange.com/questions/22558/…
Motti Strom

@ Леонард, Нічого, синтаксис жахливий . Це набагато інтуїтивніше, якщо це навпаки, тобто відносні клітини використовують, $коли абсолютні клітини за замовчуванням.
Печер'є

@Pacerier Я повністю згоден з вами, хоча це працює, але це жахливо і важко читати. Я не використовую електронних таблиць досить часто, щоб зрозуміти, що ти пропонуєш. Не могли б ви детальніше розробити?
Леонард

@Leonard, я мав на увазі поведінку за замовчуванням інша, тому замість цього $G$1&Sheet1!B3&Sheet1!A3&$G$2ми робимо G1&Sheet1!$B$3&Sheet1!$A$3&G2.
Печер'є

1
@grahamparks: Тоді скажімо, і, можливо, залиште коментар, чому це не рішення. Не намагайтеся додати власний коментар у відповідь.
але

7

У електронних таблицях Google для вирізання та вставки клітинок без автоматичного зміщення їх формул ви використовуєте Ctrl+ Xдля вирізання (або Ctrl+ Cдля копіювання) та Ctrl+ Shift+ Vдля вставки.

Повідомляє ShiftGoogle Sheets залишати формули в спокої.


fyi, якщо ви використовуєте додатки на зразок Flycut (mac) із ярликом CTRL + SHIFT + V, який вже активний, то це буде суперечити ярлику електронної таблиці та блокування формули не працюватиме. Ярлик Відключити Flycut додатки в, або просто кинути його першим , перш ніж робити CTRL + SHIFT + V .
Hlung

13
Зміна зміни пасти Shift, мабуть, робить значення вставки Google Spreadsheet, а не немодифіковані формули.
Метт МакКлюр

4
Це неправильно - ctrl-shift-v просто вставить "значення" ваших формул. Це не дозволить перенести ваші дані, але отримані комірки будуть містити статичні значення, а не формули.
stevemidgley

1
Не працює , -1.
Pacerier

1
Я ніколи не ріже. Коли ви вставляєте ctrl+ shift+ v, він завжди копіює значення, навіть якщо ви робили ctrl+ xу вихідні комірки.
запчастини

5

Робіть це так само, як і в Excel:

Скопіюйте та вставте дані, а потім поверніться та видаліть їх із початкового місця.


3

Зрізання (замість Copy), здається, працює для мене, ймовірно, з тієї ж причини працює перетягування вибраних комірок - тобто це та сама операція. Це також єдиний спосіб, який я знаю, щоб вставити на іншу сторінку без зміни формули.

Якщо ви намагаєтеся зробити Copy замість Move, скористайтеся методом перетягування (скопіюйте перед перетягуванням) або скопіюйте його спочатку десь на сторінці.


2

Щоб перемістити діапазон комірок на нове місце в Google Таблицях:

1. Виберіть діапазон комірок, які потрібно перемістити.
2. Перемістіть курсор миші до будь-якого краю виділення, поки курсор не зміниться в руку.
3. Перетягніть клітинки на нове місце

Це робить все, що слід, - переміщує їх, - тому вся інформація комірок залишатиметься точно такою, якою вона була в їх первісному місці.

пс. Google також дав тут інструкцію, але вони не кажуть, що можна перетягувати з будь-якого краю, лише з верхнього, і тому моя інструкція краща! :) Також добре зазначити, що вибрані клітинки повинні бути сусідніми, щоб це працювало.


Дуже приємний улов!
marikamitsos

Той же метод згадується тут , як добре . Все-таки. Це краще вивчити та пояснити.
marikamitsos

1

Зробіть текстову копію формули замість клітинки: Виберіть текст формули за допомогою миші та натисніть CTRL + C. Потім виберіть поле призначення та натисніть CTRL + V. Це збереже формулу


1
Але вам доведеться повторити це для кожної комірки .... Чи є якийсь спосіб зробити копіювання тексту через декілька комірок?
Pacerier

0

Найпростіший спосіб - просто вибрати всі комірки, які ви хочете перемістити, і перетягніть туди, куди ви їх хочете. Якщо у вас є формули в інших клітинках, які посилаються на початкове місце розташування осередків, які ви перемістили, контрольні формули автоматично оновляться до нового місця розташування комірок, які ви перемістили. Сподіваюся, це допомагає! (Припустимо, що це працює в Excel, але я це робив лише в Google Таблицях).


0
  1. Виберіть клітинки за допомогою миші
  2. Скопіюйте буфер обміну
  3. Перемістіть вибрані клітинки на нове місце за допомогою миші, захопивши край групи
  4. Вставте з буфера обміну в порожній простір, з якого ви просто перемістили все

0

Я просто знаходжу та замінюю всі екземпляри '=' на '' (або стільки формул, які я намагаюсь скопіювати, як тільки можу), щоб перетворити всі формули в звичайний текст. Я копіюю і вставляю комірки, а потім додаю "=" назад.

Зауважте: це, ймовірно, не буде працювати для величезних аркушів, оскільки це може мати непередбачувані наслідки, редагуючи інші клітини, але зазвичай це працює для моїх цілей.


0

Ось ще один варіант:

  1. Перейдіть у режим "Показати формули" (у меню Перегляд)
  2. скопіюйте потрібну область
  3. Вставте у якийсь зовнішній текстовий редактор
  4. Внести якісь зміни - може бути настільки ж просто, як десь додати пробіл
  5. Скопіюйте формули із зовнішнього текстового редактора
  6. Вставити в цільову область на аркуші
  7. Вимкнути Показати формули

Хоча це здається довгою процедурою, на практиці це лише кілька ключових ударів. Крім того, крок №4 є обов'язковим у моїх налаштуваннях - без цього «Листи» все одно оновлюватимуть місцях комірок, як якщо б це була пряма копія та вставка. YMMV.


0

Використання INDIRECT()відмінно підходить для збереження абсолютного положення посилань після того, як цілі скопійовані та вставлені, але проблема полягає в тому, що воно також зберігає абсолютне положення при копіюванні формули , що означає, що ви не можете легко розширити формулу для покриття великого діапазон при його використанні.

Рішення полягає в поєднанні INDIRECT()з ROW(), COLUMN()та ADDRESS()програмному генеруванні позиції цільової комірки на основі комірки формули.

У найпростішому випадку, наприклад, коли цільова комірка має фіксований стовпець і завжди залишається в тому ж рядку, що і формула, це можна зробити так:

INDIRECT("A"&ROW())

Для того, щоб запровадити динамічні компенсації з комірки формули, ви можете використовувати ADDRESS():

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

На нижньому скріншоті формули в посиланнях B1:E1були розширені на 16 рядків внизу, а потім послідовність цифр у A7:A10було вирізано та вставлено 6 комірок. Як бачимо, найпростіші формули були автоматично налаштовані та десинхронізовані, тоді як наївне використання INDIRECT()не екстраполювало належним чином всі рядки, але дві формули, які використовують INDIRECT()поряд із програмним пошуком місць рядків та стовпців, змогли підтримувати свої посилання:

Демонстраційна картина


-1

Ви можете натиснути, F4щоб перейти через різні параметри абсолютного посилання, коли курсор знаходиться на комірці або діапазоні. Це працює на Mac та Windows.

Використовуючи наш веб-сайт, ви визнаєте, що прочитали та зрозуміли наші Політику щодо файлів cookie та Політику конфіденційності.
Licensed under cc by-sa 3.0 with attribution required.