• Foruma hoş geldin 👋 Ziyaretçi

    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 tamamen ücretsizdir.

Çözüldü Formül/Makro Çözüm Talebi

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.

hhmercan

Yeni Üye
Kullanıcı Bilgileri
Aktiflik
Çevrimdışı
Katılım
11 Eyl 2021
Mesajlar
29
Aldığı beğeni
7
Excel V
Office 365 TR
Konuyu Başlatan
Merhabalar,
Excel ile alakalı bir konuda desteğinize ihtiyacım var. Zorluğu kolaylığı konusunda bir fikrim yok ama biraz uğraştıabileceğini düşündüğüm için hakkını vermek istedim. Bu sebeple başlığa ücretli ibaresi ekledim. Çok uzatmadan konuya geçeyim.

4 sekmeli 1 excel dosyam var. Bunların ilk 3 tanesinin içerik yapısı aynı.
4. sü ise bu 3 sayfaya veri çekeceğim yahut değerler üretileceği zaman ihtiyaç duyulan ayar sayfası.
Şöyle resim olarak da ileteyim.

6cajn4q.jpg



=====



4begpr3.jpg



Renklendirmeleri olay karışmaması için yaptım. Normalde renkler yok.

Amacım; ayarlar sayfasında bulunan sayı aralığa göre "BT ID" sütununa rastgele sayı üretmek. Yani örneğin şuan ki değer 1 ile 33 arasında.
BT sütununa ait hücrelerde; 1 ile 33 arasında benzersiz değerler üretmek istiyorum.
Tabi sizlere sormak istediğim bu değil.

Grup ID ve MESAJ ID bölümleri, üretilecek olan değerlere bazı şartlar getiriyor.

Benim yapmak istediğim şey şu;
Sistem random sayı üretmek için sırasıyla satırları gezecek ve belirtilen aralıkta sayılar üretecek, fakat bunu yaparken,
Eğer aynı GRUP ID'sine sahip olan satırlar içersinde, MESAJ ID'si eşit olan hücreler varsa, bunlara tanımlanacak olan sayı aynı olsun.
Bunu da yaparken sadece aynı grupta olan hücrelerde bu durum geçerli olacak. Grup 1'de olan mesaj id'lerini eşit verecek, Grup 2 ye geçtiğinde yine aynı şey söz konusu ise onun ilk grup ile alakası olmayacak. Aynı şey o grup içinde bağımsız olarak yapılacak.

Görselden net örnek verecek olursak;

6cajn4q.jpg


Böyle bir tablomuz var. Amacımız BT ID sütununa ayarlarda belirtilen aralıkta(1-33) rastgele tam sayılar üretmek.

Ancak Grup ID'si 1 olan hücreler içerisinde; 2. ve 8. satırın mesaj id'leri birbirine eşit. Sayı üretirken 2. ve 8. satırların BT ID'leri de eşit olmalı. Diğer gruplarda eğer MESAJ ID'leri aynı olan hücreler varsa, burayla hiç bir bağı yok. Onlarda kendi grubu içerisinde ki eşit olan mesaj id'lere göre BT ID'lerini ayarlayacak. Bu gruptakilerle eşit olmayacak.

Oluşturulan BT ID'lere karşılık gelen İsim/Soyisimler; "Ayarlar" sekmesinde belirtilmiş durumda. İsim/Soyisim sütünunu da buna göre otomatik dolduracak.

Devam ediyoruz;

Grup ID'si 2 olan satırlar içerisinde de MESAJ ID'leri eşit olan hücreler var. 11 ile 16. satırlar ve 13 ile 15. satırların MESAJ ID'leri eşit.
O zaman 11 ve 18. satırda ki BT ID hücrelerine üretilen sayılar eşit olmak durumunda. Aynı şekilde 13 ve 15. satırdaki BT ID hücreleri de eşit olmak durumunda.
Bu gruptaki BT ID leri ile grup 1'de ki veya diğer gruplardaki BT ID'lerin hiç bir bağlantısı bulunmuyor. Her grubun kendi içerisinde bu işlemi yapması gerekiyor.

