• DİKKAT

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

Makroyla düşeyara

YUSUF44

Destek Ekibi
Destek Ekibi
Katılım
4 Ocak 2006
Mesajlar
12,065
Excel Vers. ve Dili
İş : Ofis 365 - Türkçe
Ev: Ofis 365 - Türkçe
Dosyamda Rapor sayfasında D6 hücresine TC kimlik numarasını giriyorum ve hesaplama sayfasının L17:L21 aralığına, bu TC numarasıyla ilgili sorgu bilgileri (Adı soyadı, köyü, doğum yılı, baba adı ve arazi miktarı) geliyor. Bu sorguyu 2011 MGTAD sayfasında yapıyor. Eğer TC numarası 2011 MGTAD sayfasında yoksa L21'de "Yok" yazıyor.

Ben eğer kişi bulunursa hesaplama sayfasında L17:L20'deki bilgileri elle Rapor sayfasındaki D7:D10 ve L21'i de D12'ye yazıyorum.

İstediğim eğer kişi varsa bu bulduğu bilgileri otomatik olarak rapor sayfasına aktarması.

kısaca
Rapor!D6'daki TC no 2011 MGTAD sayfasının B sütununda varsa (bunu hesaplama!D21 hücresi "yok" değilse diye de ayarlayabiliriz)

Hesaplama!L17 ===> Rapor!D7 hücresine
Hesaplama!L18 ===> Rapor!D8 hücresine
Hesaplama!L19 ===> Rapor!D9 hücresine
Hesaplama!L20 ===> Rapor!D10 hücresine
Hesaplama!L21 ===> Rapor!D12 hücresine

aktarsın, MGTAD sayfasında yoksa (ya da hesaplama!D21 "yok" ise) rapor sayfasındaki ilgili hücreler boş kalsın.

Yapabilirsek çok mutlu olurum. dosyada birçok kimlik bilgisi olduğu için eklemek istemiyorum.

Kolay gelsin.
 
Makronuzun Hesaplama sayfası D21 ve sonrasına yazacak bölümüne aşağıdaki makroyu kopyalayıp deneyin
"=IF(ISERROR(VLOOKUP(rapor!R[-15]C,'TC no 2011 MGTAD'!R2C2:R65000C2,1,0)),""YOK"",rapor!R[-15]C)"

sorunuzun cevabı bu değilse dosyanızdan bir kopya alıp bu kopya üzerindeki kimlik bilgilerini silip bir kaç örnek ile sormanızı tavsiye ederim.
Kolay gelsin
 
Sayın bedri teşekkürler.

Bir makrom yok. Hesaplama sayfasına düşeyara ile verileri getiriyorum. Ondan sonra rapor sayfasındaki kimlik bilgileri ve alan hücrelerini bu düşeyaranın sonucuna bakarak elle dolduruyorum. İstediğim elle yazmak yerine aşağıdaki işlemi bir makronun yapması:

Rapor!D6'daki TC no 2011 MGTAD sayfasının B sütununda varsa (bunu hesaplama!D21 hücresi "yok" değilse diye de ayarlayabiliriz)

Hesaplama!L17 ===> Rapor!D7 hücresine
Hesaplama!L18 ===> Rapor!D8 hücresine
Hesaplama!L19 ===> Rapor!D9 hücresine
Hesaplama!L20 ===> Rapor!D10 hücresine
Hesaplama!L21 ===> Rapor!D12 hücresine

aktarsın, MGTAD sayfasında yoksa (ya da hesaplama!D21 "yok" ise) rapor sayfasındaki ilgili hücreler boş kalsın.

Bu işlemi gün içinde onlarca kez yaptığımdan makroyla halledilmesi işimi çok kolaylaştıracak.
 

Ekli dosyalar

Benim anlayabildiğim Rapor sayfası D7 hücresine aşağıdaki formül istediğinizi yapacak. Aynı şekilde aşağıya doğru çoğaltıp diğer hücrelerede uygulanabilirsiniz.
=EĞER(Hesaplama!$L$21="Yok";"";Hesaplama!L17)
 
