Farklı sütunlardaki verilerin tek bir sütunda sıralanması

sahika51

Altın Üye
Katılım
28 Ekim 2006
Mesajlar
180
Excel Vers. ve Dili
2010-2019
Altın Üyelik Bitiş Tarihi
14-09-2027
Arkadaşlar iyi günler. Bir tablm var. c2:f32 içerisindeki isiölerin H2 sütunundanitibaren her isimden yalnız 1 tane kullanmak kaydıyla listelnmesi gerekiyor. İnanın çok baktum bulamadım. yardımcı olursanız sevinirimç
 

Ekli dosyalar

ÖmerBey

Destek Ekibi
Destek Ekibi
Katılım
22 Ekim 2012
Mesajlar
4,397
Excel Vers. ve Dili
2007 Türkçe
Merhaba,
Deneyiniz...
Kod:
Sub kod()
Dim s As Object
Dim hcr As Range
Set s = CreateObject("Scripting.Dictionary")
For Each hcr In Range("C2:F32")
    For Each h In Split(hcr.Value, ", ")
        If Not s.Exists(h) Then s.Add h, 1 Else s(h) = s(h) + 1
    Next
Next
Range("H2").Resize(s.Count, 1).Value = Application.Transpose(s.Keys())
Range("I2").Resize(s.Count, 1).Value = Application.Transpose(s.Items())
End Sub
 

muhasebeciyiz

Altın Üye
Katılım
10 Şubat 2006
Mesajlar
648
Excel Vers. ve Dili
Office 2016
64 Bit
Altın Üyelik Bitiş Tarihi
21-12-2027
Eğer ihtiyacınız benzersiz değerleri listelemek ve görünüm sayılarını da takip etmekse, Ömerbey'in kodu daha uygundur.
Eğer sadece benzersiz değerleri listelemekse, benim verdiğim kod yeterli olur.
 

Ekli dosyalar

Son düzenleme:
Katılım
13 Ocak 2013
Mesajlar
21
Excel Vers. ve Dili
2019
Altın Üyelik Bitiş Tarihi
08/02/2019
Merhaba,
Deneyiniz...
Kod:
Sub kod()
Dim s As Object
Dim hcr As Range
Set s = CreateObject("Scripting.Dictionary")
For Each hcr In Range("C2:F32")
    For Each h In Split(hcr.Value, ", ")
        If Not s.Exists(h) Then s.Add h, 1 Else s(h) = s(h) + 1
    Next
Next
Range("H2").Resize(s.Count, 1).Value = Application.Transpose(s.Keys())
Range("I2").Resize(s.Count, 1).Value = Application.Transpose(s.Items())
End Sub
Merhaba Ömer bey,
Yazmış olduğunuz makroda seçili hücreler olan "(C2:F32)" yerine sayfada yazılı olan bütün alanları otomatik seçim nasıl yaptıra biliriz?

Örneğin benim şu anki dosyamda (a1: Eu7) her dosyamda sütun sayısı farklı olacağı için otomatik seçim nasıl yaptırabilirz?
 

volki_112

Altın Üye
Katılım
29 Eylül 2023
Mesajlar
68
Excel Vers. ve Dili
2019 Türkçe
Altın Üyelik Bitiş Tarihi
13-12-2029
Merhaba Ömer bey,
Yazmış olduğunuz makroda seçili hücreler olan "(C2:F32)" yerine sayfada yazılı olan bütün alanları otomatik seçim nasıl yaptıra biliriz?

Örneğin benim şu anki dosyamda (a1: Eu7) her dosyamda sütun sayısı farklı olacağı için otomatik seçim nasıl yaptırabilirz?
Aşağıdaki kodu kullanınız. Seçilmek istenen aralıkları ve nereye veri yazılacağını size soruyor.

Kod:
Sub Kod()
    Dim s As Object
    Dim dataRange As Range, outputCell As Range
    Dim hcr As Range
    Dim cellValue As String
    Dim hArray As Variant
    Dim i As Long
    Dim h As String
    
    ' Kullanıcıdan veri aralığını seçmesini iste
    On Error Resume Next
    Set dataRange = Application.InputBox("Veri aralığınızı seçiniz. İsterseniz mouse ile seçim yapabilirsiniz ya da elle (örn: C2:F25) yazabilirsiniz. ", "Aralık Seçimi", Type:=8)
    If dataRange Is Nothing Then Exit Sub
    On Error GoTo 0
    
    ' Kullanıcıdan sonuçların yazılacağı başlangıç hücresini seçmesini iste
    On Error Resume Next
    Set outputCell = Application.InputBox("Sonuçların yazılacağı başlangıç hücresini seçiiz. İsterseniz mouse ile seçebilirsiniz ya da elle (örn: H2) yazabilirsiniz.", "Hücre Seçimi", Type:=8)
    If outputCell Is Nothing Then Exit Sub
    On Error GoTo 0
    
    ' Sözlük nesnesini oluştur
    Set s = CreateObject("Scripting.Dictionary")
    
    ' Veri aralığını döngüyle işleme
    For Each hcr In dataRange
        cellValue = hcr.Value ' Hücredeki değeri al
        hArray = Split(cellValue, ", ") ' Hücredeki değeri virgülle ayır
        For i = LBound(hArray) To UBound(hArray)
            h = Trim(hArray(i)) ' Dizedeki öğeyi al ve boşlukları temizle
            If Not s.Exists(h) Then
                s.Add h, 1
            Else
                s(h) = s(h) + 1
            End If
        Next i
    Next hcr
    
    ' Sonuçları yazdır
    outputCell.Resize(s.Count, 1).Value = Application.Transpose(s.Keys())
    outputCell.Offset(0, 1).Resize(s.Count, 1).Value = Application.Transpose(s.Items())
    
    MsgBox "İşlem tamamlandı!", vbInformation
End Sub
 
Katılım
13 Ocak 2013
Mesajlar
21
Excel Vers. ve Dili
2019
Altın Üyelik Bitiş Tarihi
08/02/2019
@volki_112 çok teşekkür ederim ama şu şekilde bir sıkıntı oldu.
Benim Tablom A1 Hücresinden EU7 hücresine kadar bu alan içerisinde A sütununda ki 7 satırı alt alta yazması sonra B sütunundaki 7 satırı alt alta yazması bu şekilde EU hücresine kadar bütün alanları alt alta kopyalaması. Yardımcı olursanız çok sevinirim.
 
Son düzenleme:

volki_112

Altın Üye
Katılım
29 Eylül 2023
Mesajlar
68
Excel Vers. ve Dili
2019 Türkçe
Altın Üyelik Bitiş Tarihi
13-12-2029
Musait olunca bakayim. Kodlari yapay zekaya yazdirdim.
 

ÖmerBey

Destek Ekibi
Destek Ekibi
Katılım
22 Ekim 2012
Mesajlar
4,397
Excel Vers. ve Dili
2007 Türkçe
Benim Tablom A1 Hücresinden EU7 hücresine kadar bu alan içerisinde A sütununda ki 7 satırı alt alta yazması sonra B sütunundaki 7 satırı alt alta yazması bu şekilde EU hücresine kadar bütün alanları alt alta kopyalaması. Yardımcı olursanız çok sevinirim.
Merhaba,
Dosya yapısı farklı olduğu için yazılacak kod da değişecektir. Örnek bir dosya paylaşıp isteğinizi dosya üzerinde gösterirseniz isteğinize uygun kod yazılabilir.
 
Üst