• DİKKAT

    DOSYA İndirmek/Yüklemek için ÜCRETLİ ALTIN ÜYELİK Gereklidir!
    Altın Üyelik Hakkında Bilgi

Koşullu Seçme-İşaretleme

Katılım
30 Haziran 2015
Mesajlar
51
Excel Vers. ve Dili
Office 2013- türkçe
İyi günler;

http://www.dosya.tc/server10/cenldq/ncr.xlsx.html

ekteki dosyada "N" sütununda kendim manuel olarak Aynı Blok, Aynı kat, Aynı daire olan hataların sadece 1 tanesini alacak şekilde düzenledim. örneğin 1 dairede aynı hatadan 4-5 uygunsuzluk var ise yalnızca 1 tanesini almasını istiyorum. manuel olarak yapmak çok vaktimi alıyor makro ile çözümü var mıdır şimdiden teşekkürler,

Not: makro kayıt yöntemi ile hangi mantıksal sınamayı kullandığınızı da izah ederseniz makro kullanım mantığını kavramam açısından faydalı olacaktır.
 
Merhaba;
Eki deneyin.
İyi çalışmalar.

Not : Makro ile ilgili basit açıklamalar makro içerisinde..

Link:
http://www.dosya.tc/server10/b7n9hl/yucelcicekcioglu-Kosullu_Secme-Isaretleme.zip.html


hocam elinize sağlık doğru çalışıyor gibi ancak N sütunundaki hücreleri birleştir ile seçip mükerrerleri iptal etme şeklinde mi mantık kurdunuz? birleştir fonksiyonu içine sırasıyla (g-h-j-k-l-m) sütunları yazmak gerekiyordu parsel-blok-kat-daire den önce eleme koşulumuz imalat kategori ve hata tipine de bağlı,

bir de açıklamalardan çok anlayamadım açıkçası biraz acemiyim kusura bakmayın, makro kaydet yöntemi ile mi yaptınız kod yazarak mı? makro kaydetme yolu ile yapacak olursak hangi mantığı düşünmek gerekir tekrarlananları sil metodu ile değil de, tekrarlananları saymayıp diğerlerine sayı verme mantığını nasıl kurdunuz?

ayrıca ben makroyu alıp bu dosyanın orjinaline çalıştırdığımda işlem tamam penceresi geliyor ancak yanına rakamları yazmıyor
 
Son düzenleme:
Merhaba;
Tahmin ettiğiniz gibi hücreleri birleştirerek mükerrer olanlardan ilkine sayı no'su verdirdim.
Birleştirme için belirttiğiniz (g-h-j-k-l-m) sütunları kullanıldı.
Makrolar kaydet yöntemi ile değil , yazarak oluşturuldu.

If WorksheetFunction.CountIf(Range("n2:n" & i), Cells(i, "n")) = 1 Then

bu satır ile ilk geçen veri ise sıra no'su işlemi yaptırıldı.

Ben sizin örneğinizdeki dosyayı kullandım. (orj. dosyanızdaki sorunu bilemem.)
Makro döngü için J sütununa bakıyordu bunu G sütunu olarak değiştirdim. (siz orj. dosyanızda tüm satırlar için var olan bir sütunu kullanın.)


Eki tekrar deneyin.
İyi çalışmalar.

Link:
http://www.dosya.tc/server10/cytypg/celcicekcioglu-Kosullu_Secme-Isaretleme-1.zip.html
 

Ekli dosyalar

Merhaba;
Tahmin ettiğiniz gibi hücreleri birleştirerek mükerrer olanlardan ilkine sayı no'su verdirdim.
Birleştirme için belirttiğiniz (g-h-j-k-l-m) sütunları kullanıldı.
Makrolar kaydet yöntemi ile değil , yazarak oluşturuldu.

If WorksheetFunction.CountIf(Range("n2:n" & i), Cells(i, "n")) = 1 Then

bu satır ile ilk geçen veri ise sıra no'su işlemi yaptırıldı.

Ben sizin örneğinizdeki dosyayı kullandım. (orj. dosyanızdaki sorunu bilemem.)
Makro döngü için J sütununa bakıyordu bunu G sütunu olarak değiştirdim. (siz orj. dosyanızda tüm satırlar için var olan bir sütunu kullanın.)


Eki tekrar deneyin.
İyi çalışmalar.

Link:
http://www.dosya.tc/server10/cytypg/celcicekcioglu-Kosullu_Secme-Isaretleme-1.zip.html


