• DİKKAT !

    Forum içeriğine ve tüm hizmetlerimize erişim sağlamak için foruma kayıt olmalı ya da giriş yapmalısınız. Foruma üye olmak Dosya Yükleme tamamen ücretsizdir.

Çözüldü Hücrelerdeki Sayıları Tasnif Etmek

Bu konu çözüldü olarak işaretlenmiştir. Çözülmediğini düşünüyorsanız konuyu rapor edebilirsiniz.
Durum
Konu Çözümlendiği İçin Kapatılmıştır.

ArasKo

Yeni Üye
Katılım
8 Mar 2023
Mesajlar
84
Aldığı beğeni
15
Excel V
Office 2016 TR
Konu Sahibi
Arkadaşlar merhaba. Hücrelerde verilen ve araları virgüllerle ayrılmış sayıları tasnif edecek bir makroya ihtiyacım var. Ekte bir dosya paylaştım. Görüldüğü üzere A' da sayılar var dağınık, yani aritmetik olmayacak şekilde verilmiş. Sütun B' de ise A ve B gibi iki değer var. Şimdi gerekli işlemleri aşama aşama aşağıda belirtiyorum:
1. Aşama:
  • Bir hücrede çift sayıda olan olan -yani 2, 4, 6,... adet olan- mükerrer sayılar tamamen silinecek. Örneğin; A2 nolu hücrede 4 adet 12 var ve hepsi silinecek.
  • Bir hücrede tek sayıda olan olan -yani 3, 5, 7,... adet olan- mükerrer sayılar tek adete indirilecek. Örneğin; A8 nolu hücrede 3 adet 11 var. Orada sadece bir adet 11 yazacak.
Bakın tüm bu düzenlemeleri yaptıktan sonra sayfa2' deki sonuca ulaştık.

2. Aşama:
  • Sütun A' da 15 adet hücre var. Bu hücrelerdeki herhangi bir sayı 15 adet hücrede toplamda çift sayıda yer alıyorsa -yani 2, 4, 6,... adet- bu sayıyı tüm hücrelerden sileceğiz: Ör; 9 rakamı 15 hücrede toplamda iki kez yer almış ve 9 rakamını yer aldığı tüm hücrelerden sileriz. Mesela 7 rakamı üç kez yer almış, onu silmeyiz.
  • 15 adet hücrede sadece bir kez yer alan sayıları tamamen sileriz. Ör; 3 sayısı sadece A15' te var, onu sileriz. Sildiğimiz "bir kez yer alan" rakamları, hangi satırdaki hücrede silmişsek, o satırın C sütunundaki hücresine listeleriz. Ör; A15' te 3' ü sildik, C15' e 3 yazarız. Bir hücrede birden fazla rakam silinmişse aralarına virgül koyarak yazarız.C sütununda sadece bir kez yer alıp da silinen rakamlara yer vereceğiz, çift sayıda yer alıp silinenler yer almaz.

2.Aşamadaki şartlara sahip olduğu halde silinemeyecek rakamlar:
Diyelim ki A sütunundaki rakamlar dizisi 1' den başlıyor. Makro önce 1' e bakacak, çift adet yer alıyorsa tüm hücrelerden silecek. Yalnız aşağıdaki istisna durumlardan en az biri varsa, bu rakamın silinmesine engel olur:
Sütun B' de A yazan hücreler için
- Böyle bir hücrede bir adet rakam varsa ve o rakam silinmesi gereken rakamsa -yani yukarıdaki örnekte 1 demiştik, 1 varsa- o rakam hiç bir yerden silinmez, pas geçilir.
Sütun B' de B yazan hücreler için
- Böyle bir hücrede iki adet rakam varsa ve o rakamlardan biri silinmesi gereken rakamsa -yani yukarıdaki örnekte 1 demiştik, 1 varsa- o rakam hiç bir yerden silinmez, pas geçilir.

Görüldüğü üzere zor bir şey değil, eğer yardımcı olabilirseniz çok sevinirim. Herkese iyi akşamlar, mutlu haftasonları diliyorum..
 
Satir 5'te hata var. 17 iki kere olmasina ragmen sayfa2'ye almissiniz.
Birinci asamayi tamamladim
Yarim ikinci asamayi da yaparim.
Simdilik sonuclari Aydinbas sayfasina aktariyorum.
 
