Google Spreadsheets’teki bir hücreyi başka bir belgedeki bir hücreye nasıl bağlarım?


178

Önceki aya ait rakamlara dayanan aylık bir elektronik tablom var. Bu değerleri kesip yapıştırmak yerine dinamik olarak almak istiyorum. Mümkün mü? Nasıl yaparım?


Bu arada, bir kez yaptığım için bunun mümkün olduğunu biliyorum, ancak artık bilgileri veya içinde bulunduğum sayfayı bulamıyorum. Eğer bulursam, bir güncelleme gönderirim.
Jeff Yates

Yanıtlar:


183

IMPORTRANGE() İstediğiniz işlev gibi görünüyor.

Gönderen Google E-tablolar fonksiyon listesinde :

Google E-Tablolar, ImportRange işlevini kullanarak şu anda düzenlemekte olduğunuz e-tablodaki başka bir çalışma kitabına başvuru yapmanızı sağlar. ImportRange bir veya daha fazla hücre değerini bir elektronik tablodan diğerine çekmenize olanak sağlar. Kendi ImportRange formüllerinizi oluşturmak için, = importRange (elektronik tablo anahtarı, aralık) girin. Ondalık ayırma için virgülün kullanıldığı dillerde, formülünüzdeki bağımsız değişkenleri ayırmak için virgül yerine noktalı virgül kullanın.

Elektronik tablo anahtarı, elektronik tablo URL'sindeki anahtar değer olan bir STRING'dir.

Aralık, isteğe bağlı olarak sayfa adı da dahil olmak üzere içe aktarmak istediğiniz hücre aralığını temsil eden bir STRING'dir (varsayılan olarak ilk sayfa). İsterseniz bir aralık adı da kullanabilirsiniz.

İki argümanın STRING olduğu göz önüne alındığında, bunları tırnak içine almanız veya içinde dize değeri olan hücrelere başvurmanız gerekir.

Örneğin:

= importrange ("abcd123abcd123", "sheet1! A1: C10") "abcd123abcd123", hedef elektronik tablonun URL’sindeki "key =" özniteliğindeki değer ve "sheet1! A1: C10" istenen aralıktır. ithal edilmek.

= importrange (A1, B1) A1 hücresi ABCD123ABCD123 dizesini ve B1 hücresi sheet1! A1: C10

Not: ImportRange'ı kullanmak için, ImportRange'ın verileri çektiği e-tabloya bir görüntüleyici veya ortak çalışan olarak eklenmiş olmanız gerekir. Aksi takdirde, şu hatayı alırsınız: "#REF! Error: İstenen elektronik tablo anahtarı, sayfa başlığı veya hücre aralığı bulunamadı."

"anahtar", elbette, key=parametreyle eşleşen e-tablonun URL’sindeki dizedir .

Sadece iki elektronik tablo oluşturarak test ettim. İlk hücrenin A1 hücresine bir dize koydum. İkinci hücrenin A1 hücresine koydum =importRange("tgR2P4UTz_KT0Lc270Ijb_A","A1")ve ilk e-tablodaki dizgiyi görüntüledi. (Anahtarın belli ki farklı olacak.)

(. Fonksiyonunun biçimi Fransa'da formül virgülle geçerli değil Bulunduğunuz yerin bağlı olabilir, bu nedenle bir noktalı virgül ile değiştirmek gerekir: =importRange("tgR2P4UTz_KT0Lc270Ijb_A";"A1"))

NOTLAR:

  1. Google, şu anda e-tablo için 50 "çalışma kitabı referans formülü" zor bir sınır koyuyor. Kaynak: Google Dokümanlar, E-Tablolar ve Slaytlar boyut sınırları . (s / h JJ Rohrer )

  2. "Yeni" Google E-Tablosu (yakında standart olacak) 50 "çalışma kitabı referans formülü sınırını kaldırır ( Google Desteği ) (h / t Jacob Jan Tuinstra )

  3. "Yeni" Google Sayfalarında, URL'nin tamamını anahtar olarak da kullanabilirsiniz ( Google Destek ) (h / t  Punchlinern )


3
@Al: Evet! Bu kadar! Teşekkürler.
Jeff Yates

+1 Whoa! Satır içi bir sürüm olduğunu bilmiyordum. Diğer seçenek, Google Apps komut dosyasını kullanmaktır. SpreadsheetApp.openById ([ID]). GetRange () kullanan bir işlev oluşturun ve bununla yerel bir aralık ayarlayın.
Evan Plaice

3
Bunların 50’siyle sınırlı kalacağınızı (elektronik tablo başına?) (Zor bir Google sınırı): support.google.com/drive/answer/37603?hl=tr
JJ Rohrer

4
Yeni Google E-Tablo'da (yakında standart olacak), 50 limit kaldırıldı: support.google.com/drive/answer/3093340?hl=tr
Jacob Jan Tuinstra

4
Ayrıca, yeni Google Sayfalarında URL’nin tamamını anahtar olarak kullanırsınız. Ayrıca, işleve ilk girdiğinizde istenen sayfaya erişim izni vermeniz istenir.
Punchlinern

29

Bilginize, bu elektronik tablo içinde başka bir sayfaya referans vermek istiyorsanız, sayfa adı yeniden alıntılanmamalıdır:

kullanım

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

onun yerine

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


6
Teşekkürler. Bunu başka bir cevaba yorum olarak eklemelisiniz, hatta bu cevabı düzeltmelisiniz.
studgeek

10

Yeni arayüzde, =hücreye yazabilmeniz , sonra diğer sayfaya gitmeniz ve istediğiniz hücreyi seçmeniz yeterlidir . Bunu elle yapmak istiyorum, ya, sadece yapabileceği eski arayüzü kullanıyorsanız =Sheet1!A1, nerede Sheet1tabakanın adıdır ve A1önemsediğiniz bu sayfada kullanıcıların hücredir. Bu, Microsoft Excel ile aynıdır.


6
Sayfa adının içinde boşluk varsa, 'Bu Diğer Sayfa'yı kullanın! A1
akira

12
Soruda sorduğum gibi tamamen farklı bir belgeden ne haber?
Jeff Yates

@jeff Üzgünüz; Vücudun içinde "belgeden" bahsetmedin, ve bir sebepten, kafamda "levha" demiştim. Bildiğim kadarıyla, başka bir belgeye dinamik olarak bağlanamazsınız . Ancak, önerdiğim şeyi yapabileceğiniz noktada, birden çok belge yerine birden çok sayfa kullanabilirsiniz. İşte tam da bu sebepten ötürü kendi aylık bütçemi böyle yönetiyorum.
Benjamin Pollack

Sorun yok :) Aslında kendim yaptığım gibi yapmanın bir yolu olduğunu biliyorum, ama unuttum ve yaptığım sayfayı bulamıyorum.
Jeff Yates