hocam eline koluna sağlık, sizden rica etsem tek tek bu kodu bana izah edebilir misiniz? oldukça amatör olduğumu göz önüne alarak biraz vaktinizi alabilir miyim? böyle böyle inceleyerek ne nedir ne işe yarar anlamaya çalışıyorum. örneğin : kodun başında Application.ScreenUpdating = False ve sonunda Application.ScreenUpdating = True yazmışsınız, bu neye yarar,
 
Makro kodları satır satır okuyup işler.
Her satır sonunda yaptığı işlemi ekrana yazdığını görmenize gerek varsa Application.ScreenUpdating = True, önemli olan işlemin sonunda görmenizse Application.ScreenUpdating = False komutu uygulanır.
 
Syn. yucelcicekcioglu;
Bildiğiniz gibi vba tek satırdaki anlamdan yada birkaç satırlık koddan ibaret değil.
Eğer bunu öğrenmek yada geliştirmek istiyorsanız bir kaynak edinin ve Altın üye olun. Böylece Buradaki dosya yada video'ları izleme-inceleme deneme şansınız olur.
İyi çalışmalar.
 
Syn. yucelcicekcioglu;
Bildiğiniz gibi vba tek satırdaki anlamdan yada birkaç satırlık koddan ibaret değil.
Eğer bunu öğrenmek yada geliştirmek istiyorsanız bir kaynak edinin ve Altın üye olun. Böylece Buradaki dosya yada video'ları izleme-inceleme deneme şansınız olur.
İyi çalışmalar.


çok sağolun hocam anlaşılmıştır
 
Makro kodları satır satır okuyup işler.
Her satır sonunda yaptığı işlemi ekrana yazdığını görmenize gerek varsa Application.ScreenUpdating = True, önemli olan işlemin sonunda görmenizse Application.ScreenUpdating = False komutu uygulanır.


açıklama için teşekkürler hocam
 
Merhaba;
Tahmin ettiğiniz gibi hücreleri birleştirerek mükerrer olanlardan ilkine sayı no'su verdirdim.
Birleştirme için belirttiğiniz (g-h-j-k-l-m) sütunları kullanıldı.
Makrolar kaydet yöntemi ile değil , yazarak oluşturuldu.

If WorksheetFunction.CountIf(Range("n2:n" & i), Cells(i, "n")) = 1 Then

bu satır ile ilk geçen veri ise sıra no'su işlemi yaptırıldı.

Ben sizin örneğinizdeki dosyayı kullandım. (orj. dosyanızdaki sorunu bilemem.)
Makro döngü için J sütununa bakıyordu bunu G sütunu olarak değiştirdim. (siz orj. dosyanızda tüm satırlar için var olan bir sütunu kullanın.)


Eki tekrar deneyin.
İyi çalışmalar.

Link:
http://www.dosya.tc/server10/cytypg/celcicekcioglu-Kosullu_Secme-Isaretleme-1.zip.html

hocam bu attığınız dosyada sonuç olarak çıkan sayıları "x" gibi bir harf ile değiştirmek mümkün müdür? sütunu seçip değer var ise değeri x olarak değiştir yok ise boş bırak gibi bir şey yapmak istedim beceremedim, +EĞER(O2=0;"";"X") şeklidne formül yazıp aşağı çekiyorum ancak bu sefer sayma işleminde +bağ_değ_dolu_say formülünde "" şeklindeki sonucu da bir değer olarak sayıyor. makro ile yapmanın yöntemi var mıdır? bilgilendirirseniz benim için aydınlatıcı olacaktır yazdığınız makroyu incelemek. teşekkürler
 
Merhaba;
Makrodaki;

Cells(i, "o") = sayy

Satırını;

Cells(i, "o") = "X"

şeklinde düzenleyin.
İyi çalışmalar.
 
Merhaba;
Makrodaki;

Cells(i, "o") = sayy

Satırını;

Cells(i, "o") = "X"

şeklinde düzenleyin.
İyi çalışmalar.

cevabınız için teşekkür ederim hocam ancak kod çalışmadı, başta sayy=1 diye tanımladığımız için ve altta sayy=sayy+1 şeklinde belirttiğimiz için x+1 geçersiz düşünmüş olabilir mi siz daha iyi bilirsiniz rica etmsem kontrol edebilir misiniz
 
X+1 değil "şeklinde düzenleyin" ibaresinin üstündeki şekilde uygulayın
Yani;
Cells(i, "o") = "X"
Şeklinde...
 
çözüldü hocam dikkate almayın lütfen
 
Son düzenleme:
Geri
Üst