Belli bir sıralamaya uymayanı bulma ve silme

Katılım
8 Kasım 2023
Mesajlar
15
Excel Vers. ve Dili
2016/Türkçe
Merhabalar Sayın Hocalarım. Excelde bir konuda yardıma ihtiyacım var.
A sütununda veriler "A1metin A2Sayı A3metin A4sayı A5metin A6sayı......" şeklinde ilerliyor fakat bir yerde metin sayı şeklinde sıralama olması gerekirken örneğin A187metin A188metin olarak sıralama bozuluyor bu sıralamayı bozanı bulup sıralamayı bozan ilk metini yani A187 yi silmek istiyorum. Umarım anlatabilmişimdir. Yardımınız için şimdiden teşekkürler
 

Korhan Ayhan

Administrator
Yönetici
Admin
Katılım
15 Mart 2005
Mesajlar
41,534
Excel Vers. ve Dili
Microsoft 365 Tr-En 64 Bit
Verilerinizin A1 hücresinden başladığını ifade etmişsiniz. Sırasıyla aşağıdaki adımları izleyip sonuç alabilirsiniz.

A2:A... aralığını seçiniz.
Koşullu biçimlendirme formül bölümüne aşağıdaki formülü uygulayınız.

C++:
=VE(EMETİNSE(A1);EMETİNSE(A2))
Sonra aynı menüdeki BİÇİM menüsünden dilediğiniz rengi seçip işlemi tamamlayınız.

Son olarak A sütununa filtre uygulayıp verdiğiniz rengi seçerek filtre uyguladıktan sonra görünen satırları seçerek silebilirsiniz.
 
Katılım
12 Aralık 2015
Mesajlar
1,200
Excel Vers. ve Dili
Türkçe Ofis 2007
Eğer veriler A1hücresinden başlıyor ve A1 hücresindeki Metin 1 ile (1abc) şeklinde ise
Kod:
Sub sıra()
son = Cells(Rows.Count, 1).End(3).Row
For x = son To 1 Step -1
If x <> sayı(Cells(x, 1)) * 1 Then
Cells(x, 1).Clear
End If
Next
End Sub
Function sayı(huc As Range)
For i = 1 To Len(huc)
If IsNumeric(Mid(huc, i, 1)) = True Then
ekle = ekle & Mid(huc, i, 1)
Else
Exit For
End If
Next
sayı = ekle
End Function
 
Katılım
12 Aralık 2015
Mesajlar
1,200
Excel Vers. ve Dili
Türkçe Ofis 2007
Hatalı değerlendirme yapmışım sayı metin içerisinde nerede olduğu önemli değil.
Kod:
Sub sıra()
son = Cells(Rows.Count, 1).End(3).Row
For x = son To 1 Step -1
If x <> sayı(Cells(x, 1)) * 1 Then
Cells(x, 1).Clear
End If
Next
End Sub
Function sayı(huc As Range)
For i = 1 To Len(huc)
If IsNumeric(Mid(huc, i, 1)) = True Then
ekle = ekle & Mid(huc, i, 1)
End If
Next
sayı = ekle
End Function
 
Katılım
8 Kasım 2023
Mesajlar
15
Excel Vers. ve Dili
2016/Türkçe
Verilerinizin A1 hücresinden başladığını ifade etmişsiniz. Sırasıyla aşağıdaki adımları izleyip sonuç alabilirsiniz.

A2:A... aralığını seçiniz.
Koşullu biçimlendirme formül bölümüne aşağıdaki formülü uygulayınız.

C++:
=VE(EMETİNSE(A1);EMETİNSE(A2))
Sonra aynı menüdeki BİÇİM menüsünden dilediğiniz rengi seçip işlemi tamamlayınız.

Son olarak A sütununa filtre uygulayıp verdiğiniz rengi seçerek filtre uyguladıktan sonra görünen satırları seçerek silebilirsiniz.
Tam anlatamadim sanırım ve bu şekilde her defasında bunu yapmam gerekecek ama bir sürü veri girişi var makro yapabilirsem çok daha güzel olur ilginize
Verilerinizin A1 hücresinden başladığını ifade etmişsiniz. Sırasıyla aşağıdaki adımları izleyip sonuç alabilirsiniz.

A2:A... aralığını seçiniz.
Koşullu biçimlendirme formül bölümüne aşağıdaki formülü uygulayınız.

C++:
=VE(EMETİNSE(A1);EMETİNSE(A2))
Sonra aynı menüdeki BİÇİM menüsünden dilediğiniz rengi seçip işlemi tamamlayınız.

Son olarak A sütununa filtre uygulayıp verdiğiniz rengi seçerek filtre uyguladıktan sonra görünen satırları seçerek silebilirsiniz.
Bu şekilde değil hocam. Metinse geç degilse renklendir gibi birsey oluyor sanırım. Daha detaylı anlatacağım yine de teşekkürler
 
