sadece dolu hücreleri ilgili tabloya aktar

osm87

Altın Üye
Katılım
25 Eylül 2011
Mesajlar
118
Excel Vers. ve Dili
2003-2007-2010 türkçe
Altın Üyelik Bitiş Tarihi
17-06-2025
Arkadaşlar forum sitelerinde çok aradım ancak tam istediğim şekilde bir işlem bulamadım ekte anlatmaya çalıştım kısaca bir tablodaki verileri aralarında boş satırları almadan ilgili tabloya aktaracak. Formül olarak yapabilirsek memnun olurum çünkü buton koymak istemiyorum. Bu tablo yapmaya çalıştığım projenin bir parçası o yüzden başka tablolardan da buradaki verileri alacak formüller olacak. Yardımcı olursanız çok memnun olurum. Kalın sağlıcakla...:yardim:
 

Ekli dosyalar

Orion1

Uzman
Uzman
Katılım
1 Mart 2005
Mesajlar
22,248
Excel Vers. ve Dili
Win7 Home Basic TR 64 Bit

Ofis-2010-TR 32 Bit
Formül olarak cevap istiyorsanız sorunuzu fonksiyonlar bölümüne yazınız!
 

Ömer BARAN

Uzman
Katılım
8 Mart 2011
Mesajlar
12,997
Excel Vers. ve Dili
Office 2013 ( 32 bit ) TÜRKÇE
Altın Üyelik Bitiş Tarihi
(18.03.2020) - Uzman olduğu için tarih geçersiz oldu.
Merhaba.

Sayın GİZLEN'in de belirttiği gibi, formüllerle çözüm önerisi elde etmek istiyorsanız, konuyu ilgili bölümde açmalısınız.
Ancak soruda formül olmazsa makro ile çözüm olabileceğini de belirttiğiniz için cevap yazıyorum.

Hem formül ve hemde makro çözüm önerisi, A sütunundaki OK ibaresinin varlığına göre çalışmaktadır.

-- Formül önerisi:
Aşağıdaki dizi formülüH1 hücresine uygulayın bu hücreyi sağa ve tüm satırda boş sonuç elde edinceye kadar aşağı doğru kopyalayın.
.
Kod:
=EĞER(EĞERSAY($A$1:$A$106;"OK")<SATIRSAY($A$1:A1);"";İNDİS($A$1:$F$106;KÜÇÜK(EĞER($A$1:$A$106="OK";SATIR($A$1:$A$106));SATIR());SÜTUNSAY($H1:H1)))
[FONT="Arial Narrow"][COLOR="blue"]Dizi formülü hücreye [B][COLOR="Red"]CTRL+SHIFT+ENTER[/COLOR][/B] ile girilmelidir.
İşlemi doğru yapmışsanız formül kendiliğinden [B][COLOR="red"]{[/COLOR][/B]...[B][COLOR="red"]}[/COLOR][/B] gibi farklı parantez içerisine alınır.[/COLOR][/FONT]
-- Makro önerisi:
Kod:
[FONT="Arial Narrow"][B]Sub BOŞLUKSUZ()[/B]
Range("H:M").ClearContents
For satır = 1 To [A65536].End(3).Row
    If [H1] = "" Then sat = 1
    If [H1] <> "" Then sat = [H65536].End(3).Row + 1
    If Cells(satır, 1) = "OK" Then
        For sut = 1 To 6
            Cells(sat, sut + 7) = Cells(satır, sut)
        Next: End If: Next: MsgBox "İŞLEM TAMAM..."
[B]End Sub[/B][/FONT]
 

osm87

Altın Üye
Katılım
25 Eylül 2011
Mesajlar
118
Excel Vers. ve Dili
2003-2007-2010 türkçe
Altın Üyelik Bitiş Tarihi
17-06-2025
Ömer bey ve Evren bey cevaplarınız için teşekkür ederim. Konuyu fonksiyonlar bölümüne açacağımı düşünüyordum ancak formül ile bu kadar kolay çözülebileceğini düşünemedim. Bunun için Ömer beye ayrıca teşekkür ederim. Formül ile çözebilmek için derin bir araştırma sonucu artık formül ile çözülemeyeceğine kanaat getirmiştim ama Ömer bey beni bu dertten kurtardı. Başka arkadaşlarında işine yarayacağını düşünüyorum. Ayrıca makro seçeneği kadayıfın kaymağı gibi olmuş. Ellerinize sağlık, kalın sağlıcakla...
 

Ömer BARAN

Uzman
Katılım
8 Mart 2011
Mesajlar
12,997
Excel Vers. ve Dili
Office 2013 ( 32 bit ) TÜRKÇE
Altın Üyelik Bitiş Tarihi
(18.03.2020) - Uzman olduğu için tarih geçersiz oldu.
İyi çalışmalar dilerim.

Formülde yer alan İNDİS işlevi parantezindeki KÜÇÜK işleviyle ilgili kısmı,
başına = işareti ekleyerek 1'inci satırda başka bir hücreye uygulayıp,
bu hücreyi aşağı doğru kopyalarsanız formül daha net anlaşılacaktır diye düşünüyorum.