Oluşturulan BT ID'lere karşılık gelen İsim/Soyisimler; "Ayarlar" sekmesinde belirtilmiş durumda. İsim/Soyisim sütünunu da buna göre otomatik dolduracak.

Bu işlemler yapıldıktan sonra ortaya çıkan sonuç şu şekilde olacak;

3wnlzsb.jpg



2. konu ise; mesaj id sütununda gördüğünüz gibi birde xx, yy, zz gibi harfler var. Bunların eşi yok. Bu harfleri kullanmaktaki amacım; aynı satırda bulunan mesajlar sütununa, bazen standart cevaplar verilebilecek içerikler gelebiliyor. Böyle klasik mesajlar olduğunda onun cevabı da klasik olacağı için otomatik olarak tabloya ekletmek istiyorum. Ben şuan tabloyu uzatmamak için çok fazla yazmadım ama bu tür değişkenlerden çok fazla var.

Yapmak istediğim şey şu;
Sistem, ayarlar sekmesindeki "ön tanımlı değerler" bölümünde belirtilen değişkenlerin hepsini tek tek kontrol edecek.
Bulduğu zaman o satırın altına bir satır daha ekleyecek.
Bu yeni satırın;
- GRUP ID'sini; üst satırdaki ile ile aynı yapacak,
- BT ID'sini; Ayarlarda bulunan aralık kısmına göre rastgele üretecek. Yani şuan ki örnekte, 1 ile 33 arasında.
- Ürettikten sonra İsim/Soyisim bölümünü BT ID'ye karşılık gelen değerle dolduracak,
- Mesaj bölümünü ise yine ayarlarda bulunan "Ön Tanımlı Değerler" bölümünde ona karşılık gelen değer neyse ona göre dolduracak.

Olay bu şekilde tamamlanıyor. Hatamız olduysa kusura bakmayın.
 
Çözüm
iki koldan bu konuya uğraşıyoruz abey.Ben yapamazsam bile üstad halleder :)
Sanıyorum şimdi sadece 3 satır arka arkaya gelmeme olayı kaldı doğru ise.

C#:
Değerli Misafirimiz İçeriği Görebilmek İçin Üyemiz İseniz Giriş Yap'ın Ya da Üye Ol'un.
Aslında kilitlenmemesi gerek.
Gifteki gibi ilgiliyere kırmızı işareti ekletip çalıştırın.
Oraya kadar hızlımı yavaşmı çalışacak.


eee.gif
 
Aslında kilitlenmemesi gerek.
Gifteki gibi ilgiliyere kırmızı işareti ekletip çalıştırın.
Oraya kadar hızlımı yavaşmı çalışacak.


Ekli dosyayı görüntüle 2784
Hızdan kasıt tam olarak ne bilmiyorum ama o satıra kırmızı işareti koyup oynattığımda tıklar tıklama o hücreyi direkt sarı olarak seçiyor.
 
Sarıya hemen geçiyorsa sorun satır ekleme kodlarjna olabilir diye gif eklemiştim denemeniz için.
Donan şekilde eklerseniz bakabiliriz neden?
 
Sarıya hemen geçiyorsa sorun satır ekleme kodlarjna olabilir diye gif eklemiştim denemeniz için.
Donan şekilde eklerseniz bakabiliriz neden?
şöyle bende kayda aldım. donduktan sonra hiç bir şey yapamıyorum.
 

Ekli dosyalar

  • 2021-09-12 00-24-45.gif
    2021-09-12 00-24-45.gif
    823.8 KB · Gösterim: 4
Dosya ekleyin abey bakalım
 
Abey C sütununa 1 den 33 e kadar tekrarsız veri geleceğinden donuyor.
Yani Arşiv satı 55 satırlık.33 adet nasıl tekrarsız olacak bundan dolayı kısır döngüye giriyor,33 yerine 100 yapıp deneyin birde.
 
Kodu böyle kullanırsanız mesaj verir kısır döngüye girmez.

Kod:
Değerli Misafirimiz İçeriği Görebilmek İçin Üyemiz İseniz Giriş Yap'ın Ya da Üye Ol'un.
 
