Excel Forum
ALTIN ÜYELİK Hakkında Bilgi


Geri Git   Excel Forum > EXCEL-Soruları > Makro-VBA
Atatürk
Şifremi Unuttum

DUYURU SİSTEMİ / REKLAM PANOSU

Makro-VBA Makro veya VBA ile ilgili sorularınızı buraya gönderebilirsiniz.
Dosya ekleyebilirsiniz

Özel Arama


Yanıtla
 
Paylaş Konu Araçları Görünüm Modları
Eski 26-09-2017, 09:14   #1
vivident
Altın Üye
 
Giriş: 24/11/2007
Şehir: Bursa
Mesaj: 642
Excel Vers. ve Dili:
Excel 2013 - Türkçe
Varsayılan "For Next" döngü yavaşlığı, alternatif

Merhaba

"=" isimli çalışma sayfamın "B" sütunundaki veriyi ;
"referans" isimli sayfanın "A" sütununda arıyor, veriyi bulunca bir yanındaki hücreden başka bir veriyi "=" isimli çalışma sayfasının "A" sütununa getiriyor

Bir nevi düşey ara formülünü yapıyor. Lakin ben bu ara bul yapıştır işlemlerini for next döngüsü kullanarak yaptırdım. 950 satırlık veriyi 2500 satırlık veri aralığında arayıp sonucu getirmek neredeyse 1 dakikamı alıyor.

Formül kullanarak bu kadar beklemiyordum. Makro ile olsun dedim, ama süre bakımında kullanışlı olmadı. For next kodunu nasıl bir modif yaparız veya alternatif kod ne olmalı. Dosyam ektedir
Eklenmiş Dosyalar
Dosya Türü: xlsm convert.xlsm (93.5 KB, 8 Görüntülenme)
vivident Çevrimdışı   Alıntı Yaparak Cevapla
Eski 26-09-2017, 09:57   #2
emr123
Altın Üye
 
Giriş: 01/11/2012
Şehir: Bursa
Mesaj: 144
Excel Vers. ve Dili:
OFFICE 2013 TÜRKÇE
Varsayılan

Merhaba
aşağıdaki kodu dener misiniz?

Kod: (Rahat kopyalayabilmeniz için tüm kodu seçmenizi sağlar)
Sub ara()
Dim i As Integer, ara
Application.ScreenUpdating = False
Application.Calculation = xlCalculationManual
Sheets("=").Range("A:A").ClearContents
    For i = 1 To Sheets("=").Cells(Rows.Count, "B").End(xlUp).Row
        ara = Sheets("=").Cells(i, 2).Value
        Set ara = Sheets("referans").Range("A:A").Find(ara, , xlValues, xlWhole)
            If Not ara Is Nothing Then
                Sheets("=").Cells(i, 1).Value = Sheets("referans").Range("B" & ara.Row).Value
            End If
    Next
Application.ScreenUpdating = True
MsgBox "islem tamam"
End Sub
emr123 Çevrimdışı   Alıntı Yaparak Cevapla
Eski 26-09-2017, 10:39   #3
vivident
Altın Üye
 
Giriş: 24/11/2007
Şehir: Bursa
Mesaj: 642
Excel Vers. ve Dili:
Excel 2013 - Türkçe
Varsayılan

sayın emr123
yazdığınız kod, benim yaptığımda koddan çok daha hızlı çalışıyor, yalnız bir eklenti daha olması lazım

eğer Sheets("referans").Range("B" & ara.Row).Value boşa eşitse o zaman Sheets("referans").Range("C" & ara.Row).Value hücresindeki veriyi alsın
vivident Çevrimdışı   Alıntı Yaparak Cevapla
Eski 26-09-2017, 10:49   #4
Ömer BARAN
Uzman
 
Giriş: 08/03/2011
Şehir: ANKARA / İSTANBUL
Mesaj: 9,086
Excel Vers. ve Dili:
Office 2013 TÜRKÇE
Varsayılan

Merhaba.

Alternatif olsun.
Not: Kod oluştururken örneğin 944 sayısı sabit değilse, döngünün son satırını
a.Cells(Rows.Count, 2).End(3).Row şeklinde yazmanızı öneriyorum.
.
Kod: (Rahat kopyalayabilmeniz için tüm kodu seçmenizi sağlar)
Sub Referanstara_BRN()
Dim i As Integer
Set a = Sheets("="): Set r = Sheets("referans")
a.Range("A:A").ClearContents
Application.ScreenUpdating = False: Application.Calculation = xlCalculationManual
a.Range("C1:C" & a.Cells(Rows.Count, 2).End(3).Row).Copy a.[A1]
For i = 1 To a.Cells(Rows.Count, 2).End(3).Row
    If WorksheetFunction.CountIf(r.Range("A:A"), a.Cells(i, 2)) = 1 Then
        brn = WorksheetFunction.Match(a.Cells(i, 2), r.Range("A:A"), 0)
        a.Cells(i, 1) = r.Cells(brn, 2) & r.Cells(brn, 3)
        GoTo 10: End If
