Soru Aynı Sicillere Tek Sıra Numarası Vermek

TURKOLOG

Altın Üye
Katılım
13 Kasım 2008
Mesajlar
744
Excel Vers. ve Dili
2016 64 TR
Altın Üyelik Bitiş Tarihi
29-10-2026
Herkese Merhaba
Bir konuda yardıma ihtiyacım var. Yardım edebilecek olan varsa çok sevinirim.
Bir excel sayfam var.
C sütununda sıra numaraları
D sütununda benzersiz siciller var
E sütununda isimler
F sutununda soy isim

Her büroda personel bitince birleştirilmiş hücre ile yeni büro ismi yazıyor
Örneğin
(Birleştirilmiş hücre) İdari Büro
1 333456 Ali. Veli
2 123449 Deniz. Deniz
3 098777 Veli. Veli


(Birleştirilmiş hücre) Deneme. Büro
4 345345 Hasan. Hasan
123449 Deniz. Deniz
5 444444 Zelal. Zelal


Şeklinde devam ediyor. Deniz iki büroda da var . Sıra Numarası verilecek deniz satırının A sutununda * işareti varsa o satıra sıra numarası versin .
Ama Aynı sicil olan yerde A sütununda * yoksa o satıra sıra numarası vermesin.
Bu şekilde D sutunu dolu son satıra kadar devam etsin.
 

ÖmerFaruk

Destek Ekibi
Destek Ekibi
Katılım
22 Ekim 2017
Mesajlar
4,779
Excel Vers. ve Dili
Microsoft 365 Tr-64
Dosyanızı paylaşabilir misiniz?

Şu nu sorayım ya da
* işaretinin sadece aynı siciller için mi kullanacaksınız
 
Son düzenleme:

TURKOLOG

Altın Üye
Katılım
13 Kasım 2008
Mesajlar
744
Excel Vers. ve Dili
2016 64 TR
Altın Üyelik Bitiş Tarihi
29-10-2026
Dosyanızı paylaşabilir misiniz?

Şu nu sorayım ya da
* işaretinin sadece aynı siciller için mi kullanacaksınız
Evet * işareti sadece aynı sicillerde sıra numarası verilmesi istenen satır için kullanılacak

Hocam dosyayı ofiste bırakmışım yarın yükleyeyim.
 

ÖmerFaruk

Destek Ekibi
Destek Ekibi
Katılım
22 Ekim 2017
Mesajlar
4,779
Excel Vers. ve Dili
Microsoft 365 Tr-64
Umarım doğru anlaşmışızdır.

C++:
Sub SıraNO()
Dim ilk As Integer, son As Integer, i As Integer
ilk = 1
son = Range("D" & Rows.Count).End(xlUp).Row
For i = ilk To son
    If IsNumeric(Range("D" & i)) And Len(Range("D" & i)) > 0 And Len(Range("E" & i)) > 0 And Len(Range("f" & i)) > 0 Then
        If WorksheetFunction.CountIfs(Range("D" & ilk, "D" & i), Range("D" & i)) > 1 Then
            If Range("A" & i) = "*" Then
                k = k + 1
                Range("C" & i) = k
            Else
                Range("C" & i) = ""
            End If
        Else
                k = k + 1
                Range("C" & i) = k
        End If
    End If
Next i
End Sub
 

TURKOLOG

Altın Üye
Katılım
13 Kasım 2008
Mesajlar
744
Excel Vers. ve Dili
2016 64 TR
Altın Üyelik Bitiş Tarihi
29-10-2026
Hocam dosyaya uygulayıp size bilgi vereyim yarın . Elinize emeğinize sağlık. Çok teşekkür ederim.
 

TURKOLOG

Altın Üye
Katılım
13 Kasım 2008
Mesajlar
744
Excel Vers. ve Dili
2016 64 TR
Altın Üyelik Bitiş Tarihi
29-10-2026
Hocam kod tam anlamı ile çalışmadı.
Ben B sütununa sabit numara verdim . Bir de Hocam D sutunu dolu ise B16 'tan itibaren siradan numara verilmesi lazım .
Örnek dosyayı yüklüyorum.

Harici Dosya Silinebilir.
 

ÖmerFaruk

Destek Ekibi
Destek Ekibi
Katılım
22 Ekim 2017
Mesajlar
4,779
Excel Vers. ve Dili
Microsoft 365 Tr-64
ilk=1 yazan satırı, adından da anlaşılacağı üzere ilk satırınız ne ise ona göre düzenleyebilirsiniz. Mesela 16

Kodları incelediğinizde E-F sütunlarındaki Adı ve Soyadı kısımlarının dolu olup olmadığını da kontrol ediyor. Ya örnel dosyanızda sicili olanlara isim verin ya da kodlarda isim soyisimleri iptal edin.
İpucu: If IsNumeric(Range("D" & i)) And Len(Range("D" & i)) > 0 And Len(Range("E" & i)) > 0 And Len(Range("f" & i)) > 0 Then