Eger dogru anladimsa,
B-Sütununda A varsa, rakkamlarin(sayilarin) cift sayida (2,4,6,8,...) olup olmamasi bir rol oynamiyor, silinmiyor.
B-Sütununda B varsa, rakkamlarin(sayilarin) tek sayida (3,5,7,9,...) olup olmamasi bir rol oynamiyor, silinmiyor.
Yani ikinci satirda 12 dört, 9 iki, 14 iki kere var ama B-Sütununda A var, bu nedenle hepsi kaliyor.
 
Görüldüğü üzere zor bir şey değil
Selamlar,
Makro üstatlarımız sınavda galiba. Zor bir şey değil.

Neyse ki, ben, makro bilmediğimden bu durumu dikkate almıyorum.
Her ne kadar soru sahibi, makro çözüm istiyorsa da ve de Excel2016 kullanıyorsa da,
Soru ilginç geldiğinden, yorumladığım şekilde, Excel365 formülleri ile çözümledim. Bana zor ve meşakkatli geldi.

Çözümüm resimdeki gibidir. (Yanlış yorumlamış da olabilirim)
R321.png

Excel365 kullananlar ve soruya ilgi duyanlar açısından dosyayı ekliyorum.
 
Konu Sahibi
Satir 5'te hata var. 17 iki kere olmasina ragmen sayfa2'ye almissiniz.
Birinci asamayi tamamladim
Yarim ikinci asamayi da yaparim.
Simdilik sonuclari Aydinbas sayfasina aktariyorum.
Evet haklısınızı, orada hata var. Manuel olarak seri bir şekilde tabloları oluşturduğum için gözümden kaçmış. Çok teşekkür ederim..
 
Konu Sahibi
Eger dogru anladimsa,
B-Sütununda A varsa, rakkamlarin(sayilarin) cift sayida (2,4,6,8,...) olup olmamasi bir rol oynamiyor, silinmiyor.
B-Sütununda B varsa, rakkamlarin(sayilarin) tek sayida (3,5,7,9,...) olup olmamasi bir rol oynamiyor, silinmiyor.
Yani ikinci satirda 12 dört, 9 iki, 14 iki kere var ama B-Sütununda A var, bu nedenle hepsi kaliyor.
İsterseniz konuyu tekrardan basit bir örnekle açıklayım: Diyelim ki 1 rakamını ele aldık. Tabloda toplam dört kere yer almış ve silinmesi gerekiyor. Ama önce şuna bakmalıyız:
  • Sütun B' de A yazan ve sadece bir adet rakam bulunan hücrelerden en az birinde 1 rakamı var mı, yok mu ? Eğer varsa 1 rakamını silmeyip, pas geçiyoruz.
  • Sütun B' de A için baktık. Diyelim ki 1 yoktu. Şimdi de sütun B' de B yazan ve sadece iki adet rakamı olan hücrelere bakarız. İki elemanından biri, 1 rakamı olan var mı, yok mu ? Eğer burada da 1 yoksa, 1 rakamını komple sileriz. Ama burada 1 varsa o zaman silmekten vazgeçiyoruz.
 
Konu Sahibi
Selamlar,
Makro üstatlarımız sınavda galiba. Zor bir şey değil.

Neyse ki, ben, makro bilmediğimden bu durumu dikkate almıyorum.
Her ne kadar soru sahibi, makro çözüm istiyorsa da ve de Excel2016 kullanıyorsa da,
Soru ilginç geldiğinden, yorumladığım şekilde, Excel365 formülleri ile çözümledim. Bana zor ve meşakkatli geldi.

Çözümüm resimdeki gibidir. (Yanlış yorumlamış da olabilirim)
Ekli dosyayı görüntüle 18715

Excel365 kullananlar ve soruya ilgi duyanlar açısından dosyayı ekliyorum.
Resmi inceledim, herhangi bir sorun gözükmüyor. Makro zorunluluğu yok, sadece formülle olabileceğini hiç düşünmemiştim. Çok teşekkür ederim, emeğinize sağlık. Ama dediğiniz gibi Excel 2016 kullanmaktayım.
 
Konu Sahibi
Doğru şekilde yorumladığıma sevindim. Çok Teşekkürler...

Excel2016 için makrolu çözüm en uygunu.
Çünkü, Excel365 işlevlerini Excel2016 ya çevirmek çok da kolay bir iş değil...
Evet haklısınız, makroyu tercih etmek en doğru seçenek olacak. Zaman ve emek harcadığınız, ilgilendiğiniz için tekrardan teşekkür ederim..
 
aklıma takılan 1 şey var diyelim ki aşağıdaki gibi bir sonuç var
1​
12,7A
2​
11,5A
3​
11,12B

1. satırda 12,7
2. satırda 11,5
3. satırda 11,12

