Excel'de tam bir dış birleştirmeyi nasıl simüle edebilirim?


34

Excel'de bazı verilerim olduğunu varsayalım (gerçek bir veritabanında değil). Bir sayfada, bir sütunun ID olarak işlev gördüğü veriye sahibim ve bu sütundaki değerlerin benzersiz olduğundan emin oldum. Başka bir sayfada da yine bir ID olarak alınabilecek bir sütuna sahip bazı verilerim var ve aynı zamanda benzersiz. Sayfa 1'deki N satırının bir değeri varsa ve Sayfa 2'deki M satırının aynı değeri varsa, N ve M satırının aynı gerçek dünya nesnesini tanımladığından eminim.

Ne soruyorum: herhangi bir makro yazmadan tam bir dış birleştirmenin eşdeğerini nasıl alabilirim? Şeritten erişilebilir formüller ve tüm fonksiyonlar TAMAM.

Küçük bir "oyun verisi" örneği:

Sayfa 1:

Dostoyevski    Russia
Pushkin        Russia
Shelley        England
Flaubert       France
Hugo           France
Eichendorff    Germany
Byron          England
Zola           France

Sayfa 2:

Shelley        Percy Bysshe
Eichendorff    Josef Freiherr Von
Flaubert       Gustave
Byron          Lord
Keller         Gottfried
Dostoyevski    Fyodor
Zola           Emile
Balzac         Honoré de

İstenilen çıktı (sıralama önemli değil):

Dostoyevski    Russia   Fyodor
Pushkin        Russia
Shelley        England  Percy Bysshe
Flaubert       France   Gustave
Hugo           France
Eichendorff    Germany  Josef Freiherr von
Byron          England  Lord
Zola           France   Emile
Keller                  Gottfried
Balzac                  Honoré de

Bu senaryodan korkan herkese: Bunun Yapmanın Yanlış Yolu olduğunu biliyorum. Herhangi bir seçeneğim varsa, bunun için Excel kullanmazdım. Bununla birlikte, pragmatik bir çözüme ihtiyaç duyulan, stat ve daha iyi (BT açısından) bir çözümün uygulanmadığı durumlar vardır.


Her iki listeyi sıralar ve yan yana koyarsanız, istenen sütunu manuel olarak eşleştirmek oldukça kolaydır. Eğer bir varsa çok verilerinin, iki aralıkları alır ve sizin için yapar bir fonksiyon yazabiliriz.
Dan

@Dan dediğim gibi, bir işlev yazmadan bunu yapmak için soruyorum .
Yazabileceğim

Excel, Veri bağlantıları üzerinden SQL sorgularını destekler. Bu konuda çok kötüyüm, bu yüzden maalesef daha fazla öneride bulunamıyorum ama sizin için bakmaya değer olabilir.
Kyle

@Kyle Bu seçeneği cevabımı ekledim Kalbin zayıflığı için değil ve bunun için oynamak ve / veya fazladan oynamaya çalışmak karışıklık olabilir ama hey, neden olmasın!
enderland

Yanıtlar:


43

Kolay yaklaşım - standart Excel işlemleri

Öncelikle, her iki tablodaki her iki ana sütunu da tek bir sütun olarak tek bir yeni sayfaya kopyalayın / yapıştırın.

"Yinelenenleri Kaldır" ı kullanarak tüm benzersiz anahtarlarınızın tek bir listesini alın.

Ardından, her bir tablodaki veri sütunlarınızın her biri için bir tane olmak üzere iki sütun ekleyin (bu durumda). Formülünüzü daha güzel görünmesini sağladığından, biçimi tablo seçeneği olarak kullanmanızı öneririm. Vlookup komutunu kullanarak aşağıdaki formülü kullanın:

=IFERROR(VLOOKUP([@ID],Sheet4!A:B,2,FALSE),"")

Burada Sheet4!A:Bkaynak tablo verileri tablosu her bir ilgili değeri ne olursa olsun temsil eder. IFERROR, vlookup başarılı olmadığında ortaya çıkan çirkin N / A sonuçlarını önler ve bu durumda boş bir hücre döndürür.

Bu size sonuçtaki masanızı verir.


Sheet3:

görüntü tanımını buraya girin