Formülün bu kısmı; A sütununda OK yazan satırların satır numalarını küçükten büyüğe doğru elde etmenizi sağlıyor.
.
 

osm87

Altın Üye
Katılım
25 Eylül 2011
Mesajlar
118
Excel Vers. ve Dili
2003-2007-2010 türkçe
Altın Üyelik Bitiş Tarihi
17-06-2025
Ömer bey bir sorunum var!.. Formül ile işlem yaptırmaya çalıştığımda mesela verinin bulunduğu tabloda 20 satırda bilgi var veriyi çekecek olan satırda 20 tane veriyi çekiyor sonraki hücrelerde #SAYI! hatası alıyorum. Orijinal dosyamda kopyalamak istediğim veri tablom J3 - O1001 arası, yapıştırmak istediğim tablo Q3 - V1001 arası... Yardımınız sonucunda Formül ve makro üzerinde değişiklik yaparak kendi tabloma uyarlayabilirim dedim ama elimi yüzüme bulaştırdım... Orijinal dosyamı paylaşmak isterdim ama içerisinde gizli veriler ve şifreler var. Tablonun sütun isimlerini değiştirerek formülü ve makroyu güncelleyebilir misiniz?
 

YUSUF44

Destek Ekibi
Destek Ekibi
Katılım
4 Ocak 2006
Mesajlar
12,071
Excel Vers. ve Dili
İş : Ofis 365 - Türkçe
Ev: Ofis 365 - Türkçe
Böyle durumlarla karşılaşmamak için Ömer Bey'in imzasında da belirttiği gibi örnek dosyanızın asıl dosyanızla aynı yapıda olmasına dikkat etmelisiniz. Sizden gizli ya da şifreli bilgileri istemiyoruz. Örnek dosyanız asıl dosyanızla aynı sayfa, satır, sütunlara sahip olsun yeter.
 

Ömer BARAN

Uzman
Katılım
8 Mart 2011
Mesajlar
12,997
Excel Vers. ve Dili
Office 2013 ( 32 bit ) TÜRKÇE
Altın Üyelik Bitiş Tarihi
(18.03.2020) - Uzman olduğu için tarih geçersiz oldu.
Ömer bey bir sorunum var!.. Formül ile işlem yaptırmaya çalıştığımda mesela verinin bulunduğu tabloda 20 satırda bilgi var veriyi çekecek olan satırda 20 tane veriyi çekiyor sonraki hücrelerde #SAYI! hatası alıyorum. Orijinal dosyamda kopyalamak istediğim veri tablom J3 - O1001 arası, yapıştırmak istediğim tablo Q3 - V1001 arası... Yardımınız sonucunda Formül ve makro üzerinde değişiklik yaparak kendi tabloma uyarlayabilirim dedim ama elimi yüzüme bulaştırdım... Orijinal dosyamı paylaşmak isterdim ama içerisinde gizli veriler ve şifreler var. Tablonun sütun isimlerini değiştirerek formülü ve makroyu güncelleyebilir misiniz?
Tekrar merhaba.

YUSUF Bey'in de belirttiği gibi; tam da bu tür durumlar için, cevaplarımın altındaki İMZA bölümünde
gerçek belgeyle aynı yapıda örnek belge üzerinden destek istenmesini istiyoruz.

-- Formül önerisi:
Verileriniz J3 hücresinden itibaren yer alıyor ve sonuçları da Q3 hücresinden itibaren listelemek istiyorsanız;
verdiğim dizi formülünü aşağıdaki şekilde düzenleyerek aynı sonucu alırsınız.

#SAYI! hatası: Formülde tüm veriler alındıktan sonraki satırlarda #SAYI! hatasının alınmasını önleyen, turuncu renklendirdiğim kısımdır.
.
Kod:
=[COLOR="DarkOrange"]EĞER(EĞERSAY($J$3:$J$1001;"OK")<SATIR()-2;"";[/COLOR]İNDİS($J$3:$O$1001;KÜÇÜK(EĞER($J$3:$J$1001="OK";SATIR($J$3:$J$1001));SATIR()-2)-2;SÜTUNSAY($A1:A1)))
[FONT="Arial Narrow"][COLOR="Blue"]Dizi formülü hücreye [COLOR="Red"][B]CTRL+SHIFT+ENTER[/B][/COLOR] ile girilmelidir.[/COLOR][/FONT]

-- Makro önerisi:
Kod:
[FONT="Arial Narrow"][B]Sub BOŞLUKSUZ()[/B]
Range("Q:W").ClearContents
For satır = 3 To [J65536].End(3).Row
    If [Q3] = "" Then sat = 3
    If [Q3] <> "" Then sat = [Q65536].End(3).Row + 1
    If Cells(satır, 10) = "OK" Then
        For sut = 10 To 15
            Cells(sat, sut + 7) = Cells(satır, sut)
        Next: End If: Next: MsgBox "İŞLEM TAMAM..."
[B]End Sub[/B][/FONT]
 

osm87