sayılar hem A da hem de B de olabiliyor mu?
yani 12 sayısı hem A hem de B de olabilir mi?
 
2. olarak tek olan tüm sayılar silinip C sütununa taşınacak demiştiniz bu durumdaki sayılar da
Sütun B' de A yazan hücreler için
- Böyle bir hücrede bir adet rakam varsa ve o rakam silinmesi gereken rakamsa -yani yukarıdaki örnekte 1 demiştik, 1 varsa- o rakam hiç bir yerden silinmez, pas geçilir.
Sütun B' de B yazan hücreler için
- Böyle bir hücrede iki adet rakam varsa ve o rakamlardan biri silinmesi gereken rakamsa -yani yukarıdaki örnekte 1 demiştik, 1 varsa- o rakam hiç bir yerden silinmez, pas geçilir.
yukardaki kurala göre mi silinecek yada silinmeyecek
 
Konu Sahibi
2. olarak tek olan tüm sayılar silinip C sütununa taşınacak demiştiniz bu durumdaki sayılar da

yukardaki kurala göre mi silinecek yada silinmeyecek
Evet tek olan sayıları silerken de yukarıdaki kural dikkate alınır. Onu da unutmuşum eklemeyi, özür dilerim. Dikkatiniz için çok teşekkür ederim.
 
aşağıdaki kodu dener misiniz?
geçici olarak deneme_hy sayfasına ekleniyor
HTML:
Kod:
İçeriği görebilmek için Giriş yap ya da Üye ol.
 
Konu Sahibi
aşağıdaki kodu dener misiniz?
geçici olarak deneme_hy sayfasına ekleniyor
HTML:
Kod:
İçeriği görebilmek için Giriş yap ya da Üye ol.
Kontrol ettim, herhangi bir sorun görünmüyor. Deneme_hy sekmesinde A-C arasındaki sonuç tam olarak doğru. Bir de belirtmek istediğim bir şey daha var, satır sayısı 15' ten fazla olabilir, yani standart değil. Dilerseniz son rötüşları da yaptıktan sonra son bir kontrolü de yapıp konuyu neticelendirebiliriz. Çok çok teşekkür ederim..
 
SATIR sayısı 15' ten fazla olabilir, yani standart değil.
satır sayısı önemli değil, SonStr = Syf.Cells(Syf.Rows.Count, "A").End(xlUp).Row kodu ile son satırı bulup işlemi ona göre yapıyor.
ama sonuç bana hatalı gibi geliyor, 14 ve 15. satırlar B olmasına rağmen tek sonuç döndermiş B olduğunda en az 2 sayı olması gerekmiyor muydu?
 
Konu Sahibi
satır sayısı önemli değil, SonStr = Syf.Cells(Syf.Rows.Count, "A").End(xlUp).Row kodu ile son satırı bulup işlemi ona göre yapıyor.
ama sonuç bana hatalı gibi geliyor, 14 ve 15. satırlar B olmasına rağmen tek sonuç döndermiş B olduğunda en az 2 sayı olması gerekmiyor muydu?
"B demek en az iki elemanlı hücre demek" şeklinde bir durum söz konusu değil, o yüzden herhangi bir hatalı sonuç şu an için görünmemekte. Sadece B olan bir hücrede iki adet eleman bulunuyorsa ve bunlardan en az birinin silinmesi gerekiyorsa, o silinmesi gereken sayı silinmez. Ya da şöyle bir düzeltme de yapabiliriz daha anlaşılabilir olması için: B olan bir hücrede iki eleman varsa ve bu elemanlardan sadece birinin silinmesi gerekiyorsa, o eleman silinmez. Eğer iki elemandan ikisi birden silinmesi gerekiyorsa bu sefer de ikisi de aynı anda silinir. Zaten makro da 15. satırda ikisini de silmiş dikkat ederseniz.
 
B olan bir hücrede iki adet eleman bulunuyorsa ve bunlardan en az birinin silinmesi gerekiyorsa, o silinmesi gereken sayı silinmez.
halily Hocam
Haklıymışsınız. Eleman sayısı imiş. Ya da sizin deyiminizle Rakam adedi.
Bu durumda benim formülle verdiğim çözüm yanlış olmakta. Çünkü, benim yorumumda A ya da B yazılanın karşılığındaki rakamların her birinin tekrar adetlerine bakılıyordu. A için tekrar adedi 1, B için ise tekrar adedi 2 şeklinde yorumlamıştım olayı....
 
Durum
Konu Çözümlendiği İçin Kapatılmıştır.
Geri
Üst