Çözüldü iki satır arası veri alma

tukayf

Normal Üye
Excel Versiyonu
Excel 2016
Excel Sürümü
64 Bit
Excel Dili
Türkçe
Değerli hocalarım. ekteki örnekte de anlatmaya çalıştım. Bir sütunda open # ile başlayıp take profit # ile biten veriler var. ben bu tek sütundaki verileri yan sütunlara almak istiyorum nette araştırmama rağmen bununla ilgili bilgi kırıntısı bulamadım ya da ben fark edemedim. Yardımlar için şimdiden teşekkürler.
 

Ekli dosyalar

  • ##.xlsx
    ##.xlsx
    9.8 KB · Görüntüleme: 10
Selamlar,
Formülle çözüm isterseniz, Eki inceleyiniz...
*** B1 : G1 aralığında, yani 1. satırda open#1, open #2..... başlangıç satır numaraları yazdırıldı.
*** 2. satırdan itibaren de listelemeler yapıldı.
*** Formüller 16. satıra kadar kopyalandı
 

Ekli dosyalar

  • ##.xlsx
    ##.xlsx
    14.2 KB · Görüntüleme: 7
Hocam harikasınız veri yüzbinlerce bazen milyonlarca olabiliyor şimdilik bunu kullanacağım ama kod ile yapılabilen bi çözüm olursa çok daha harika olur benim için.
 
Önerim, Makro ile çözüm çok daha uygun olacaktır.... Fakat beni aşar...

Formülü kısaltarak performans arttırmak üzere formüllerde değişikliğe gittim.
Listeleme formüllerinde tekrarlanan ifadeleri, 1. satırdaki formüle ekledim.
Listeleme için kullanılan KAYDIR işlevini de İNDİS işlevi ile değiştirdim. Çünkü KAYDIR işlevi Volatile (Uçucu, Oynak nasıl tercüme edilir bilemedim) işlevdir. Sürekli hesaplama yaptırır.

B2 deki formül şöyle oldu.....
=EĞER(YADA(B$1="";C$1="");"";EĞER(B$1+SATIRSAY($1:1)>C$1;"";İNDİS($A$1:$A$54;B$1+SATIRSAY($1:1)-1;0)))
 

Ekli dosyalar

  • ##.xlsx
    ##.xlsx
    14.8 KB · Görüntüleme: 5
hocam b2 deki formül neydi bilmiyorum şuan sizin formülü bir uyguladım pc de biraz zayıf sanki çırpınıyor bakalım ne zaman bitirecek hesaplamayı. 400 bin satırlık veri var şuan zihninize sağlık çok teşekkürler.
 
İlk dosyada, listelemelerde (Çok satır veri olacağını düşünmedim doğrusu..)
KAYDIR işlevi kullanıldı....
Bir önceki mesajımda da belirttiğim gibi KAYDIR işlevi Volatile dir. Yani bir hücre her düzenlendiğinde ve hatta diğer bazı durumlarda yeniden hesaplanır ve bu da çalışma kitaplarının yavaşlamasına neden olabilir. (Çok satırlı dosyalarda kesinlikle yavaşlama olacaktır)

Siz çok satırdan bahsedince, hemen, İNDİS işlevine çevirdim... İNDİS işlevi volatile olmamakla beraber daha performanslı çalışır.

Sizin durumunuzda ise, ideal çözüm Makrodur.... Sanıyorum "Üstad"lar bu konuda destek verirler...
 
B2 deki formülün mantığı şu.
*** B1 de open #1 in listede kaçıncı sırada olduğu formülle yazdırılır.
Not : Son dokumanda, C1 deki formül B1 den farklıdır. C1 ve daha sonraki kolonların ilk satırlarındakiler ise AYNIdır.
Ayrıca çok satır olması açısından KAÇINCI("zzzzz";A1:A100000) deki 100.000 yerine 1.000.000 yazın. Son satır numarasını bulduğunuz kolondan sonraki kolonlara formül yazmayın. Yazsanız da farketmez ama, B2 deki formülü kopyalayacağınız kolonu bilmek açısından yararlı olur.
Ve tüm formüllerde A1:A54 referans aralığını kendi dosyanızdaki aralık neyse ona göre yazın
.
*** B2 deki formül tüm satırlara kopyalanarak çoğaltıldı. Yani AYNI diyebiliriz.
İşlevi ise, A kolonunda B1 de yazan satır numarasından itibaren C1 de yazan satır numarasına kadar (C1 de yazan HARİÇ) olan verileri İNDİS işlevi ile listelemek.

