Satırları Hücrede Toplamak (Append)

Katılım
9 Şubat 2011
Mesajlar
5
Excel Vers. ve Dili
Office 365
Merhaba, Değerli Üstadlarım,

Bir excel düşünün.
A' dan K sütununa kadar aşağıdaki şekilde değişken datalarım var.
Ben örnek olması açısından ilk üç sütunu yazdım.

A B C
1 1000 100.92.110.17
1 2000 100.92.110.14
1 3000 100.92.110.17
2 500 100.92.110.8
1 3000 100.92.110.18
1 10 100.92.110.20
2 5 100.92.110.18

Mümkünse, istediğim şey şu;

A sütun değeri gruplanırsa 1 ve 2 olduğuna göre A sütunundaki değere göre diğer hücrelerin gruplanması lazım.
Örnek aşağıda...
Yukarıdaki tablo ile karşılaştırması kolay olsun diye reklendirdim.
Amacım. Alt alta yazılı olan değerleri A sütunundaki değerlere göre gruplayıp ilgili tek hücrede araya virgül atarak toplamak.
Başka bir sekmede ya da aynı excel sayfasının boş sütunlarına da yazabilir.

A B
1 1000,2000,3000,10 dikkat edilirse, 1 olan değere karşılık gelen 3000 den yukarıda iki tane olduğu için grupladı ve tek birini yazdı. (Bir bakıma transpose gibi)
2 500,5

Bu şekilde K sütununa kadar bu şekilde gruplayıp ilgili hücreye yazacak şekilde devam etmeli.

Aşağıdaki gibi bir kod yazdım, ancak bu kod, içerir gibi çalışıyor ve gruplamam eksik kalıyor. Bir de toplamda kaç satırım olduğunu hesaplayamadığım için de elimle For döngüsüne 1000 yazdım.

Acaba, bir excel dosyasında kaç satırım varsa otomatik olarak bulup, bu fonksiyonu da o kadar satır için çalıştırabilir mi? Ve hücre değerleri birbirine yakın ise, (500, 0, 5 ) gibi sadece 500 ü getiriyor. Oysa hepsini yan yana getirmeli.

Acaba, bu kodu geliştirebilir misiniz?


Sub concat()
Dim A As String
Dim checkline As Long
Dim un As String

un = "Sevgili, Kadim Dostum; " & Environ("UserName"): seper = "~"

A = Cells(2, 1)
checkline = 2
For k = 2 To 9
Cells(checkline, k + 10) = "," & Cells(checkline, k)
Next k
'Cells(2, 12) = Cells(2, 2)
For i = 3 To 1000
For j = 2 To 9
If Cells(i, 1) = A Then
If InStr(1, Cells(checkline, j + 10), Cells(i, j)) = 0 Then
Cells(checkline, j + 10) = Cells(checkline, j + 10) & "," & Cells(i, j) ' yazdırılan yer
End If
Else
A = Cells(i, 1)
checkline = i
For k = 2 To 9
Cells(checkline, k + 10) = "," & Cells(checkline, k) ' yazdırılan yer
Next k
End If
Next j
Next i
MsgBox "Hadi Gozun Aydin :)" & Chr(13) & Chr(13) & "Ayni Satirada Birlestirme Islemi Tamamlandi.", vbInformation, un
End Sub



Teşekkürler.
 

veyselemre

Özel Üye
Katılım
9 Mart 2005
Mesajlar
3,653
Excel Vers. ve Dili
Pro Plus 2021
Kod:
Sub test()
    Dim i&, al$
    Dim y, itms, kys

    With CreateObject("Scripting.Dictionary")
        For i = 2 To Cells(Rows.Count, "A").End(3).Row
            al = Cells(i, "A").Value
            .Item(al) = .Item(al) & "," & Cells(i, "B").Value
        Next i
        If .Count > 0 Then
            itms = .items
            kys = .keys
            Range("M2:N" & Rows.Count).ClearContents
            For i = LBound(itms) To UBound(itms)
                Cells(i + 2, 13) = kys(i)
                .RemoveAll
                For Each y In Split(Mid(itms(i), 2), ",")
                    .Item(y) = Null
                Next y
                Cells(i + 2, 14) = Join(.keys, ",")
            Next i
        End If
    End With

