çoklu sayfadan veri getirmek

othara

Altın Üye
Katılım
1 Ağustos 2005
Mesajlar
487
Excel Vers. ve Dili
2016 PLUS
Altın Üyelik Bitiş Tarihi
08-07-2026
idris bey merhaba tekrar bu çalısmayı yaptım oldu fakat kaydederken cok bekliyor excel donuyor neden acaba ana listede 1500 satırım var neden acaba
 

othara

Altın Üye
Katılım
1 Ağustos 2005
Mesajlar
487
Excel Vers. ve Dili
2016 PLUS
Altın Üyelik Bitiş Tarihi
08-07-2026

Merhum İdris SERDAR

Moderatör
Yönetici
Katılım
21 Ekim 2005
Mesajlar
17,094
Excel Vers. ve Dili
Excel, 365 - İngilizce
.

Dosyanızda çok biçimlendirme ve renklendirmeler var. Bu yavaşlatıyor olabilir.

.
 

othara

Altın Üye
Katılım
1 Ağustos 2005
Mesajlar
487
Excel Vers. ve Dili
2016 PLUS
Altın Üyelik Bitiş Tarihi
08-07-2026
turkuaz gibi görünen kısımlar renkli degil sayın idrsi örnek olsun diye formülü asagi çekikiyorum geliyor kaydet diyince duruyor dosyanın boyutu 4,9 mb
 

othara

Altın Üye
Katılım
1 Ağustos 2005
Mesajlar
487
Excel Vers. ve Dili
2016 PLUS
Altın Üyelik Bitiş Tarihi
08-07-2026
formülü adagi çekince geliyor kaydet diyince kalıyor öylece dosyam ektedir formülü asagi çekip kaydetmek istiyorum yardımınız olabilirmi idrsi bey

Acaba ana sayfanın yanındakilerden kaynkalanıyor olabilirmi
 

Ekli dosyalar

Merhum İdris SERDAR

Moderatör
Yönetici
Katılım
21 Ekim 2005
Mesajlar
17,094
Excel Vers. ve Dili
Excel, 365 - İngilizce
.

Sadece bu sayfa değil. Diğer sayfalarınızda yer alan renklendirme ve biçimlendirmeleri mümkün olduğu kadar azaltarak deneyin.

.
 

othara

Altın Üye
Katılım
1 Ağustos 2005
Mesajlar
487
Excel Vers. ve Dili
2016 PLUS
Altın Üyelik Bitiş Tarihi
08-07-2026
renklendirmeleri sildim hepsini yine bekliyor
1554797106985.png
 

KMLZDMR

Altın Üye
Katılım
9 Nisan 2015
Mesajlar
494
Excel Vers. ve Dili
2003 TÜRKÇE EXCEL
Altın Üyelik Bitiş Tarihi
10-04-2025
Sayın İdris Serdar bey,
9. penceredeki formülü Excel 2003 için aşağıdaki şekilde yapmaya çalıştım. Takıldı. Lütfen Excel 2003 için nasıl formül düzenleyebiliriz.
Kod:
=eğer(ehatalıysa(DÜŞEYARA($A2;DOLAYLI("'"&İNDİS(SATIR($A$1:$A$100);KAÇINCI(1;--(EĞERSAY(DOLAYLI("'"&SATIR($A$1:$A$100)&"'!A2:A200");$A2)>0);0))&"'!A2:e100");SÜTUN(C1);0));"";DÜŞEYARA($A2;DOLAYLI("'"&İNDİS(SATIR($A$1:$A$100);KAÇINCI(1;--(EĞERSAY(DOLAYLI("'"&SATIR($A$1:$A$100)&"'!A2:A200");$A2)>0);0))&"'!A2:e100");SÜTUN(C1);0))
 

othara

Altın Üye
Katılım
1 Ağustos 2005
Mesajlar
487
Excel Vers. ve Dili
2016 PLUS
Altın Üyelik Bitiş Tarihi
08-07-2026
Sayın idris her yolu denedim dosya kaydetmedi..Bunu makro ile getirebilmemiz mümkümü acaba ?
 

Korhan Ayhan

Administrator
Yönetici
Admin
Katılım
15 Mart 2005
Mesajlar
42,190
Excel Vers. ve Dili
Microsoft 365 Tr-En 64 Bit
Ekteki dosyayı deneyiniz.

Makro kullanılmıştır. "ANA LİSTE" isimli sayfanızdaki butona tıklayıp sonucu gözlemleyin.

Ek olarak dosyanın içinde kullanıcı tanımlı fonksiyonda var. Fakat 1.170 satırlık veride çok iyi performans vermediği için kullanmadım. İncelemeniz için silmedim.

Kullanıcı tanımlı fonksiyon aşağıdadır.

Söz dizimi;

=Sayfalarda_Düşeyara(Aranan_Veri, Aranan_Veri_Sütun_No, İlk_Sayfa_No, Son_Sayfa_No, Veri_Aralığı, Sütun_İndis_Sayısı)


