Bagaimana cara menautkan sel di Google Spreadsheets ke sel di dokumen lain?

178

Saya memiliki spreadsheet bulanan yang mengandalkan angka dari bulan sebelumnya. Saya ingin mengimpor nilai-nilai ini secara dinamis daripada memotong dan menempelkannya. Apakah ini mungkin? Bagaimana saya melakukannya?

Jeff Yates
sumber
Ngomong-ngomong, saya tahu ini mungkin karena saya pernah melakukannya sekali, tetapi saya tidak dapat menemukan informasi lagi atau lembar tempat saya melakukannya. Jika saya menemukannya, saya akan memposting pembaruan.
Jeff Yates

Jawaban:

183

IMPORTRANGE() tampaknya merupakan fungsi yang Anda inginkan.

Dari daftar fungsi Google spreadsheet :

Google Spreadsheets memungkinkan Anda referensi buku kerja lain dalam spreadsheet yang sedang Anda edit dengan menggunakan fungsi ImportRange. ImportRange memungkinkan Anda menarik satu atau lebih nilai sel dari satu spreadsheet ke spreadsheet lain. Untuk membuat rumus ImportRange Anda sendiri, masukkan = importRange (kunci spreadsheet, rentang). Untuk bahasa tempat koma digunakan untuk pemisahan desimal, gunakan tanda titik koma alih-alih koma untuk memisahkan argumen dalam rumus Anda.

Spreadsheet-key adalah STRING yang merupakan nilai kunci dari URL spreadsheet.

Rentang adalah STRING yang mewakili rentang sel yang ingin Anda impor, opsional termasuk nama sheet (default ke sheet pertama). Anda juga dapat menggunakan nama rentang jika diinginkan.

Mengingat bahwa kedua argumen tersebut adalah STRING, Anda harus menyertakannya dalam tanda kutip atau merujuk ke sel yang memiliki nilai string di dalamnya.

Sebagai contoh:

= importrange ("abcd123abcd123", "sheet1! A1: C10") "abcd123abcd123" adalah nilai pada atribut "key =" pada URL target spreadsheet dan "sheet1! A1: C10" adalah rentang yang diinginkan untuk diimpor.

= importrange (A1, B1) Sel A1 berisi string ABCD123ABCD123 dan sel B1 berisi sheet1! A1: C10

Catatan: Untuk menggunakan ImportRange, Anda harus ditambahkan sebagai penampil atau kolaborator ke lembar bentang tempat ImportRange mengambil data. Jika tidak, Anda akan mendapatkan kesalahan ini: "kesalahan #REF!: Kunci spreadsheet yang diminta, judul sheet, atau rentang sel tidak ditemukan."

"key" tentu saja adalah string dalam URL untuk spreadsheet yang cocok dengan key=parameter.

Saya baru saja mengujinya dengan membuat dua spreadsheet. Di sel A1 yang pertama, saya meletakkan string. Di sel A1 yang kedua, saya meletakkan =importRange("tgR2P4UTz_KT0Lc270Ijb_A","A1")dan menampilkan string dari spreadsheet pertama. (Kunci Anda jelas akan berbeda.)

(Format fungsi mungkin tergantung pada lokasi Anda Di Perancis rumus ini tidak berlaku dengan koma, sehingga Anda akan perlu untuk menggantinya dengan titik koma. =importRange("tgR2P4UTz_KT0Lc270Ijb_A";"A1"))

CATATAN:

  1. Google saat ini menetapkan batas keras 50 "formula referensi buku kerja" per spreadsheet. Sumber: Google Docs, Sheets, dan Slides batas ukuran . (h / t JJ Rohrer )

  2. Google Spreadsheet "baru" (segera menjadi standar) menghapus batas 50 dari 50 "formula referensi buku kerja silang ( Dukungan Google ) (h / t Jacob Jan Tuinstra )

  3. Di "baru" Google Sheets Anda juga menggunakan seluruh URL sebagai kunci ( Dukungan Google ) (h / t  Punchlinern )

bir
sumber
3
@Al: Ya! Itu dia! Terima kasih.
Jeff Yates
+1 Whoa! Saya tidak menyadari ada versi in-line. Pilihan lainnya adalah menggunakan skrip Google Apps. Buat fungsi yang menggunakan SpreadsheetApp.openById ([ID]). GetRange () dan atur rentang lokal dengan itu.
Evan Plaice
3
Mungkin perlu dicatat bahwa Anda akan dibatasi hingga 50 di antaranya (per spreadsheet?) (Batas Google yang keras): support.google.com/drive/answer/37603?hl=id
JJ Rohrer
4
Di Google Spreadsheet baru (segera menjadi standar), batas 50 telah dihapus: support.google.com/drive/answer/3093340?hl=id
Jacob Jan Tuinstra
4
Juga, di Google Sheets baru Anda menggunakan seluruh URL sebagai kunci. Selain itu, Anda diminta untuk memberikan akses ke lembar yang diminta saat Anda pertama kali memasuki fungsi.
Punchlinern
29

FYI jika Anda ingin mereferensikan sheet lain di dalam spreadsheet lain, nama sheet TIDAK boleh dikutip ulang:

menggunakan

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

dari pada

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