Ben bu dediklerimi yaptım ve çalıştı.
 

TURKOLOG

Altın Üye
Katılım
13 Kasım 2008
Mesajlar
744
Excel Vers. ve Dili
2016 64 TR
Altın Üyelik Bitiş Tarihi
29-10-2026
Hocam bendeki dosya hata verdi .
Harici Dosya
Hocam Dosyaya bakma imkanınız va r mi
Bir de B sütununda da duzenli sıralama yapacak.
 

ÖmerFaruk

Destek Ekibi
Destek Ekibi
Katılım
22 Ekim 2017
Mesajlar
4,779
Excel Vers. ve Dili
Microsoft 365 Tr-64
Sizin ilk dosyanız üzrine kodu düzeltip ekledim. Çalışıyor.
Ad soyada göre de kontrol yaptırmak için etkin olmayan ikinci IF satırını kullanabilirsin
https://dosya.co/mgfea6f6zyxz/TASARI.xlsm.html

Sizin yerinizde olsam ayrıca birleştirilmiş hücre kullanmaktan kaçınırım.

Kodları da aşağıda tekrar paylaştım
C++:
Sub YuvarlatılmışDikdörtgen1_Tıkla()
Dim ilk As Integer, son As Integer, i As Integer
ilk = 16
son = Range("D" & Rows.Count).End(xlUp).Row
For i = ilk To son
    If IsNumeric(Range("D" & i)) And Len(Range("D" & i)) > 0 Then
    'If IsNumeric(Range("D" & i)) And Len(Range("D" & i)) > 0 And Len(Range("E" & i)) > 0 And Len(Range("f" & i)) > 0 Then
        If WorksheetFunction.CountIfs(Range("D" & ilk, "D" & i), Range("D" & i)) > 1 Then
            If Range("A" & i) = "*" Then
                k = k + 1
                Range("C" & i) = k
            Else
                Range("C" & i) = ""
            End If
        Else
            k = k + 1
            Range("C" & i) = k
        End If
    End If
Next i
End Sub
 

TURKOLOG

Altın Üye
Katılım
13 Kasım 2008
Mesajlar
744
Excel Vers. ve Dili
2016 64 TR
Altın Üyelik Bitiş Tarihi
29-10-2026
Hocam elinize emeğinize sağlık ama şu hatalar çıktı

1. Hocam * işaretinin yerini değiştirince C sütununda işaretsizlerdeki sıralama aynen kalıyor onları silmiyor
2. Her işlemde B ve C sütunundaki sıralamayı önce silse sonra sıralasa
3. Hocam B sütununda 1 den başlayarak sıra verecek mükerrer kontrolu yapmayacak. EĞER D sutunu dolu ise son dolu d sütununa kadar numara verse
 

ÖmerFaruk

Destek Ekibi
Destek Ekibi
Katılım
22 Ekim 2017
Mesajlar
4,779
Excel Vers. ve Dili
Microsoft 365 Tr-64
1. Büro amirliği gibi olan birleşmiş hücreleri çözün ve bu başlıkları D sütununa aktarın. B ve C de başlık olmasın

Aşağıdakiler C sütunu için geçerlidir. B sütununa direkt numara veriyoruz.
2. Eğer kendisinden önceki satırlarda tekrarlayan bir sicil numarasına varsa ve A sütununda yıldız varsa onu C sütununda numaralandırıyoruz.
3. Eğer kendisinden önceki satırlarda tekrarlayan bir sicil numarasına varsa ve A sütununda yıldız yoksa onu C sütununda numaralandırmıyoruz.
4. Eğer kendisinden önceki satırlarda tekrarlayan bir sicil numarası değilse yıldız olup olmadığına bakmadan sıra numarası veriyoruz.

Sadece B sütununa ilave yaptım. Son mesajınızdaki 1 numaralı konuyu çözemedim. Yukarıda bahsettiği gibi çalışıyor. Yanlış anlıyorsam düzeltin

C#:
Sub YuvarlatılmışDikdörtgen1_Tıkla()
Dim ilk As Integer, son As Integer, i As Integer
ilk = 16
son = Range("D" & Rows.Count).End(xlUp).Row
Range("B" & ilk, "C" & son).ClearContents
For i = ilk To son
    If IsNumeric(Range("D" & i)) And Len(Range("D" & i)) > 0 Then
    'If IsNumeric(Range("D" & i)) And Len(Range("D" & i)) > 0 And Len(Range("E" & i)) > 0 And Len(Range("f" & i)) > 0 Then
        x = x + 1
        Range("B" & i) = x
        If WorksheetFunction.CountIfs(Range("D" & ilk, "D" & i), Range("D" & i)) > 1 Then
            If Range("A" & i) = "*" Then
                k = k + 1
                Range("C" & i) = k
            Else
                Range("C" & i) = ""
            End If
        Else
                k = k + 1
                Range("C" & i) = k
        End If
    End If