End Sub
 
Son düzenleme:
Katılım
9 Şubat 2011
Mesajlar
5
Excel Vers. ve Dili
Office 365
Üstadım, belki de ben anlatamadım, ama çalışmadı. Yine de zaman ayırdığınız için teşekkür ederim.
 
Katılım
9 Şubat 2011
Mesajlar
5
Excel Vers. ve Dili
Office 365
Üstadım, sizin de dediğiniz gibi. Biraz daha dikkatlice çalıştırdığımda sizin kodunuz çalıştı. Hakkınızı yiyemem. Teşekkür ederim.
Ancak, benim verim ve örnek birleşmiş datam aşağıda... Bunun üzerinde denediğimde kodu da değiştirmeye çalıştım ama, başarılı olamadım.
Kodu, aşağıdaki veriler için uyarlama şansımız var mı? Mümkünsei kodu güncelleyip tekrar paylaşabilir misiniz?

Çok teşekkür ederim.

a

b

c

d

e

f

g

h

i

j

BOŞ
SÜTUN

Döndürülecek sonuç A

B

C

D

E

F

G

H

İ

J

100051

MS Security Advisory 4022

ASD-2017-0290

9.3

High

10.1.120.225

tcp

445

Enable automatic updates to update

www.google.com
www.ali.com

 

100051

MS Security Advisory 4022

ASD-2017-0290

9.3

High

10.1.120.225

tcp

445

Enable automatic updates to update

www.google.com
www.ali.com

100052

MS Security Advisory 4023

ASD-2017-3073

10.0

Critical

123.233.18.204

tcp

445

Enable automatic updates to update

www.google.com
www.ali.com
www.veli.com

 

100052

MS Security Advisory 4023

ASD-2017-3073,ASD-2017-3072,ASD-2017-3071,ASD-2017-3074,ASD-2017-3070,ASD-2017-3069,ASD-2017-3068

10.0

Critical

123.233.18.204,123.233.18.6,123.233.18.04,123.233.21.206

tcp

445,50,58

Enable automatic updates to update

www.google.com
www.ali.com
www.veli.com

100052

MS Security Advisory 4024

ASD-2017-3072

10.0

Critical

123.233.18.6

tcp

445

Enable automatic updates to update

www.google.com
www.ali.com

           

100052

MS Security Advisory 4025

ASD-2017-3071

10.0

Critical

123.233.18.204

tcp

445

Enable automatic updates to update

www.google.com
www.ali.com

           

100052

MS Security Advisory 4026

ASD-2017-3074

10.0

Critical

123.233.18.204

tcp

50

Enable automatic updates to update

www.google.com
www.ali.com

           

100052

MS Security Advisory 4027

ASD-2017-3070

10.0

Critical

123.233.18.04

tcp

50

Enable automatic updates to update

www.google.com
www.ali.com

           

100052

MS Security Advisory 4028

ASD-2017-3069

10.0

Critical

123.233.18.204

tcp

445

Enable automatic updates to update

www.google.com
www.ali.com

           

100052

MS Security Advisory 4029

ASD-2017-3068

10.0

Critical

123.233.18.204

tcp

58

Enable automatic updates to update

www.google.com
www.ali.com

           

100052

MS Security Advisory 4030

ASD-2017-3069

10.0

Critical

123.233.21.206

tcp

445

Enable automatic updates to update

www.google.com
www.ali.com

           
 
 

Korhan Ayhan

Administrator
Yönetici
Admin
Katılım
15 Mart 2005
Mesajlar
42,742
Excel Vers. ve Dili
Microsoft 365 Tr-En 64 Bit
Harici dosya yükleme sitelerine örnek dosyanızı yükleyip linkini forumda paylaşabilirsiniz.
 
Üst