0 jelas
sumber
6
Terima kasih. Anda harus menambahkan ini sebagai komentar untuk jawaban lain atau bahkan hanya mengedit jawaban itu.
Studgeek
10

Di antarmuka baru, Anda seharusnya bisa mengetikkan =sel, lalu pergi ke lembar lain dan pilih sel yang Anda inginkan. Jika Anda ingin melakukannya secara manual, atau menggunakan antarmuka lama, Anda bisa melakukannya =Sheet1!A1, di mana Sheet1nama lembar, dan A1merupakan sel pada lembar yang Anda pedulikan. Ini identik dengan Microsoft Excel.

Benjamin Pollack
sumber
6
jika sheetname memiliki spasi putih di dalamnya, gunakan 'This Other Sheet'! A1
akira
12
Bagaimana dengan dokumen yang sama sekali berbeda, seperti yang saya tanyakan dalam pertanyaan?
Jeff Yates
@ Jeff Maaf; Anda tidak menyebutkan "dokumen" di tubuh, dan untuk beberapa alasan, di kepala saya, saya pikir "lembar." Sejauh yang saya tahu, Anda tidak dapat menautkan secara dinamis ke dokumen lain . Tetapi Anda bisa menggunakan beberapa lembar, bukan beberapa dokumen, pada titik mana Anda bisa melakukan apa yang saya sarankan. Inilah cara saya menjalankan keuangan bulanan saya sendiri, untuk alasan inilah tepatnya.
Benjamin Pollack
Tidak apa-apa :) Saya tahu ada cara untuk melakukannya karena saya benar-benar melakukannya sendiri, tetapi saya sudah lupa dan saya tidak dapat menemukan lembaran tempat saya melakukannya.
Jeff Yates
Ini tidak menjawab pertanyaan yang diposting - ini berbicara tentang lembar lain di dokumen yang sama.
brendan
4

Saya menemukan sintaks ini menggunakan Sisipkan -> Tentukan rentang baru

RANGE UNTUK REFERENSI SPREADSET LAINNYA:

Seluruh kolom: 'Spreadsheet Dengan Spaces in the name'! A: A

Kolom Whole B: 'Spreadsheet With Spaces in the name'! B: B

dll.

Maka Anda dapat menggunakannya sebagai:

=COUNTIF('First Page'!B:B, "valueToMatch")
Tom Roggero
sumber
1
Apakah ini juga mungkin untuk referensi di luar spreadsheet?
Jacob Jan Tuinstra
@JacobJanTuinstra apa maksud Anda 'di luar' spreadsheet?
Tom Roggero
6
Nah, IMPORTRANGEfungsinya bisa mengimpor data dari spreadsheet lain . Rentang pengaturan hanya dimaksudkan (mungkin) dalam spreadsheet. Itulah yang saya maksud dengan di luar.
Jacob Jan Tuinstra
Ini tidak menjawab pertanyaan yang diposting - itu hanya menjelaskan cara merujuk ke lembar lain di dokumen yang sama.
brendan
@brendan gunakan IMPORTRANGEseperti kata Jacob.
Tom Roggero
2

di sini adalah bagaimana saya melakukannya (menerapkan 'importrange ()'):

  • buka editor skrip ("alat" -> "skrip" -> "skrip editor")
  • menyediakan fungsi seperti ini (tanpa pemeriksaan apa pun, ini harus diperbaiki tetapi Anda mendapatkan gagasan umum):
function REMOTEDATA (inKey, inRange) {

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

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

  mengembalikan data;
}
  • gunakan rumus ini seperti ini di spreadsheet Anda:
= SUM (REMOTEDATA ("key", "SheetName! A1: A10"))

"key" adalah kunci dari dokumen, Anda menemukannya di "key = xyz" parameter dari URL dokumen.

dokumentasi untuk ' layanan spreadsheet ' memberikan informasi lebih lanjut tentang topik tersebut.

akira
sumber
4
Apa keuntungan dari mengimplementasikan ini sendiri daripada menggunakan fungsi yang ada?
Jeff Yates
1
@ Jeff Yates: tidak ada, saya hanya menerapkannya tanpa mengetahui importrange (). sportif, Anda tahu? semua di jalan hanya karena-aku-bisa :)
akira
1
sayangnya fungsi kustom spreadsheet tidak dapat lagi membuka spreadsheet lain menggunakan SpreadsheetApp.openById()atau SpreadsheetApp.openByUrl()-> developers.google.com/apps-script/guides/sheets/…
Francesco Vadicamo
-2

Saya melakukannya dengan cara yang sangat mudah dengan menggunakan Query, misalnya, saya punya 2 lembar ABC dan XYZ dan saya ingin mengimpor rentang dari A1 ke C30 dari Abc ke XYZ, klik sel tempat Anda ingin rentang muncul dan tulis ini:

=QUERY(ABC!A1:C30)

Catatan: Jika nama sheet Anda memiliki spasi maka, tentu saja, Anda menulis ini:

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

Qamar
sumber
7
OP bertanya bagaimana cara mengimpor sel dari dokumen lain . Dapat QUERYmelakukan itu?
Vidar S. Ramdal
4
@ VidarS.Ramdal Bisa, tetapi perlu importrange("abcd123abcd123", "sheet1!A1:C10")misalnya, =query(importrange("abcd123abcd123", "sheet1!A1:C10"));-)
Fuhrmanator