Sheet4:

görüntü tanımını buraya girin

Sonuç verileri:

görüntü tanımını buraya girin

Sonuç formülleri ( Ctrl+ ~bunu değiştirir):

görüntü tanımını buraya girin


SQL Sorgu yerleşik

Bunu yerleşik SQL sorgusu ile de yapabilirsiniz. Bu ... daha az kullanıcı dostu, ama belki daha iyi bir kullanım durumunda olacak. Bu, büyük olasılıkla "kaynak" verilerinizi tablo olarak biçimlendirmenizi gerektirecektir.

  1. Yeni bir sayfada bir hücreye tıklayın
  2. Verilere Git -> Diğer Kaynaklardan -> Microsoft Query'den
  3. Veritabanları sekmesinin altındaki Excel Dosyaları * 'nı seçin ve ok tuşuna basın.
  4. Çalışma kitabını seç
  5. Aşağıdaki dört alanı seçin:
    • görüntü tanımını buraya girin
  6. Gördüğünüz 1990'lı formatlı uyarıda "ileri" ve "tamam" ı tıklayın.
  7. Aşağıdaki bu talimatlar ilk sol dış birleşim oluşturmak. Benim durumumda "ülke" tablosunu sol kaynak olarak ve "adlarını" sağ olarak kullanıyorum.
    • görüntü tanımını buraya girin
    • Bu, yalnızca bazı satırları verir (kimliğe katıldığınızdan beri)
  8. "Çıkartma birleştirme oluştur ve sonra sendika olarak ekle" kısmı daha karmaşık ..

    • İşte çıkarma birleştirme yapılandırmaları: görüntü tanımını buraya girin
    • Bu birleştirme işleminin SQL kodunu SQL düğmesinden kopyalayın:
    • SELECT countries$.ID, countries$.Val1, names$.ID names$,. Val2 {Oj C:\Users\Username\Desktop\Book2.xlsx. countries$ countries$SOL DIŞ KATIL C:\Users\Username\Desktop\Book2.xlsx. names$ names$ON countries$.ID = names$.ID} NEREDE ( names$.ID Null)

  9. Oluşturduğunuz ilk dış birleştirmeye geri dönün. SQL’i elle düzenleyin ve

    • Unionaltına ekle
    • Yukarıdaki çıkartma birleşim metnini birleşim biriminin altına ekleyin
  10. SQL düğmesinin hemen solundaki "Dönüş Verileri" düğmesine basın
    • Bu noktada yalnızca istediğiniz belirli verileri seçmek için SQL'i düzenlemek isteyebilirsiniz. Sonuçtaki sütunları gizlemeyi daha kolay buluyorum.
  11. Sorguyu bir yere yerleştirin ve konumunu doğrulayın
    • görüntü tanımını buraya girin

Kalbin zayıflığı için değil. Ancak, Office'in yaşamını sürdürdüğü kadar uzun süredir güncellenmemiş olan bazılarını görmek için büyük bir şans istiyorsanız, bu büyük bir şans.


1
[@ID] notasyonu için referansınız var mı? İşe yaradığından şüphem yok, ama daha önce hiç görmedim ve Excel'de çok çalışıyorum.
TJL

1
@TJL Bir tabloyu tablo olarak biçimlendirirseniz, diğer sütunları referans almak için bu tür gösterimleri kullanır. Hücre referanslarından çok daha net. 2010+ özellik olabilir mi? Emin değilim. Biçimlendirme sihrini 2010'dan önce masa olarak kullanmamıştım ..
enderland


Orijinal sorguda SOL kelimesini FULL kelimesiyle değiştiremez misiniz? Eminim FULL JOIN sözdizimini destekleyen bu sorguyu çalıştırmak için sadece ACE OLEDB sürücüsünü kullanıyor.
Kyle Hale,

14

Alternatif bir çözüm olarak, Power Query'yi önerebilir miyim ? Bu tam olarak bu tür bir şey yapmak için Microsoft'tan ücretsiz bir Excel eklentisi. İşlevselliği aslında doğrudan Excel 2016'ya dahil edilecek, bu yüzden geleceğe dönük.