Katılım
8 Kasım 2023
Mesajlar
15
Excel Vers. ve Dili
2016/Türkçe
Hatalı değerlendirme yapmışım sayı metin içerisinde nerede olduğu önemli değil.
Kod:
Sub sıra()
son = Cells(Rows.Count, 1).End(3).Row
For x = son To 1 Step -1
If x <> sayı(Cells(x, 1)) * 1 Then
Cells(x, 1).Clear
End If
Next
End Sub
Function sayı(huc As Range)
For i = 1 To Len(huc)
If IsNumeric(Mid(huc, i, 1)) = True Then
ekle = ekle & Mid(huc, i, 1)
End If
Next
sayı = ekle
End Function
Hocam tam olarak derdim şu şekilde örnekleyebilirim;
A1 Emrah
A2 55
A3 Mustafa
A4 48
A5 Mehmet
A6 53
A7 Murat
A8 Cenk

Görüldüğü gibi A1 den A6 ya kadar Metin biçimi sayı biçimi şeklinde ilerliyor ama A7 de Metin biçimi ve A 8 Metin biçimi olarak görünüyor. Sayı gelmesi lazımdı demek ki girilmemiş. İşte buna ve bunun gibilerine denk gelince bir alt satırı sayı olmayan metini silmek istiyorum
 

DoğanD

Altın Üye
Katılım
22 Eylül 2023
Mesajlar
388
Excel Vers. ve Dili
Office 365 TR
Altın Üyelik Bitiş Tarihi
05-10-2028
Merhaba,

İhtiyacınız var mı bilmiyorum fakat numara tekrar ederse de silecek şekilde yazdım. Kontrol eder misiniz?

Kod:
Sub DD()
Dim i As Integer
For i = 2 To Cells(Rows.Count, 1).End(3).Row - 1

If IsNumeric(Cells(i, 1)) And IsNumeric(Cells(i + 1, 1)) Or IsNumeric(Cells(i, 1)) = False And IsNumeric(Cells(i + 1, 1)) = False Then
Rows(i).Delete
End If

Next i
End Sub
 

Necdet

Moderatör
Yönetici
Katılım
4 Haziran 2005
Mesajlar
15,225
Excel Vers. ve Dili
Ofis 365 Türkçe
Merhaba,
Resimdeki gibi olursa çözüm nedir?

247613
 
Katılım
12 Aralık 2015
Mesajlar
1,200
Excel Vers. ve Dili
Türkçe Ofis 2007
B sütunu boş olduğunu varsaydım. Deneyin.
Kod:
Sub sıra()
Application.ScreenUpdating = False
Son = Cells(Rows.Count, 1).End(3).Row
Range("Z1:Z" & Son).FormulaR1C1 = "=ISTEXT(RC[-25])"
For x = Son To 2 Step -1
If Cells(x - 1, 26) = Cells(x, 26) Then
Rows(x).Delete
End If
Next
Columns(26).Clear
Application.ScreenUpdating = False
End Sub
 
Son düzenleme:
Katılım
8 Kasım 2023
Mesajlar
15
Excel Vers. ve Dili
2016/Türkçe
Merhaba,

İhtiyacınız var mı bilmiyorum fakat numara tekrar ederse de silecek şekilde yazdım. Kontrol eder misiniz?

Kod:
Sub DD()
Dim i As Integer
For i = 2 To Cells(Rows.Count, 1).End(3).Row - 1

If IsNumeric(Cells(i, 1)) And IsNumeric(Cells(i + 1, 1)) Or IsNumeric(Cells(i, 1)) = False And IsNumeric(Cells(i + 1, 1)) = False Then
Rows(i).Delete
End If

Next i
End Sub
Hocam öncelikle çok teşekkür ederim ilginiz için oldu fakat dediğiniz numara tekrar ederse de silmesi olmadı cünkü en sonra sıra numara numara numara numara diye gidiyor ve son metin değerini siliyor kendisine ait olmayanı numarayı getiriyor bu sekilde.
 
Katılım
8 Kasım 2023
Mesajlar
15
Excel Vers. ve Dili
2016/Türkçe
B sütunu boş olduğunu varsaydım. Deneyin.
Kod:
Sub sıra()
Application.ScreenUpdating = False
Son = Cells(Rows.Count, 1).End(3).Row
Range("B1:B" & Son).FormulaR1C1 = "=ISTEXT(RC[-1])"
For x = Son To 2 Step -1
If Cells(x - 1, 2) = Cells(x, 2) Then
Cells(x - 1, 1).Delete
Cells(x - 1, 2).Delete
End If
Next
Columns(2).Clear
Application.ScreenUpdating = False
End Sub
B sütunu boş değil hocam ama a sütunun düzeltmesi yeterli benim için deyeceğim yine de teşekkür ederim size de
 

Korhan Ayhan

Administrator
Yönetici
Admin
Katılım
15 Mart 2005
Mesajlar
41,534
Excel Vers. ve Dili
Microsoft 365 Tr-En 64 Bit
Benim önerimde peşpeşe gelen METİNSEL ifadeler renklenecektir. İstediğiniz bu değilmiydi?
 
