web-gelistirme-sc.com

Excel'deki başka bir çalışma kitabına göreli başvuru nasıl yapabilirim?

Fiyatları hesaplamak için bir sayfa hazırlıyorum. Sayfa, farklı bileşenlerin fiyatlarını almak için diğer çalışma kitaplarına atıfta bulunmalıdır. Bu, bilgisayarımda düzgün çalışıyor ancak onları sunucuya veya başka bir bilgisayara taşıdığımda başvuruları bulamıyor.

Klasörüm şöyle yapılandırılmıştır:

Folder
|-- prices.xlsx
|-- Fixed Components
|   |-- ComponentsA.xlsx
|   +-- ComponentsB.xlsx
|
+-- Variable Components
    |-- ComponentsC.xlsx
    +-- ComponentsD.xlsx

prices.xlsx, diğer sayfalara referans veren ana sayfadır. Bilgisayarımda referansları mutlak bir yolla oluşturuyor, bu yüzden dosyaları kopyaladığımda, dosyaları diğer bilgisayardaki dosyalara referans vermek yerine makineme sabit tutuyor.

Referansları göreceli yapmanın bir yolu var mı, böylece ana sayfaya ='\Variable Components\[ComponentsC.xlsx]Sheet1'!A1 gibi bir şey koyabilirim. Bunun için VBA'yı kullanmak istemem çünkü insanlar Makrolara güvenme eğilimi göstermiyor ve sonra işlevlerini yerine getirmiyor.

16
Stijnvdk

Harici dosyaları alt klasörler halinde düzenlediğim tek çözüm, formüllerde harici dosyanın tam yolunu çözmek için VBA'nın kullanılmasını gerektiriyordu. İşte başkalarının kullandığı birkaç örnek içeren bir siteye bir link:

http://www.teachexcel.com/Excel-help/Excel-how-to.php?i=415651

Alternatif olarak, tüm dosyaları alt klasörlere bölmek yerine aynı klasöre yerleştirebiliyorsanız, Excel, dosyaları bir ağ konumuna götürseniz bile VBA kullanılmasını gerektirmeden dış başvuruları çözecektir. Daha sonra formülleriniz, dolaşılacak klasör adları olmadan basitçe ='[ComponentsC.xlsx]Sheet1'!A1 olur.

6
James L.

Aşağıdaki sırayı kullanarak çözdüğümde de benzer bir problem vardı:

  1. geçerli dosyanın geçerli sayfasına tam yolunu bulmak için CELL("filename") işlevini kullanın.

  2. mevcut Excel dosyanızın ve sayfanın [DosyaAdı] SayfaAdı dizesinin başlangıcını bulmak için SEARCH() işlevini kullanın.

  3. geçerli dosyanızı içeren dizinin tam yolunu çıkarmak için LEFT işlevini kullanın. 

  4. 3. adımda bulunan dizin yolu adını, dosya adı, çalışma sayfasının adı ve erişmek istediğiniz hücre başvurusuyla birleştirin.

  5. 4. adımda oluşturduğunuz CellPathName dosyasına erişmek için INDIRECT() işlevini kullanın.

Not: Bu aynı adımlar, adları dinamik olarak oluşturulan dosyalardaki hücrelere erişmek için de kullanılabilir. 4. adımda, dinamik olarak hücre içeriğinden, geçerli tarih veya saatten vb. Oluşturulan bir metin dizesi kullanın.

Bu adımların tümünü içeren bir hücre referans örneği (her parça ayrı ayrı toplanır):

=INDIRECT("'" & LEFT(CELL("filename"),SEARCH("[MyFileName]MySheetName",CELL("filename")) - 1) & "[" & "OtherFileName" & "]" & "OtherSheetName" & "'!" & "$OtherColumn$OtherRow" & "'")

LibreOffice'in, aşağıdaki örnekte olduğu gibi biraz farklı bir CellPatnName sözdizimi kullandığını unutmayın:

=INDIRECT(LEFT(CELL("filename"),SEARCH("[MyFileName]MySheetName",CELL("filename")) - 1) & "OtherFileName" & "'#$" & "OtherSheetName" & "." & "$OtherColumn$OtherRow")
5
RSDIXON

indirect ile daha kolay ve daha kısa: INDIRECT("'..\..\..\..\Supply\SU\SU.ods'#$Data.$A$2:$AC$200")

ancak dolaylı () çalışma kitabında çok sayıda bağlantı varsa performansın sakıncaları vardır

Gibi yapı özledim: LibreOffice ['../Data.ods']#Sheet1.A1. Amaç şudur: kaynak dosya sistemindeki sınırlı bir alt ağaç dizininde rapor çalışma kitaplarına bağlı olarak bir grup ana çalışma kitabı oluşturursam ve çalışma kitabını bağlı tutarsam, tüm dizin alt ağacını çalışma kitabının tamamıyla paketleyebilir ve E-posta başına veya başka bir işbirliği yapan kişiye gönderebilirim. Hedef sistemde başka bir mutlak pazara kaydedilir, ancak bağıntı tekrar yeni mutlak yolda çalışır çünkü nispeten alt ağaç köküne kodlanmıştır.

3
Rostro

= Worksheetname () ve = Indirect () işlevini kullanma ve üst Excel dosyasındaki çalışma sayfalarını harici olarak başvurulan Excel dosyasının adıyla adlandırma. Dışarıdan başvurulan her Excel dosyası aynı adda kendi klasörlerindeydi. Bu alt klasörler yalnızca daha fazla netlik yaratmak içindi.


Yaptığım şey şuydu: -

| ---- Sütun B --------------- | ---- Sütun C ------------ |

R2) Ana klasör --------> "C:\TEMP\Excel \"

R3) Alt klasör ismi ---> = çalışma sayfası ismi ()

R5) Tam yol --------------> = "'" & C2 & C3 & "[" & C3 & ". Xlsx] Sayfa1'! $ A $ 1" 

R7) Dolaylı fonksiyon -----> = INDIRECT (C5, TRUE)

Ana dosyada, Ext-1, Ext-2, Ext-3, Ext-4, Ext-5 olarak etiketlenmiş 5 çalışma sayfası olduğunu söylemiştim. Kopyala, yukarıdaki formülleri beş çalışma sayfasına yapıştırın. Sırasıyla tüm adlandırılmış Excel dosyalarını arka planda açtı. Bazı nedenlerden dolayı sonuçlar otomatik olarak hesaplanmadı, bu nedenle herhangi bir hücreyi düzenleyerek bir değişikliği zorlamak zorunda kaldı. Volla, harici olarak başvurulan her bir Excel dosyasının A1 hücresindeki değer Ana dosyadaydı.

1
user2312319

Paylaşılan bir sürücüye bağlandığınızı varsayalım, örneğin S sürücüsü? Öyleyse, diğer insanlar sürücüyü farklı şekilde haritalamış olabilir. Muhtemelen "resmi" sürücü adını // euhkj002/tahminler/bla bla kullanmanız gerekir. Bağlantınızdaki S // yerine

0
Dr Amazing