Her neyse, Power Query ile adımlar oldukça basit:

  1. Her iki tabloyu da Power Query Editor'a sorgu olarak alın.
  2. Üzerlerinde bir Birleştirme Sorguları dönüşümü gerçekleştirin, uygun birleştirme sütununu ayarlayın ve birleştirme türünü Tam Dış Ayar olarak ayarlayın.
  3. Sonuç tablonuzu yeni bir sayfaya yerleştirin.

Bununla ilgili güzel bir şey, bir kez ayarladıysanız, temel veri tablolarınızda değişiklikler yaparsanız Veri> Tümünü Yenile'ye tıkladığınızda Power Query sonuç sayfanız da güncellenir.


Gerçekten ilginç. Bir restoran sahibi benim bir arkadaşım bana MS Office hakkında sorular soruyordu ve bana 2016 yılında MS Access içermeyen süitini gösterdi. Şimdi neden böyle olduğunu anladım. Excel'in birçok kısıtlaması vardı. 2003'ten daha önce hiç satın almadım, çünkü özelliklerin hiçbiri değerli değildi ve yeni görünümü de beğenmedim; 2010 ve üzeri. Access bunların hepsini ve daha fazlasını yapar, bu nedenle soruyu sorar, Access bu şekilde elde edildiğinde, neden bu kadar çok insan Excel'de veritabanı üzerinde çalışıyor? Görebildiğim tek şey, belki de iyi bir Access DB çalışması elde etmek için, aynı zamanda iyi bir VB deneyimi gerektirmesidir.
ejbytes

@ ejbytes çoğu insan elektronik tablo kavramını anlar. Çoğu, bir veritabanı kavramını anlamıyor. Bir veritabanı olarak bir elektronik tablo projesini bir veritabanına dönüştüren bir projem vardı ve kullanıcılar yine de "elektronik tablo" olarak adlandırıyorlardı - bir veritabanının nasıl çalıştığıyla ilgili kapsamlı açıklamalardan sonra bile!
enderland

@enderland Ben haklısın düşünüyorum. Sıkı olmayan kurallara ve bitişik olmayan esnekliğe sahip olan ve filtreler gibi gizlenen sorguları içeren bir elektronik tablo. Make-shift tablolar ve listeler için bir platform.
ejbytes

@ ejbytes tldr sürümü MS, Excel'de bir sütun deposu bellek motorunu daha fazla satır içerecek şekilde test etmek istedi, harici veri bağlantıları içeriyor, çılgınca popüler olduğunu kanıtladı, bu yüzden ETL aracına eklediler. Şimdi tüm araçları PowerBI olarak topladılar.
Kyle Hale

@KyleHale Office 2010 kullanıyorum ve FULL OUTER JOIN yapmaya çalışıyorum, ancak Power Query, ilk tabloda bulunmayan ikinci tablodaki kimlikleri yok sayıyor.
GeMir

0

Bir (dış birleşimi) yarı benzetmenin hızlı bir yolu, ikinci listenizi almak ve doğrudan yumruk listenizin altına yapıştırmaktır, yani (birincil anahtarlarınız) hepsi aynı (birincil) sütundadır. Ardından bu birincil sütunu sıralayın, bir araya eklenmiş listeyle sonuçlanacak, daha sonra aktarılmış bir IF denklemi yapacaksınız (süper kullanıcı masa düzeni görüntülerini karıştırıyor ..):

listA listB


sam mavi tim 32874 tim kırmızı mary 5710 chris yeşil gustav 047 fred mavi
mary siyah

kopyala / yapıştır / sırala, sonuç şöyle görünüyor: AB chris yeşil fred mavi gustav 047 mary 5710 mary siyah sam mavi tim 32874 tim kırmızı

daha sonra hücre cl için formül: (c1) = eğer (A1 = A2, B2)

sonuç şöyle görünür:

ABC chris yeşil YANLIŞ fred mavi YANLIŞ gustav 047 YANLIŞ mary 5710 siyah mary siyah YANLIŞ sam mavi YANLIŞ tim 32874 kırmızı tim kırmızı YANLIŞ

Yanlışlıklardan vb. Kurtulmak için C'yi sırala -wag770310


Bunu okunabilir hale getirmek için herhangi bir şekilde formatlayabilir misiniz?
davidbaumann
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.