Kullanım şekli (ANA LİSTE F+ hücresi için);

=Sayfalarda_Düşeyara($B4;1;1;50;$A$5:$A$1000;SÜTUN(AK$1))


Kod:
Option Explicit

Function Sayfalarda_Düşeyara(Aranan_Veri As Range, _
                             Aranan_Veri_Sütun_No As Integer, _
                             İlk_Sayfa_No As Integer, _
                             Son_Sayfa_No As Integer, _
                             Veri_Aralığı As Range, _
                             Sütun_İndis_Sayısı As Integer)
    
    Dim Dizi As Object, No As Integer, Sayfa As Worksheet
    Dim Veri As Variant, Son As Long, X As Long, Kriter As Variant
    
    Application.Volatile True
    
    Set Dizi = CreateObject("Scripting.Dictionary")
    
    For No = İlk_Sayfa_No To Son_Sayfa_No
        Set Sayfa = Sheets(CStr(No))
        
        If WorksheetFunction.CountIf(Sayfa.Columns(Aranan_Veri_Sütun_No), Aranan_Veri.Value) > 0 Then
            Veri = Sayfa.Range(Veri_Aralığı.Address).Value
            Son = Sayfa.Cells(Rows.Count, Aranan_Veri_Sütun_No).End(3).Row
            For X = 1 To UBound(Veri)
                If X > Son Then Exit For
                Kriter = Veri(X, 1)
                Dizi(Kriter) = Veri(X, Sütun_İndis_Sayısı)
            Next X
        
            If Dizi.Exists(Aranan_Veri.Value) Then
                Sayfalarda_Düşeyara = Dizi.Item(Aranan_Veri.Value)
                Exit Function
            End If
        End If
    Next
End Function
 

Ekli dosyalar

othara

Altın Üye
Katılım
1 Ağustos 2005
Mesajlar
487
Excel Vers. ve Dili
2016 PLUS
Altın Üyelik Bitiş Tarihi
08-07-2026
Ekteki dosyayı deneyiniz.

Makro kullanılmıştır. "ANA LİSTE" isimli sayfanızdaki butona tıklayıp sonucu gözlemleyin.

Ek olarak dosyanın içinde kullanıcı tanımlı fonksiyonda var. Fakat 1.170 satırlık veride çok iyi performans vermediği için kullanmadım. İncelemeniz için silmedim.

Kullanıcı tanımlı fonksiyon aşağıdadır.

Söz dizimi;

=Sayfalarda_Düşeyara(Aranan_Veri, Aranan_Veri_Sütun_No, İlk_Sayfa_No, Son_Sayfa_No, Veri_Aralığı, Sütun_İndis_Sayısı)


Kullanım şekli (ANA LİSTE F+ hücresi için);

=Sayfalarda_Düşeyara($B4;1;1;50;$A$5:$A$1000;SÜTUN(AK$1))


Kod:
Option Explicit

Function Sayfalarda_Düşeyara(Aranan_Veri As Range, _
                             Aranan_Veri_Sütun_No As Integer, _
                             İlk_Sayfa_No As Integer, _
                             Son_Sayfa_No As Integer, _
                             Veri_Aralığı As Range, _
                             Sütun_İndis_Sayısı As Integer)
   
    Dim Dizi As Object, No As Integer, Sayfa As Worksheet
    Dim Veri As Variant, Son As Long, X As Long, Kriter As Variant
   
    Application.Volatile True
   
    Set Dizi = CreateObject("Scripting.Dictionary")
   
    For No = İlk_Sayfa_No To Son_Sayfa_No
        Set Sayfa = Sheets(CStr(No))
       
        If WorksheetFunction.CountIf(Sayfa.Columns(Aranan_Veri_Sütun_No), Aranan_Veri.Value) > 0 Then
            Veri = Sayfa.Range(Veri_Aralığı.Address).Value
            Son = Sayfa.Cells(Rows.Count, Aranan_Veri_Sütun_No).End(3).Row
            For X = 1 To UBound(Veri)
                If X > Son Then Exit For
                Kriter = Veri(X, 1)
                Dizi(Kriter) = Veri(X, Sütun_İndis_Sayısı)
            Next X
       
            If Dizi.Exists(Aranan_Veri.Value) Then
                Sayfalarda_Düşeyara = Dizi.Item(Aranan_Veri.Value)
                Exit Function
            End If
        End If
    Next
End Function
sayın korkhan ayhan merhaba elinize saglık cok güzel olmus ilave etmem gereken bişey varmı ki bu dosyayı indirdim oldugu gibi
 

Korhan Ayhan

Administrator
Yönetici
Admin
Katılım
15 Mart 2005
Mesajlar
42,190
Excel Vers. ve Dili
Microsoft 365 Tr-En 64 Bit
Butona basıp arkanıza yaslanmanız yeterlidir...
 
Üst