Excel - referans numarasının [çoğalt] ile eşleştiği hücreleri birleştirme


4

Çok satırlı bir çalışma sayfam var. Bazı satırlar referans numaralarını paylaşır (örneğin, sütun A'da bulunur). Yapmak istediğim, bir satırın bir referans numarasını başka bir satırla paylaştığı durumlarda, B sütununda yer alan verileri bu satırların her ikisinden de C sütunundaki yeni bir hücreye birleştirmek istiyorum. .

Örnek:

Col A      Col B         Col C                    
12345     Robert      Robert, David      
12345     David        Chris                    
54321     Chris                                     


1
Çok açık ve iyi bir şekilde ortaya konan örneğinizde, C harfi Soyadı, Adı: - Soyadı daima ilk adından önce gelmediği sürece, siparişin mümkün olup olmadığından emin değilim (sütunu okuyunuz ().). bir sorun mu var? +1
Dave

@DaveRook OP'nin Soyadı olarak Col C'ye sahip olduğunu sanmıyorum, FirstName Col B'den elde edilen değerlerin bir kombinasyonudur. Robert ve David ilk iki değerdir ve her ikisi de Col A'da 12345'e sahiptir, çünkü OP birlikte ister.
Brad Patton

Brad haklı. Sütun C sadece birleştirme işlemini atmak için bir yerdir. Özellikle hangi sıraya girdiklerini umursamıyorum, ama yapsam bile, bu ayrı bir sorun gibi görünüyor.
Lewes Dev

Bu çok iyi biçimlendirilmiş ve diğeri o kadar kötü biçimlendirilmiş ki bunun gerçekten bir kopya olup olmadığını söyleyemem. Ayrıca bu soruda VBA'dan kaçınmaktan söz edilmiyor.
Tanner Faulkner

Bununla bir eğlence bir formülle çıkarmaya çalıştığınızda başlar;) Ve bazı mükemmel sihirbazların bunu yaptığını gördüm :)
helena4

Yanıtlar:


2

İşte VBA yaklaşımı. Excel 2007 veya üstü varsayımı; Şerit öncesi bir Excel sürümü kullanıyorsanız ilk birkaç adım değişecektir.

  1. Geliştirici Sekmesini Etkinleştir

  2. Şeritteki Geliştirici Sekmesinde "Visual Basic" seçeneğine tıklayın

  3. "VBAProject (sayfanızın adı ne olursa olsun) .xls *)" üzerine sağ tıklayın ve bağlam menüsünde Ekle -> Modül yapın

  4. Bu koda yapıştır

    Option Explicit
    
    Function allquixotic(param As Variant, search As Range, values As Range, Optional absolute As Boolean = False) As String
    
    Dim sep As String, retval As String
    Dim i As Integer, rownum As Integer
    Dim look As Range, j As Range
    
    sep = ", "
    retval = ""
    For i = 1 To search.Rows.Count
    Set look = search.Cells(i, 1)
    If absolute Then
            rownum = look.Row
    Else
            rownum = i
    End If
    
    If look.Value = param Then
            If absolute Then
                    Set j = values.Worksheet.Cells(rownum, values.Column)
            Else
                    Set j = values.Cells(i, 1)
            End If
            retval = IIf(retval = "", retval & j.Value, retval & sep & j.Value)
    End If
    
    Next
    
    allquixotic = retval
    
    End Function
  5. Çalışma sayfası işlevini kullanın (yeniden adlandırmaktan çekinmeyin) gibi bir formül kullanarak

    =allquixotic(A1,$A$1:$A$15,$B$1:$B$15,true)
  6. Formülü tüm hücrelere koymak için doldurma tutamacını kullanın

Parametreler şunlardır:

=allquixotic(look_cell, key_range, value_range, absolute)

look_cell: İlk parametre, tek bir hücre veya değişmez bir değer olmalıdır . Geçerli giriş gibi şeyleri içerir 3, $6.25, "Hello"vb Bu Bulmaya çalıştığınız değerdir key_range.

key_range: Bu bir hücre aralığı olmalıdır (birden fazla hücre); absolutetrue ise , bu bitişik bir aralık olmadıkça çok garip sonuçlar elde edersiniz (tüm değerler sıralı satırlardadır).

value_range: Bu bir hücre aralığı olmalıdır (birden fazla hücre); absolutetrue ise , bu bitişik bir aralık olmadıkça çok garip sonuçlar elde edersiniz (tüm değerler sıralı satırlardadır).

absolute: Doğruysa, o zaman bir değerin hangi satırdan çıkarılacağını belirlemek için her "bulunan" satırın mutlak satır numarasını (tüm e-tablodaki satır sayısına göre) kullanırız . Eğer yanlışsa, göreceli sayıları kullanacağız; örneğin, üçüncü satırda bir eşleşme bulursak, değeri üçüncü satırdan alırız . Önerilen değer FALSE, veya bunu varsayılan değerine atabilirsiniz.key_rangevalue_rangekey_rangevalue_range

Not : Bu işlev, anahtar ve değer aralıklarının sütunlarda olduğu durumu desteklemez , ancak buna uyarlanması oldukça kolay olmalıdır.

Ayrıca, key_range veya value_range'de birden fazla sütun belirtirseniz, yalnızca en soldaki sütun kullanılır.


Teşekkürler, allquixotic. Ve ismin fantastik olduğu için işlevi ismini değiştirmedim!
Lewes Dev

-1

Bu sizin için işe yarar mı? C2'deki formülü farklı olarak ayarla

=IF(A2=A3,B2 & ", " & B3,B3)

Verilerinizin ColA'da sıralandığını ve referans numaralarının birlikte gruplandığını varsayar.

SORU: ColA'da aynı referans numarasına sahip 2'den fazla isim olabilir mi?


Ne yazık ki, belgenin değişmesi, kayması ve büyümesi muhtemel olduğundan, hücrelere mutlak referanslar verilmesi, uygulamanın biraz zorlaşmasına neden olur. Biraz daha esnek bir şey umuyordum.
Lewes Dev

Sütunları ilmeklemek için bir VBA makrosuna ihtiyacınız olacağını düşünüyorum
Brad Patton

2
Bunlar mutlak referanslar değil; bunlar göreceli (ofset) referanslardır. Mutlak referanslar olsaydı, içinde dolar işaretleri ( $) olurdu . Yukarıda gösterildiği gibi, (sürükle / dolgu) hücreyi uzatabilirsiniz C2için C3ve automagicallylar alacak =IF(A3=A4, B3 & ", " & B4, B4).
Scott
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.