B1 e open #1, C1 e open #2 ....vs yazmak, formülde B2 deki formüllerde tekrardan onların satır numarasını arattıracak şekilde revize edilmesini gerektirir. Yani Extra birer işlev + zaman olayına sebebiyet verir.,

Önerimi makro olarak tekrar ediyorum...
 
Sorunuzdaki amacı tam anlamamış olabilirim. Yani 1. satır (yardımcı satır) olmasın mı diyorsunuz?
Eğer öyleyse, biraz daha uzun ama işlem süresi de uzun olan formüller yazmak gerekecektir.
 
Hocam konuyu başka bir forumda bir hocamız çözdü sağolsun makro ile ama veri çok olduğu zaman sanırım sütun sayısı yeterli gelmeyecek. Bu da benim excelin bir sınırı olduğunu unutmamdan kaynaklanan bir hata. Sağolun var olun.
 
Sorunuzdaki amacı tam anlamamış olabilirim. Yani 1. satır (yardımcı satır) olmasın mı diyorsunuz?
Eğer öyleyse, biraz daha uzun ama işlem süresi de uzun olan formüller yazmak gerekecektir.
Hocam aslında istediğim sizin yaptığınızdı ancak veri çoğaldıkça sütunlara alma işlemi maalesef yetersiz kalıyor. 16bin sütun yetersiz hale geliyor. o nedenle ctrl+f gibi open #1 yazınca alt alta listlemeyi düşündüm. açıkçası bende şu an ne yapacağımı bilemedim.
 
Merhaba.

Sayın @Tukayf , isteğiniz bir hücreye (B1 diyelim), open #150 yazıp ENTER tuşuna bastığınızda;
A sütununda open #150 ile modify #150 arasını (kaç satırsa artık)
B2'den itibaren listelemek mi?

.
 
Alt taraftan işlem yapılacak sayfanın adına fareyle sağ tıklayıp KOD GÖRÜNTÜLEyi seçin,
açılacak VBA ekranında sağdaki boş alana aşağıdaki kodu yapıştırın.

B1 hücresine aranan verinin sadece sayı kısmını yazıp (yani open #1 yerine badece 1 yazın) ENTER tuşuna basın.
B2'den itibaren listeleme yapılır.

VBA:
You must log in to view content
(11 satır)

Ayrıca; aranan ve listelenecek kriter 1 adet ise (B1'e yazılcaağını varsaydığım sayı)
formülün de bilgisayarı zorlayacak bir formü olduğunu düşünmüyorum doğrusu. Yeterki sonuçta oluşacak liste binlerce satır olmasın.
Formül doğal olarak Sayın @52779 'un verdiği çözüm önerilerine benzeyecektir.
Hele bir de birinci ve sonuncu adlarını kullanarak 2 adet AD TANIMLAMASI yapılırsa
(aslında bunun için kullanılacak formüller aşağıdaki formülün içinde) formül daha şık ve bilgisayar açısından daha az yorucu olacaktır.
birinci >> KAÇINCI(" open #"&$B$1&" *";$A:$A;0)
sonuncu >> EĞERHATA(KAÇINCI(" open #"&$B$1+1&" *";$A:$A;0);KAÇINCI("ZZZ";$A:$A;1))
VBA:
You must log in to view content
(3 satır)

.
.
 
Moderatörün son düzenlenenleri:
1606870758413.webp
1606870758413.webpÖncelikle yanıtınız için çok sağolun hocam, Kodda bir hata mı var acaba kırmızıya boyadı. Geç oldu bende hata yapmış olabilirim.
 
Moderatörün son düzenlenenleri:
Bu kod da alternatif olsun. Döngü yerine alanı kopyala-yapıştır yöntemi.

NOT: Önceki kod cevabımda 1 adet ( simgesi fazla olmuş onu düzelttim, sayfayı yenileyerek önceki cevaptaki koda tekrar bakın.

VBA:
You must log in to view content
(9 satır)

.
 
Hocam zihninize sağlık. Tüm çözümleri denedim en hızlısı formül hiç bir şekilde kasmıyor kodlar biraz kasıyor. Çok sağolun yarın müsait zamanda umarım kahve içmek nasip olur. İyi geceler.
 
Eyvallah.

Kodların bilgisayarı yoracağını hiç sanmıyorum doğrusu.
Ayrıca sayfaı tekrar yenileyerek 2'nci kod cevabımı da tekrar kontrol edin.
Zira o kodda küçük değişiklik yapmıştım. Belki fark etmemişsinizdir.
 
Konuyu başlatan
Normal Üye
Katılım
Konu Bilgi
Durum
Çözüldü 
Forum
Excel Makro Soruları
Başlangıç tarihi
Son yanıt tarihi
Cevaplar
30
Üst