Benim anlayabildiğim Rapor sayfası D7 hücresine aşağıdaki formül istediğinizi yapacak. Aynı şekilde aşağıya doğru çoğaltıp diğer hücrelerede uygulanabilirsiniz.
=EĞER(Hesaplama!$L$21="Yok";"";Hesaplama!L17)
Formül doğru ama arkadaşın dosyasında "formu temizle" makrosu çalıştırılınca formüllerde siliniyor....
 
Sayın bedri41, maalesef o benim işimi görmüyor çünkü MGTAD sayfasında yaklaşık 5500 kişi varken ben rapor sayfasında 5500 kişi haricindeki, ülkemizin herhangi bir vatandaşı için de işlem yapabilirim. Yani sizin belirttiğiniz gibi oraya formül yazarsam ve MGTAD'da olmayan ancak kendisi için rapor hazırlamam gereken bir kişi geldiğinde ordaki verileri elle girmek zorunda kalacağım, bu da o formüllerin bozulmasına neden olacak. (Zaten dosyayı incelerseniz, formülasyon açısından fazla bir sıkıntım olmadığını görebilirsiniz, tek sıkıntım makrolamayı bilmemem)

Sayın sscey, ilginize teşekkürler, ancak tam istediğim gibi olmamış. Benim istediğim :

Rapor!D6'ya veri girildiğinde Hesaplama!D21'e bak, eğer D21="Yok" ise işlem yapma, değilse:

Hesaplama!L17'deki veriyi Rapor!D7'ye
Hesaplama!L18'deki veriyi Rapor!D8'e
Hesaplama!L19'daki veriyi Rapor!D9'a
Hesaplama!L20'deki veriyi Rapor!D10'a ve en son da
Hesaplama!L21'deki veriyi Rapor!D12'ye
Yaz

Siz makroya formüller yazmışsınız, biçimlendirmeler yapmışsınız. Biçimlendirme ya da sayfalardaki başka herhangi bir verinin değişmesini istemiyorum.

Eğer makro açısından hesaplamadaki tablonun birleştirilmiş hücreleri sorun olacaksa birleştirmeyi çözebilir, daha uygun bir hale getirebiliriz.
 
Merhaba,

Kod:
Sub Getir()
   If Sheets("Hesaplama").Range("L21").Value = "Yok" Then
        [D7].Value = ""
        [D8].Value = ""
        [D9].Value = ""
        [D10].Value = ""
     Else
        [D7].Value = Sheets("Hesaplama").Range("L17").Value
        [D8].Value = Sheets("Hesaplama").Range("L18").Value
        [D9].Value = Sheets("Hesaplama").Range("L19").Value
        [D10].Value = Sheets("Hesaplama").Range("L20").Value
  End If
End Sub
 
Merhaba,

Kod:
Sub Getir()
   If Sheets("Hesaplama").Range("L21").Value = "Yok" Then
        [D7].Value = ""
        [D8].Value = ""
        [D9].Value = ""
        [D10].Value = ""
     Else
        [D7].Value = Sheets("Hesaplama").Range("L17").Value
        [D8].Value = Sheets("Hesaplama").Range("L18").Value
        [D9].Value = Sheets("Hesaplama").Range("L19").Value
        [D10].Value = Sheets("Hesaplama").Range("L20").Value
  End If
End Sub

Sayın Mahir, teşekkürler. İstediğimin önemli kısmı oldu. Bir de bunu Rapor!D6'ya TC kimlik numarası girdiğimde otomatik nasıl çalıştırırız?

(Ben ilk satırını
Kod:
Private Sub Worksheet_Change (ByVal Target As Range)
olarak değiştirdim ama maalesef, makro 10 dakikadır bir şeyler yapmaya çalışıyor:() Görevi sonlandır yapmak zorunda kalacağım galiba:)
 
Son düzenleme:
Merhaba,