Kodu biraz daha ayarlayıp 2 seçenekli eklerim dosya.
 
Kodu biraz daha ayarlayıp 2 seçenekli eklerim dosya.
Abey C sütununa 1 den 33 e kadar tekrarsız veri geleceğinden donuyor.
Yani Arşiv satı 55 satırlık.33 adet nasıl tekrarsız olacak bundan dolayı kısır döngüye giriyor,33 yerine 100 yapıp deneyin birde.

Şimdi benim asıl dosyam 50.000 satır olacak. Ve ayarlardaki aralık daima bu satır sayısından düşük olacak.
O yüzden 1 kez değer ürettikten sonra diğer satırlarda da yeniden 1 le 33 arasında sayı üretmesi gerekiyor normalde.
Yani 50.000 satır bitene kadar 1 le 33 arasında veya kaç yazdıysak o aralıkta sürekli sayı üretecek.
 
Ekde ki dosyayı deneyin ben formülle yaptım vba tabanlı olarak da yapılabilir..
 

Ekli dosyalar

  • Örnek DB.xlsx
    17.6 KB · Gösterim: 3
Ekde ki dosyayı deneyin ben formülle yaptım vba tabanlı olarak da yapılabilir..
Hocam ilk kısım için ayarlamışsınız sanırım. Çok teşekkür ederim. O kısmı formülle halledebildik ama 2. kısım yani satır ekleme vs. kısmında ufak bir sorunumuz var şuan. İlgi ve desteğiniz için ayrıca teşekkür ederim.
 
Abey 2 kısmıda hallettim sanırım.
Öncekilerinde satır ekleyince benzersiz olmuyordu bazıları onlar düzeltildi.
Dosyanın birinde Ayar sayfası B5 dinamik oldu yani son satır ne ise onu alıyor bu sayede küçük olmuyor ve hata olmuyor.
Diğeri ise normal Ayar B5 de ne varsa ona göre ve son satır nodan küçükse uyarı verip işlemi sonlandırıyor.
 

Ekli dosyalar

  • Örnek DB Test 2 Normal.7z
    30.4 KB · Gösterim: 3
  • Örnek DB Test1 Dinamik random.7z
    30.6 KB · Gösterim: 4
Ekde ki dosyayı deneyin ben formülle yaptım vba tabanlı olarak da yapılabilir..
Merhaba.

Resimdeki her grup için mesela a olanlar 18 çıkmış.2.grup a olanla farklı olmayacakmıydı.
Benimki farklı.Gözüme çarptığı için yazayım dedim abey.
yani mesela 1.grup a lar 18 ise 2.grup a lar 20 gibi olacak sanıyordum.

Doğru ise sizinki kodu ona göre ayarlarım.

Unbenannt.PNG
 
Abey 2 kısmıda hallettim sanırım.
Öncekilerinde satır ekleyince benzersiz olmuyordu bazıları onlar düzeltildi.
Dosyanın birinde Ayar sayfası B5 dinamik oldu yani son satır ne ise onu alıyor bu sayede küçük olmuyor ve hata olmuyor.
Diğeri ise normal Ayar B5 de ne varsa ona göre ve son satır nodan küçükse uyarı verip işlemi sonlandırıyor.

Ben bu konuda biraz yanlış anlatım yaptım sanırım. Aslında benzersiz olmasına gerek yok.
Basit bir örnekle anlatayım;
Diyelim ki giriş sekmesinde 50.000 satırlık bir veri var.
Ayar bölümündeki aralıkta 1-20 yazıyor.
50.000 satırın tamamına 1 ile 20 arasında sayı üreteceğiz.
Yani benzersiz olması şart değil. Ardarda denk gelmesin, arasında birkaç satır olsun yeterli.

Merhaba.

Resimdeki her grup için mesela a olanlar 18 çıkmış.2.grup a olanla farklı olmayacakmıydı.
Benimki farklı.Gözüme çarptığı için yazayım dedim abey.
yani mesela 1.grup a lar 18 ise 2.grup a lar 20 gibi olacak sanıyordum.

