2016-04-04 20 views
1

Sağ sütundaki hücreleri, soldaki bitişik hücreye göre bir hücreye birleştirmek istiyorum. Birleştirmeyi denedim ama sadece bu kadar uzağa gidebilirdim. Ve çevrimiçi arama yaptıktan sonra, her bir satırı ayrıştıracak ve sol hücrenin açıklığının uzunluğu için bir araya getirilebilecek bir şey bulamadım. Biliyorum CONCATENATE işlevi, ama tüm elektronik tabloyu ayrıştırmak için nasıl alabilirim? Sol Sütun Hücresine Bağlı Olarak Bitişik Satır Hücrelerini Birleştirin

Adjacent Cells

Bu

Yukarıda için isteyeyim sonuçlarının bir örnektir:

enter image description here

+0

Kombine Seviye 2 İlk sütunda birleştirmenin maksimum miktarı nedir? Her zaman bir veya iki satır mı? Ya da üç veya daha fazla olabilir mi? –

+0

Değişir. Sahip olduğum maksimum değer, aynı sol sütun hücresine sahip 20 satır, en az çift kopya değil. –

+0

Tamam. 2 kombinasyondan oluşan bir sürüm hazırladım, ama bence bundan daha fazlasını yapmak istiyorsanız, VBA bunu daha kolaylaştıracaktır. Bu yüzden mutlaka formüllerde olmayacak. –

cevap

1

Bu çok karmaşık olabilir - Ben çizim masasına geri gider ve bu durumda ve Tam bir VBA sürümü yapmak, ancak başlangıçta sadece formülleri kullanarak bir çözüm oluşturmak için bir meydan okuma arıyordum. Ne yazık ki, değişken hücre sayısının birleştirilmesi için standart bir formül tabanlı yaklaşım yoktur.

Function CombineRange(ByRef rng As Range, ByVal delim As String) 
    Dim arr 
    Dim i As Long 

    arr = rng.Value 

    CombineRange = "" 
    For i = 1 To UBound(arr) 
     If i > 1 Then 
      CombineRange = CombineRange & delim 
     End If 

     CombineRange = CombineRange & arr(i, 1) 
    Next i 

End Function 

Varsayımlar:

  • sizin verilerdir
  • Kişisel birleştirilmiş veri "YourData" adı verilen bir levha olduğu A sütunu
  • Yani, bunu gerçekleştirmek için, bir tane fonksiyonu eklendi

  • "Tek satır" verileriniz sütun B
  • Satır 1, bir çeşit üstbilgi satırıdır.

your data

Sonraki, yeni bir sayfasında (Ben "Çöktü" diyoruz) üzerine dört sütun kurmak

A - Veri başlar ne olursa olsun satır başlatın Row = (ilk satır) (2 bizim durumumuzda)

A - Başlangıç ​​Sıra = (tüm diğerleri) A2+B2

B - Ofset = {IFERROR(MATCH(FALSE,ISBLANK(INDIRECT(ADDRESS(A2+1,1,,,"YourData")&":A200")),0),0)}

Not bu bir dizidir fonksiyonudur, yani bunu girerken

C vardiya yapmak + Enter gerekir - Düzey1 = =INDEX(YourData!A:A,A2)

D - = =IF(B2<=1, INDIRECT(ADDRESS(A2,2,,,"YourData")), CombineRange(INDIRECT(ADDRESS(A2,2,,,"YourData")&":"&ADDRESS(A2+B2-1,2)),"; "))

enter image description here

+0

Başlangıç ​​satırını algılamak için bir formül var mı yoksa bunları el ile mi girmeliyim? –

+0

Üzgünüz, ilk bölüm A Başlangıç ​​Satırlarını anlamıyorum. –

+0

İlk satır için, sadece 2 numaradır (bu, verilerinizin başladığı satırdır). Diğer satırlar için, yukarıdaki sütun A formülünü kullanın. –

İlgili konular