Next i
End Sub
 
Katılım
5 Kasım 2006
Mesajlar
601
Excel Vers. ve Dili
TÜRKCE Excel 2021 32bit
1. Büro amirliği gibi olan birleşmiş hücreleri çözün ve bu başlıkları D sütununa aktarın. B ve C de başlık olmasın

Aşağıdakiler C sütunu için geçerlidir. B sütununa direkt numara veriyoruz.
2. Eğer kendisinden önceki satırlarda tekrarlayan bir sicil numarasına varsa ve A sütununda yıldız varsa onu C sütununda numaralandırıyoruz.
3. Eğer kendisinden önceki satırlarda tekrarlayan bir sicil numarasına varsa ve A sütununda yıldız yoksa onu C sütununda numaralandırmıyoruz.
4. Eğer kendisinden önceki satırlarda tekrarlayan bir sicil numarası değilse yıldız olup olmadığına bakmadan sıra numarası veriyoruz.

Sadece B sütununa ilave yaptım. Son mesajınızdaki 1 numaralı konuyu çözemedim. Yukarıda bahsettiği gibi çalışıyor. Yanlış anlıyorsam düzeltin

C#:
Sub YuvarlatılmışDikdörtgen1_Tıkla()
Dim ilk As Integer, son As Integer, i As Integer
ilk = 16
son = Range("D" & Rows.Count).End(xlUp).Row
Range("B" & ilk, "C" & son).ClearContents
For i = ilk To son
    If IsNumeric(Range("D" & i)) And Len(Range("D" & i)) > 0 Then
    'If IsNumeric(Range("D" & i)) And Len(Range("D" & i)) > 0 And Len(Range("E" & i)) > 0 And Len(Range("f" & i)) > 0 Then
        x = x + 1
        Range("B" & i) = x
        If WorksheetFunction.CountIfs(Range("D" & ilk, "D" & i), Range("D" & i)) > 1 Then
            If Range("A" & i) = "*" Then
                k = k + 1
                Range("C" & i) = k
            Else
                Range("C" & i) = ""
            End If
        Else
                k = k + 1
                Range("C" & i) = k
        End If
    End If
Next i
End Sub
Merhaba.
Range("B" & ilk, "C" & son).ClearContents
yerine
Range("B" & ilk, "C" & son).Value = ""
eklenmeli birleştirilmiş hücrelerde hata vermemesi için.
 

ÖmerFaruk

Destek Ekibi
Destek Ekibi
Katılım
22 Ekim 2017
Mesajlar
4,779
Excel Vers. ve Dili
Microsoft 365 Tr-64
Merhaba. Soru sahibinin kafası karışmasın diye yazmıştım.
Allaha emanet ol.
 

TURKOLOG

Altın Üye
Katılım
13 Kasım 2008
Mesajlar
744
Excel Vers. ve Dili
2016 64 TR
Altın Üyelik Bitiş Tarihi
29-10-2026
Hocam birleştirilmiş hücreleri iptal ettim . Ama yine de çalışmadı. Zafer Hocamın belirttiği kısmi ekleyince çalıştı kod ama şöyle
Hani büro büro ya listeler her * işaretini kendi kesintisiz grubu içersinde değerlendiriyor.
Yanı A büroda iki tane aynı sicil isim varsa * işaretini dikkate alıyor.
Diyelim aynı isim hem a büroda hem b büroda olunca en üstte hangi büro varsa o satıra c Sütununa numara veriyor. * işaretini dikkate almiyor. Ama misal a büroda aynı sicilden iki tane varsa o zaman yıldız işaretini dikkate alıyor.
 

ÖmerFaruk

Destek Ekibi
Destek Ekibi
Katılım
22 Ekim 2017
Mesajlar
4,779
Excel Vers. ve Dili
Microsoft 365 Tr-64
Sıkıntı yok. Madem çözdünüz bir şekilde ok.

Sorunuza gelince,
Bu satırı
If WorksheetFunction.CountIfs(Range("D" & ilk, "D" & i), Range("D" & i)) > 1 Then

bununla değiştirin
If WorksheetFunction.CountIfs(Range("D" & ilk, "D" & son), Range("D" & i)) > 1 Then
 

TURKOLOG

Altın Üye
Katılım
13 Kasım 2008
Mesajlar
744
Excel Vers. ve Dili
2016 64 TR
Altın Üyelik Bitiş Tarihi
29-10-2026
Sıkıntı yok. Madem çözdünüz bir şekilde ok.

Sorunuza gelince,
Bu satırı
If WorksheetFunction.CountIfs(Range("D" & ilk, "D" & i), Range("D" & i)) > 1 Then

bununla değiştirin
If WorksheetFunction.CountIfs(Range("D" & ilk, "D" & son), Range("D" & i)) > 1 Then
Hocam bu durumda * işaretini dikkate dahi almadan B sütunu gibi 1 den başlayarak sıra veriyor.
 
Üst