• DİKKAT

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

sadece dolu hücreleri ilgili tabloya aktar

  • Konbuyu başlatan Konbuyu başlatan osm87
  • Başlangıç tarihi Başlangıç tarihi
Katılım
25 Eylül 2011
Mesajlar
119
Excel Vers. ve Dili
2003-2007-2010 türkçe
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

Formül olarak cevap istiyorsanız sorunuzu fonksiyonlar bölümüne yazınız!
 
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]
 
Ö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...
 
İ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.
.
 
Ö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?
 
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 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]
 
Ö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
 
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.
.
 
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
 
Geri
Üst