Katılım
8 Kasım 2023
Mesajlar
15
Excel Vers. ve Dili
2016/Türkçe
B sütunu boş olduğunu varsaydım. Deneyin.
Kod:
Sub sıra()
Application.ScreenUpdating = False
Son = Cells(Rows.Count, 1).End(3).Row
Range("B1:B" & Son).FormulaR1C1 = "=ISTEXT(RC[-1])"
For x = Son To 2 Step -1
If Cells(x - 1, 2) = Cells(x, 2) Then
Cells(x - 1, 1).Delete
Cells(x - 1, 2).Delete
End If
Next
Columns(2).Clear
Application.ScreenUpdating = False
End Sub
şimdi denedim hocam A sütununda dediğimizi yapıyor. koşul sağlanıyor fakat silerken hem satırı komple silmiyor hem de B sütununu tamamen siliyor
 
Katılım
8 Kasım 2023
Mesajlar
15
Excel Vers. ve Dili
2016/Türkçe
Benim önerimde peşpeşe gelen METİNSEL ifadeler renklenecektir. İstediğiniz bu değilmiydi?
hocam sizin dediğinizi her seferinde yapmam gerekiyor sanırım bunu makro şeklinde kaydetmeye çalışacağım ama tam olarak istediğim makro şeklinde otomatik kendi silmesiydi.
 
Katılım
8 Kasım 2023
Mesajlar
15
Excel Vers. ve Dili
2016/Türkçe
Hocam öncelikle çok teşekkür ederim ilginiz için oldu fakat dediğiniz numara tekrar ederse de silmesi olmadı cünkü en sonra sıra numara numara numara numara diye gidiyor ve son metin değerini siliyor kendisine ait olmayanı numarayı getiriyor bu sekilde.
Sayın DoğanD ve diğer hocalarım hepinize ilginiz için çok teşekkür ederim. Doğan hocamın yazdığı kodları düzenleyerek kendime göre gerekli düzenlemeyi yaptım ve oldu. Şu şekilde yazayım faydası olacak arkadaşlar kullanabilir.

Sub DD()
Dim i As Integer
For i = 2 To Cells(Rows.Count, 1).End(3).Row - 1

If IsNumeric(Cells(i, 1)) = False And IsNumeric(Cells(i + 1, 1)) = False Then
Rows(i).Delete
End If

Next i
End Sub

tekrar eden metinleri bulup bir önceki metini ve bağlı bulunduğu satırı siliyor. Saygılarımı sunuyorum herkese.
 
Katılım
12 Aralık 2015
Mesajlar
1,200
Excel Vers. ve Dili
Türkçe Ofis 2007
#9 mesajdaki kodları değiştirdim tüm satırı siliyor ve Tablonuz Z sütununa kadar değildir diye düşündüm, Z sütununu geçici olarak kullanıyor (yani B sütunu silinmeyecek. )
 
Katılım
8 Kasım 2023
Mesajlar
15
Excel Vers. ve Dili
2016/Türkçe
#9 mesajdaki kodları değiştirdim tüm satırı siliyor ve Tablonuz Z sütununa kadar değildir diye düşündüm, Z sütununu geçici olarak kullanıyor (yani B sütunu silinmeyecek. )
Teşekkürler hocam sizin dediğiniz gibi de oldu. İki şekilde de istenilen sonuca ulaştım saygılarımı iletiyorum.
 
Katılım
12 Aralık 2015
Mesajlar
1,200
Excel Vers. ve Dili
Türkçe Ofis 2007
#15 mesajda düzenlemiş olduğunuz kod, metin, metin olduğunda çalışıyor. Ancak sayı, sayı olduğuda çalışmıyor.
 
Katılım
8 Kasım 2023
Mesajlar
15
Excel Vers. ve Dili
2016/Türkçe
Eve
#15 mesajda düzenlemiş olduğunuz kod, metin, metin olduğunda çalışıyor. Ancak sayı, sayı olduğuda çalışmıyor.
Evet Hocam. Sayı sayı şeklinde giden varsa onu da ekstra bulmak ve silmek için DoğanD Bey'in kodu her ikisini de yapıyor
 
Katılım
8 Kasım 2023
Mesajlar
15
Excel Vers. ve Dili
2016/Türkçe
Merhaba,
Resimdeki gibi olursa çözüm nedir?

Ekli dosyayı görüntüle 247613
Aynen hocam böyle ve her metin kendinden sonra gelen sayı ile alt alta yazılması gerekiyor. İki metin üst üste veya iki sayı üst üste gelse bile metin kendinden sonraki sayı ile yazılması gerekiyor otomatik olarak ama beceremedim bir türlü. Saygıdeğer hocalarım yardımcı oldular ama ya metini de siliyor ya da yanlış degerleri yazıyor metinin altina.
Ahmet
22
Canan
Cenk
35
Hakan
13
Mert
Uğur
Murat
12
Diyelim olmasıni istediğim
Ahmet
22
Cenk
35
Hakan
13
Murat
12
Daha fazla anlatamam kendimi 😀
 
Üst