Bu, gönderilen soruyu cevaplamıyor - aynı belgedeki diğer sayfalardan bahsediyor.
brendan

4

Bu sözdizimini Ekle -> Yeni aralık tanımla'yı kullanarak buldum.

DİĞER YAYINCILIĞA REFERANS İÇİN ARALIĞI:

A sütununun tamamı: 'Adında Boşluklu Elektronik Tablo'! A: A

B sütununun tamamı: 'Adında Boşluklu Elektronik Tablo'! B: B

vb.

O zaman olarak kullanabilirsiniz:

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

1
Bu, elektronik tablonun dışına atıfta bulunmak için de mümkün mü?
Jacob Jan Tuinstra

@JacobJanTuinstra, elektronik tablonun dışına ne demek istiyorsunuz?
Tom Roggero

6
Eh, IMPORTRANGEfonksiyon olabilir içe verileri başka elektronik tabloya. Aralıkları ayarlamak yalnızca bir e-tablo içindeki (mümkün) anlamına gelir. Dışarıda demek istediğim bu.
Jacob Jan Tuinstra

Bu, gönderilen soruyu cevaplamıyor - yalnızca aynı belgede başka bir sayfaya nasıl atıfta bulunacağını açıklıyor.
brendan

IMPORTRANGEJacob'un söylediği gibi @brendan kullanımı .
Tom Roggero,

2

İşte nasıl yaptım (reimplemented 'importrange ()'):

  • script editörünü aç ("tools" -> "script" -> "script editör")
  • Böyle bir işlev sağlayın (herhangi bir kontrol olmadan, bunun iyileştirilmesi gerekir, ancak genel fikre sahip olursunuz):
REMOTEDATA işlevi (inKey, inRange) {

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

  eğer (ss) {
     outData = ss.getRange (inRange) .getValues ​​();
  }

  dönüş verisi;
}
  • Bu formülü e-tablonuzda böyle kullanın:
= SUM (REMOTEDATA ("anahtar", "SayfaAdı! A1: A10"))

"anahtar" dokümanın anahtarıdır; dokümanın URL'sinin "key = xyz" parametresinde bulabilirsiniz.

' elektronik tablo hizmetleri ' belgeleri , konuyla ilgili daha fazla bilgi sağlar.


4
Mevcut işlevi kullanmak yerine bunu kendiniz uygulamanın avantajı ne olurdu?
Jeff Yates

1
@Jeff Yates: yok, sadece importrange () 'u bilmeden uyguladım. sporculuk, biliyor musun? hepsi yolunda - çünkü-i-can :)
akira

1
Maalesef elektronik tablo özel işlevleri, SpreadsheetApp.openById()veya SpreadsheetApp.openByUrl()-> developers.google.com/apps-script/guides/sheets/…
Francesco Vadicamo 30.06

-2

Query kullanarak çok kolay bir şekilde yaptım, örneğin, 2 sayfalık ABC ve XYZ'im var ve A1'den C30'a Abc'den XYZ'ye aralığı içe aktarmak, aralığın görünmesini istediğiniz hücreyi tıklatın ve şunu yazın:

=QUERY(ABC!A1:C30)

Not: Sayfa adınız boşluk içeriyorsa, elbette şunu yazın:

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


7
OP, hücrelerin başka bir belgeden nasıl ithal edileceğini sordu . Bunu QUERYyapabilir mi?
Vidar S. Ramdal

4
@ VidarS.Ramdal O can, ancak ihtiyacı importrange("abcd123abcd123", "sheet1!A1:C10")örneğin, =query(importrange("abcd123abcd123", "sheet1!A1:C10"));-)
Fuhrmanator
Sitemizi kullandığınızda şunları okuyup anladığınızı kabul etmiş olursunuz: Çerez Politikası ve Gizlilik Politikası.
Licensed under cc by-sa 3.0 with attribution required.