Altın Üye
Katılım
25 Eylül 2011
Mesajlar
118
Excel Vers. ve Dili
2003-2007-2010 türkçe
Altın Üyelik Bitiş Tarihi
17-06-2025
Ömer bey cevabınız için teşekkür ederim sorunum düzeldi. Bir ricam olacak naçizane. Bu tür tablolarla sürekli karşılaşıyorum boş hücreleri alma dolu hücreleri listele gibi. Vermiş olduğunuz formül çok güzel işliyor ancak başka bir tabloya uygulamaya kalkınca formül içerisinde kayboluyorum. Formülün işleyişini açıklayabilirseniz başka tablolara da uygulayabiliriz. Mutlaka bu tür sorunla karşılaşan arkadaşlar vardır onlar içinde açıklayıcı bir belge oluşmuş olur. İyi çalışmalar
 

Ömer BARAN

Uzman
Katılım
8 Mart 2011
Mesajlar
12,997
Excel Vers. ve Dili
Office 2013 ( 32 bit ) TÜRKÇE
Altın Üyelik Bitiş Tarihi
(18.03.2020) - Uzman olduğu için tarih geçersiz oldu.
Merhaba.

İNDİS işlevinin işleyişi konusunu biliyor olmanız icap eder.

-- veri alınacak tablo alanı
-> $J$3:$O$1001

-- bu tablonun sol üst hücresinden ( J3 ) kaç satır aşağıdaki verinin alınacağı
-> =KÜÇÜK(EĞER($J$3:$J$1001="OK";SATIR($J$3:$J$1001));SATIR()-2)-2
(kırmızı renklendirdiğim SATIR()-2 kısmı ilk formül hücresinden itibaren aşağı giderken
1'den başlayarak artan sayı elde etmek ve 'inci büyük, 2'nci büyük gibi sonuç almak.
Sondaki -2'yi ise ilk formül satırı -1 gibi düşünün)

-- bu tablonun sol üst hücresinden ( J3 ) itibaren kaçıncı sütundaki verinin alınacağı
-> =SÜTUNSAY($A1:A1)

KÜÇÜK ve SÜTUNSAY formül parçalarını, 3'üncü satırda başka hücrelere uygulayın,
- KÜÇÜK formülünü (bu kısım dizi formülü olarak uygulanacak) aşağı doğru,
- SÜTUNSAY formülünü ise sağa doğru
kopyalayın ve sonucu gözlemleyin.
.
 

osm87

Altın Üye
Katılım
25 Eylül 2011
Mesajlar
118
Excel Vers. ve Dili
2003-2007-2010 türkçe
Altın Üyelik Bitiş Tarihi
17-06-2025
teşekkür ederim
 
Katılım
16 Eylül 2014
Mesajlar
10
Excel Vers. ve Dili
excel2011-english
Merhaba.

İNDİS işlevinin işleyişi konusunu biliyor olmanız icap eder.

-- veri alınacak tablo alanı
-> $J$3:$O$1001

-- bu tablonun sol üst hücresinden ( J3 ) kaç satır aşağıdaki verinin alınacağı
-> =KÜÇÜK(EĞER($J$3:$J$1001="OK";SATIR($J$3:$J$1001));SATIR()-2)-2
(kırmızı renklendirdiğim SATIR()-2 kısmı ilk formül hücresinden itibaren aşağı giderken
1'den başlayarak artan sayı elde etmek ve 'inci büyük, 2'nci büyük gibi sonuç almak.
Sondaki -2'yi ise ilk formül satırı -1 gibi düşünün)

-- bu tablonun sol üst hücresinden ( J3 ) itibaren kaçıncı sütundaki verinin alınacağı
-> =SÜTUNSAY($A1:A1)

KÜÇÜK ve SÜTUNSAY formül parçalarını, 3'üncü satırda başka hücrelere uygulayın,
- KÜÇÜK formülünü (bu kısım dizi formülü olarak uygulanacak) aşağı doğru,
- SÜTUNSAY formülünü ise sağa doğru
kopyalayın ve sonucu gözlemleyin.
.

Ömer bey; ben de bugün benzer bir konuda yardım almaya çalıştım ancak maalesef çözemedik. Öncelikle sorunu mümkünse makro ile çözemek istemiyorum zira dosya başka Bilgisyar ve platformlarda dolaştığında sorun olmasın istiyorum. Mümkünse fonksiyon ile çözmek istiyorum. Sorunum şu :

Tanımlamalar sayfamda A3:A32'ye kadar olan satırlardan dolu olanlarını; Tanımlamalar sayfamdan C3:C32 arasından dolu olan satırları alarak başka bir sayfamda örneğin Hesaplamalar sayfasında A23'den itibaren ardışık olarak eklemesini istiyorum. (Hesaplamalar sayfasında A22'ye kadar dolu ve A24'ten itibaren dolu. Şayet Tanımlamalar A3'den 5 satır ve C3'den de 4 satır alıyorsa Hesaplamalar sayfasında A23'e ekleyerek; A24'ü de 9 satır alta kaydırmasını)

Sanırım net ifade edebildim. Bu konuda ki yardımlarınız için şimdiden teşekkürler
 
Üst