Як я можу зв’язати клітинку в електронних таблицях Google до комірки в іншому документі?


178

У мене є щомісячна електронна таблиця, яка спирається на цифри попереднього місяця. Я хотів би імпортувати ці значення динамічно, а не вирізати та вставляти їх. Чи можливо це? Як це зробити?


До речі, я знаю, що це можливо так, як я це робив один раз, але я більше не можу знайти інформацію або аркуш, на якому я це зробив. Якщо я знайду її, я опублікую оновлення.
Jeff Yates

Відповіді:


183

IMPORTRANGE() виявляється функцією, яку ви хочете.

Із списку функцій електронних таблиць Google :

Google Електронні таблиці дозволяють посилатися на іншу робочу книгу в електронній таблиці, яку ви зараз редагуєте, використовуючи функцію ImportRange. ImportRange дозволяє перетягувати одну або кілька значень комірок з однієї електронної таблиці в іншу. Щоб створити власні формули ImportRange, введіть = importRange (ключ таблиці, діапазон). Для мов, де кома використовується для десяткового поділу, використовуйте крапку з комою замість коми, щоб розділити аргументи у вашій формулі.

Ключ електронної таблиці - це STRING, яке є ключовим значенням URL-адреси електронної таблиці.

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

З огляду на те, що два аргументи є STRING, вам потрібно укласти їх у лапки або посилатися на комірки, у яких є рядкові значення.

Наприклад:

= importrange ("abcd123abcd123", "sheet1! A1: C10") "abcd123abcd123" - це значення в атрибуті "key =" в URL-адресі цільової електронної таблиці, а "sheet1! A1: C10" - це діапазон, який бажано імпортувати.

= importrange (A1, B1) Клітина A1 містить рядок ABCD123ABCD123, а комірка B1 містить sheet1! A1: C10

Примітка. Для того, щоб використовувати ImportRange, ви повинні бути додані як переглядач або співпрацівник до електронної таблиці, з якої ImportRange витягує дані. В іншому випадку ви отримаєте цю помилку: "#REF! Error: Запрошений ключ електронної таблиці, назва аркуша чи діапазон комірок не знайдено."

"key" - це, звичайно, рядок у URL-адресі електронної таблиці, що відповідає key=параметру.

Я просто перевірив це, створивши дві електронні таблиці. У комірку А1 першого кладу рядок. У комірку А1 другої я поставив =importRange("tgR2P4UTz_KT0Lc270Ijb_A","A1")і вона відобразила рядок з першої електронної таблиці. (Ваш ключ, очевидно, буде іншим.)

(Формат функції може залежати від вашої локалі У Франції формула не діє з коми, так що вам потрібно замінити його з коми :. =importRange("tgR2P4UTz_KT0Lc270Ijb_A";"A1"))

ПРИМІТКИ:

  1. Наразі Google встановлює жорсткий ліміт - 50 "формул посилань між робочими книгами" на електронну таблицю. Джерело: Обмеження розміру Документів, Таблиць та Слайдів Google . (г / т Дж. Дж. Рохрер )

  2. "Нова" електронна таблиця Google (незабаром стане стандартом) видаляє обмеження 50-межової довідкової формули для крос-робочої книги ( підтримка Google ) (г / т Якова Яна Туінстра )

  3. У "нових" Таблицях Google ви також використовуєте всю URL-адресу в якості ключа ( Підтримка Google ) (h / t  Punchlinern )


3
@Al: Так! Це воно! Дякую.
Jeff Yates

+1 Вау! Я не розумів, що існує версія в Інтернеті. Інший варіант - використовувати сценарій Google Apps. Створіть функцію, яка використовує SpreadsheetApp.openById ([ID]). GetRange () та встановіть для цього локальний діапазон.
Еван Плейс

3
Можливо, варто відзначити, що вас обмежать 50 (на електронну таблицю?) (Жорсткий ліміт Google): support.google.com/drive/answer/37603?hl=uk
JJ Rohrer

4
У новій електронній таблиці Google (незабаром стане стандартною) обмеження 50 було вилучено: support.google.com/drive/answer/3093340?hl=uk
Jacob Jan Tuinstra

4
Крім того, у нових таблицях Google ви використовуєте всю URL-адресу як ключову. Крім того, при першому введенні функції вам буде запропоновано надати доступ до запитуваного аркуша.
Punchlinern

29

FYI, якщо ви хочете посилатися на інший аркуш у цій іншій таблиці, назву аркуша НЕ слід перераховувати:

використання

=importRange("tgR2P4UTz_KT0Lc270Ijb_A","Sheet Name!A1:A10")

замість

=importRange("tgR2P4UTz_KT0Lc270Ijb_A","'Sheet Name'!A1:A10")


6
Дякую. Ви повинні додати це як коментар до іншої відповіді або навіть просто відредагувати цю відповідь.
studgeek

10