Dosyanız çok karışık geldi bana. D6 hücresine TC. Kimlik Numarası girildiğinde hesaplar sayfası işlem yapıyor. O halde hesaplar sayfasından veri çekmek daha kolay. Ayrıca D6 Kimlik Numarası girildiğinde Hesap L21 hücresi Rapor!F32 veri çekiyor. Rapor!F32 D6 hücresine göre ad tanımla ile işlem yapıyor vb. Karışık geldi anlayacağınız sakin bir şekilde irdelemek lazım.
 
Karışıklığı düzeltmeye çalışayım. Siz sadece veri girildiğinde çalışıp iş bitince duracak kodu yazabilir misiniz?

Formülleri değiştirdim, şu anda hesaplama sayfasındaki ilgili hücreler sadece rapor!D6'ya göre sorgu yapıyor. Adlandırmaları da iptal ettim.
 
Karışıklığı düzeltmeye çalışayım. Siz sadece veri girildiğinde çalışıp iş bitince duracak kodu yazabilir misiniz?

Formülleri değiştirdim, şu anda hesaplama sayfasındaki ilgili hücreler sadece rapor!D6'ya göre sorgu yapıyor. Adlandırmaları da iptal ettim.
Merhaba,
İş yoğunluğu nedeniyle yazamadım, aşağıdaki gibi deneyin. Kontrol etmedim.

Rapor sayfası kod bölümüne
Kod:
Private Sub Worksheet_Change(ByVal Target As Range)
If Intersect(Target, Range("d6")) Is Nothing Then Exit Sub

   If Sheets("Hesaplama").Range("L21").Value = "Yok" Then
        [D7].Value = ""
        [D8].Value = ""
        [D9].Value = ""
        [D10].Value = ""
     Else
        [D7].Value = Sheets("Hesaplama").Range("L17").Value
        [D8].Value = Sheets("Hesaplama").Range("L18").Value
        [D9].Value = Sheets("Hesaplama").Range("L19").Value
        [D10].Value = Sheets("Hesaplama").Range("L20").Value
  End If
End Sub
 
Allah razı olsun Mahir Bey, tam olmuş:)
 
Bir sorum daha olacak mümkünse:

bu kodların sonuna, Rapor D6'nın içeriğini kopyalamasını ve sonra da Rapor D18'i seçmesini (yani o hücreye gidip kalacak, başka bir şey yapmayacak) ekleyebilir miyiz?

Yalnız kopyalamak derken hücrenin kopyalanmasını kastetmiyorum. Hücrede yazan TC kimlik numarasının kopyalanmasını istiyorum. Çünkü hücreyi kopyaladığımda biçimiyle birlikte kopyalıyor. Bana sadece içeriğindeki TC numarası lazım. (Kopyalanan TC numarasını bir internet sayfasında sorgulayacağım)
 
Ben hallettim çok şükür.

D6'da biçimlendirme kullandığımdan içeriği ordan alamadım. Ben de Hesaplama c30'da biçimlendirilmemiş olan halini kopyalattım.

Kodun son hali şöyle oldu:

Kod:
Private Sub Worksheet_Change(ByVal Target As Range)
If Intersect(Target, Range("d6")) Is Nothing Then Exit Sub

   If Sheets("Hesaplama").Range("L21").Value = "Yok" Then
        [D7].Value = ""
        [D8].Value = ""
        [D9].Value = ""
        [D10].Value = ""
        [D12].Value = "0"
     Else
        [D7].Value = Sheets("Hesaplama").Range("L17").Value
        [D8].Value = Sheets("Hesaplama").Range("L18").Value
        [D9].Value = Sheets("Hesaplama").Range("L19").Value
        [D10].Value = Sheets("Hesaplama").Range("L20").Value
        [D12].Value = Sheets("Hesaplama").Range("L21").Value
        Sheets("Hesaplama").Range("c30").Copy
        Range("d18").Select
        End If
End Sub

İlgilenen herkese çok teşekkürler.
 
Sorunuz çözüme ulaşmış, sevindim.
Yeterki çözüm aransın. İyi çalışmalar.
 
Geri
Üst