Doğru ise sizinki kodu ona göre ayarlarım.

Bu konuda sizin yaptığınız doğru olanı. Herhangi bir değişiklik yapılmasına gerek yok.

Birde ufak bir konuyu atladık;
Şimdi örneğin yy'in karşılığı; kayıt başarılı Hilmi
Buradaki Hilmi kısmı şuan sabit.
Aslında bir önceki satırın isim bölümünde yazan ismi almamız gerekiyordu.

Şöyle resimle göstereyim;

5zpu6jk.jpg


Burada yeni eklenen satırda, "kayıt başarılı hilmi" değil de; kayıt başarılı Mehmet6 şeklinde çıkartmam gerekiyor.
Sanırım bunun için ayar bölümünde tanımlama yaparken isim kısmına bir değer atamamız gerekecek.
 
Ben yy için aratmıştım o kısım kolay değişir.Benzersiz yapacağım diye canım çıkmıştı hele satır ekleme için.Hatta bugün collection içine alıp remove ile azaltmayı düşünüyordum :)En son kullanmak istediğim countif olayını kullanmak zorunda kalmıştım :)
Neyse benzersiz olmayacaksa kodlar kısalır ve daha kolay olur.
Resimdeki yyve mehmet olayları sorun değil zaten kodda find var.Orda ufak değişiklik olacak yy yerine mehmetin olduğu satır aranacak o kadar.Ayar sayfası ve dosyanın son halini yükleyin bugün çözülür konu abey.
 
Son düzenleme:
Ben yy için aratmıştım o kıdım kolay değişir.Benzersiz yapacağım diye canım çıkmıştı hele satır ekleme için.Hatta bugün collectioniçne alıp remove ile azaltmayı düşünüyordum :)
Neyse benzersiz olmayacaksa kodlar kısalır ve daha kolay olur.
Resimdeki yyve mehmet olayları sorun değil zaten kodda find var.Orda ufak değişiklik olacak yy yerine mehmetin olduğu satır aranacak o kadar.
Kardeş bu benim eksik yada hatalı anlatımımdan oldu sanırım. Zaten çokça uğraştırmıştım birde ekstradan boşa uğraş verdim sana kusura bakma. :oops:
Orada her satır rastgele üretilecek.
İsim konusunda da sadece yy için değil de ayarlarda ki Ön Tanımlı Değerler bölümüne yazılan tüm isimler için durum yukarıda ki şekilde olacak.
 
Kardeş bu benim eksik yada hatalı anlatımımdan oldu sanırım. Zaten çokça uğraştırmıştım birde ekstradan boşa uğraş verdim sana kusura bakma. :oops:
Orada her satır rastgele üretilecek.
İsim konusunda da sadece yy için değil de ayarlarda ki Ön Tanımlı Değerler bölümüne yazılan tüm isimler için durum yukarıda ki şekilde olacak.
İlk mesajınızda benzersiz yazmıştınız abey.Uğraşa uğraşa öğreniyoruz exceli.Zaten kod bitti sayılır.Dosya eklerseniz ayar sayfayı felan ayarlayıp ona göre bulup getirelim.
 
İlk mesajınızda benzersiz yazmıştınız abey.Uğraşa uğraşa öğreniyoruz exceli.Zaten kod bitti sayılır.Dosya eklerseniz ayar sayfayı felan ayarlayıp ona göre bulup getirelim.
Doğru diyorsun. Ben orada hata yapmışım. Tekrardan kusura bakma.
Dosyadaki ayar bölümünde ki isimlere bir değişken tanımladık mı olay tamam olur gibi aslında.
Hasan, Hilmi yerine #isim# yazdım ben şimdi. Bunu gördüğü zaman bir üst satırdaki ismi alması sağlanabilirse tamamdır.

Bu arada bu makroyu 3 sayfada da ayrı ayrı çalıştırmam gerekiyor.
 

Ekli dosyalar

  • Örnek DB.xlsx
    16.9 KB · Gösterim: 4
Durum
Konu Çözümlendiği İçin Kapatılmıştır.
Geri
Üst