У новому інтерфейсі ви повинні просто мати можливість ввести =клітинку, а потім просто перейти на інший аркуш і вибрати потрібну клітинку. Якщо ви хочете зробити це вручну або використовуєте старий інтерфейс, ви можете просто зробити =Sheet1!A1, де Sheet1назва аркуша, і чи A1є клітинка на тому аркуші, який вам цікавий. Це ідентично Microsoft Excel.


6
якщо в назві аркуша є пробіли, використовуйте "Цей інший аркуш"! A1
akira

12
А як із зовсім іншим документом, про що я питав у питанні?
Джефф Йейтс

@jeff Вибачте; Ви не згадали про "документ" у тілі, і чомусь у голові я подумав "аркуш". Наскільки мені відомо, ви не можете динамічно посилатися на інший документ . Але ви можете використовувати кілька аркушів, а не декілька документів, і в цей момент ви можете зробити те, що я запропонував. Ось як я управляю своїми місячними фінансами саме з цієї причини.
Бенджамін Поллак

Це добре :) Я знаю, що є спосіб зробити це так, як я насправді це зробив сам, але я забув, і не можу знайти аркуш, на якому я це зробив.
Джефф Йейтс

Це не відповідає на поставлене запитання - це мова про інші аркуші того ж документа.
Брендан

4

Я знайшов цей синтаксис за допомогою Insert -> Визначити новий діапазон

ХАРАКТЕРИСТИКА ДЛЯ ПОВЕРНЕННЯ ІНШИХ ПРОСМОТРОВ:

Весь стовпець: "Електронна таблиця з пробілами в назві": A: A

Весь стовпець B: "Електронна таблиця з пробілами в назві"! B: B

тощо.

Тоді ви можете використовувати його як:

=COUNTIF('First Page'!B:B, "valueToMatch")

1
Чи це також можливо для посилань поза електронною таблицею?
Яків Ян Туінстра

@JacobJanTuinstra, що ви маєте на увазі "поза" електронної таблиці?
Том Роджеро

6
Ну а IMPORTRANGEфункція може імпортувати дані з іншої електронної таблиці. Встановлення діапазонів мається на увазі (можливо) лише в електронній таблиці. Це те, що я мав на увазі ззовні.
Яків Ян Туінстра

Це не відповідає на поставлене запитання - це лише опис того, як посилатися на інший аркуш того ж документа.
Брендан

@brendan використання, IMPORTRANGEяк сказав Яків.
Том Роджеро

2

ось як я це зробив (повторно доповнено 'importrange ()'):

  • відкрити редактор сценаріїв ("інструменти" -> "скрипти" -> "редактор сценаріїв")
  • надайте таку функцію (без будь-яких перевірок, це потрібно вдосконалити, але ви отримаєте загальне уявлення):
функція REMOTEDATA (inKey, inRange) {

  var outData;  
  var ss = SpreadsheetApp.openById (inKey);

  if (ss) {
     outData = ss.getRange (inRange) .getValues ​​();
  }

  повернути вихідДані;
}
  • використовуйте таку формулу, як ця у вашій таблиці:
= SUM (REMOTEDATA ("ключ", "Назва листа! A1: A10"))

"ключ" - це ключ документа, ви знаходите його в параметрі "key = xyz" URL-адреси документа.

Документація до " служб електронних таблиць " надає додаткову інформацію по цій темі.


4
Яка була б перевага реалізувати це самостійно, а не використовувати існуючу функцію?
Джефф Йейтс

1
@Jeff Yates: немає, я просто реалізував це, не знаючи importrange (). спортивне майстерність, знаєте? все на шляху просто-тому, що я можу :)
akira

1
на жаль, користувацькі функції електронних таблиць більше не можуть відкривати інші електронні таблиці, використовуючи SpreadsheetApp.openById()або SpreadsheetApp.openByUrl()-> developers.google.com/apps-script/guides/sheets/…
Francesco Vadicamo

-2

Я зробив це дуже просто, використовуючи Запит, наприклад, у мене є 2 аркуші ABC і XYZ, і я хочу імпортувати діапазон від A1 до C30 з Abc до XYZ, клацніть на клітинку, де ви хочете, щоб діапазон з'явився, і напишіть це:

=QUERY(ABC!A1:C30)

Примітка: Якщо в назві аркуша є пробіли, то, звичайно, ви пишете це:

=QUERY('ABC 1'!A1:C30)


7
ОП запитала, як імпортувати комірки з іншого документа . Можна QUERYце зробити?
Відар С. Рамдал

4
@ VidarS.Ramdal Це може, але це потрібно, importrange("abcd123abcd123", "sheet1!A1:C10")наприклад, =query(importrange("abcd123abcd123", "sheet1!A1:C10"));-)
Fuhrmanator
Використовуючи наш веб-сайт, ви визнаєте, що прочитали та зрозуміли наші Політику щодо файлів cookie та Політику конфіденційності.
Licensed under cc by-sa 3.0 with attribution required.