10: Next i
Application.ScreenUpdating = True: Application.Calculation = xlCalculationAutomatic
MsgBox "İşlem Tamamlandı.", vbInformation, "..::.. Ömer BARAN ..::.."
End Sub
__________________
.
☾✭ İnadına TÜRKÇE ✭☽

-- Sorunuzu, gerçek belgenizle aynı yapıda ve olması gereken sonuçların elle yazıldığı örnek belge ile destekleyiniz.
-- ALTIN ÜYELİK öneriyorum. / FORUM KURALLARInı mutlaka okuyunuz.
-- ALTIN ÜYE olmayanlar, örnek belgeyi dosya.tc, dosya.co gibi bir siteye yükleyip, belgeye erişim adresini verebilir.
-- Özel mesaj ile soru sormayınız. / Geri bildirimde bulunulmayan cevaplarımı siliyorum.
Ömer BARAN Çevrimdışı   Alıntı Yaparak Cevapla
Eski 26-09-2017, 10:50   #5
vivident
Altın Üye
 
Giriş: 24/11/2007
Şehir: Bursa
Mesaj: 642
Excel Vers. ve Dili:
Excel 2013 - Türkçe
Varsayılan

Bu şekilde değiştirdim, uygundur değil mi ?

Kod: (Rahat kopyalayabilmeniz için tüm kodu seçmenizi sağlar)
 If Not ara Is Nothing Then
                If Sheets("referans").Range("B" & ara.Row).Value = "" Then
                Sheets("=").Cells(i, 1).Value = Sheets("referans").Range("C" & ara.Row).Value
                Else
                Sheets("=").Cells(i, 1).Value = Sheets("referans").Range("B" & ara.Row).Value
                End If
            End If
vivident Çevrimdışı   Alıntı Yaparak Cevapla
Eski 26-09-2017, 11:27   #6
Ömer BARAN
Uzman
 
Giriş: 08/03/2011
Şehir: ANKARA / İSTANBUL
Mesaj: 9,086
Excel Vers. ve Dili:
Office 2013 TÜRKÇE
Varsayılan

Gönderdiğim cevap konusunda hiçbir şey söylemediniz!...
__________________
.
☾✭ İnadına TÜRKÇE ✭☽

-- Sorunuzu, gerçek belgenizle aynı yapıda ve olması gereken sonuçların elle yazıldığı örnek belge ile destekleyiniz.
-- ALTIN ÜYELİK öneriyorum. / FORUM KURALLARInı mutlaka okuyunuz.
-- ALTIN ÜYE olmayanlar, örnek belgeyi dosya.tc, dosya.co gibi bir siteye yükleyip, belgeye erişim adresini verebilir.
-- Özel mesaj ile soru sormayınız. / Geri bildirimde bulunulmayan cevaplarımı siliyorum.
Ömer BARAN Çevrimdışı   Alıntı Yaparak Cevapla
Eski 26-09-2017, 12:29   #7
vivident
Altın Üye
 
Giriş: 24/11/2007
Şehir: Bursa
Mesaj: 642
Excel Vers. ve Dili:
Excel 2013 - Türkçe
Varsayılan

Ömer bey bende konuya cevap yazıyordum arada kaldığı için gözümden kaçmış, kusura bakmayın. Sizin verdiğiniz alternatif kod ; sayın emr123'ün verdiği koda göre daha da hızlı çalışıyor

Çok teşekkür ediyorum, çok yardımcı oldunuz
vivident Çevrimdışı   Alıntı Yaparak Cevapla
Yanıtla


Konu Araçları
Görünüm Modları

Gönderme Kuralları
You may not post new threads
You may not post replies
You may not post attachments
You may not edit your posts

BB code is Açık
SimgelerAçık
[IMG] kodu Açık
HTML kodu Kapalı


Saat 17:53


Bu forum Elit NET - www.elitnet.com.tr tarafından sunulmaktadır.

Excel Eğitimi - Mobil Uygulama - Çorlu - Çorlu Web Tasarım - Tarot Falı - invest in turkey - Lingerie - Dyeing Machine - Karton Bardak- Çorlu Özel Eğitim- Site Yönetimi- Led Aydınlatma- Pronet Tekirdağ- Çorlu Kamera- Pronet Edirne- Pronet Kırklareli- Pronet Çerkezköy- Pronet Çorlu- Pronet Lüleburgaz- Pronet Keşan- Çorlu Araç Takip- Çorlu Su Arıtma- Boru Profil- Gebze Emlak- Beylikdüzü Temizlik- İstanbul Burun Estetiği- Bakır Sülfat- Rampa- Rotary- Çorlu İnternet Sitesi- youngblood- Çorlu Palet- Çerkezköy Palet-
Powered by vBulletin Version 3.7.2
Copyright ©2000 - 2017, Jelsoft Enterprises Ltd.
Advertisement System V2.6 By   Branden