vba Hlookup fonksiyonu

hüseyintok

Altın Üye
Katılım
11 Mart 2020
Mesajlar
87
Altın Üyelik Bitiş Tarihi
11-03-2025
Merhaba ekte paylaştığım C3 hücresindeki değere göre, G3:Z Son dolu satır arasında ki değeri hlookup yada başka bir yöntemle vba olarak c4 den itibaren dolu satır karşılığı getirtmek istiyorum. formülle çok kasıyor yaklaşım 15.000 satırda formül yapmak zorunda kalıyorum. VBA olarak nasıl bir kod yazabilirim?
 

Ekli dosyalar

Tevfik_Kursun

Altın Üye
Katılım
30 Temmuz 2012
Mesajlar
3,794
Excel Vers. ve Dili
Office 2016 Pro - Türkçe 64 Bit
Altın Üyelik Bitiş Tarihi
12-02-2029
Günaydın Sayın HüseyinTok,
Deneyiniz arkadaşım.
İyi çalışmalar
 

Ekli dosyalar

hüseyintok

Altın Üye
Katılım
11 Mart 2020
Mesajlar
87
Altın Üyelik Bitiş Tarihi
11-03-2025
Teşekkürler Tevfik bey, fakat alınan değerlerde "0" olursa veya boş hücre olursa fonksiyon çalışmıyor. Bu hatayı nasıl giderebiliriz?
 

YUSUF44

Destek Ekibi
Destek Ekibi
Katılım
4 Ocak 2006
Mesajlar
12,073
Excel Vers. ve Dili
İş : Ofis 365 - Türkçe
Ev: Ofis 365 - Türkçe
Cevabı silme nedenim: Sayın @Tevfik_Kursun 'un cevabını görmemiştim. Kusura bakmayın.
 
Son düzenleme:

Tevfik_Kursun

Altın Üye
Katılım
30 Temmuz 2012
Mesajlar
3,794
Excel Vers. ve Dili
Office 2016 Pro - Türkçe 64 Bit
Altın Üyelik Bitiş Tarihi
12-02-2029
Tamam Yusuf Hocam,
Hızlısınız, kabul ettik
Herkese iyi çalışmalar
 

Tevfik_Kursun

Altın Üye
Katılım
30 Temmuz 2012
Mesajlar
3,794
Excel Vers. ve Dili
Office 2016 Pro - Türkçe 64 Bit
Altın Üyelik Bitiş Tarihi
12-02-2029
Sayın Hüseyin Tok,
Deneyiniz arkadaşım.
İyi çalışmalar
Not: Şöyle bir sorun var, 3. satırda tekrarlayan tarih olursa ilk sütunu getirir.
 

Ekli dosyalar

Son düzenleme:

Tevfik_Kursun

Altın Üye
Katılım
30 Temmuz 2012
Mesajlar
3,794
Excel Vers. ve Dili
Office 2016 Pro - Türkçe 64 Bit
Altın Üyelik Bitiş Tarihi
12-02-2029
Sayın Hüseyin Tok,
Bu da alternatif çözüm
Deneyiniz arkadaşım.
İyi çalışmalar
Not: Şöyle bir sorun var, 3. satırda tekrarlayan tarih olursa ilk sütunu getirir.
 

Ekli dosyalar

hüseyintok

Altın Üye
Katılım
11 Mart 2020
Mesajlar
87
Altın Üyelik Bitiş Tarihi
11-03-2025
Teyfik bey günaydın. ekteki senaryoda yine çalışmadı. mantık hatası var sanırım. ilk aylarda boşluk varsa hesaplama yapmıyor. TK3 de çalıştıramadım
 

Ekli dosyalar

Tevfik_Kursun

Altın Üye
Katılım
30 Temmuz 2012
Mesajlar
3,794
Excel Vers. ve Dili
Office 2016 Pro - Türkçe 64 Bit
Altın Üyelik Bitiş Tarihi
12-02-2029
Günaydın Arkadaşım,
Son satır değerini G sütunundan alıyor. Son değerini el ile verin. Bu işlemi yaptığınızda her zaman çalışır.
Kod:
    On Error Resume Next
'    Son = Cells(Rows.Count, "G").End(3).Row
    Son = 1000
kod içindeki gibi.
İyi çalışmalar
 

hüseyintok

Altın Üye
Katılım
11 Mart 2020
Mesajlar
87
Altın Üyelik Bitiş Tarihi
11-03-2025
Teşekkürler Teyfik bey yaklaşık 15.000 satır var ve manuel verdiğimde çok kasıyor ve kitleniyor. TK3 ü çalıştıramadım orada ki mantık kurtarır mı?
 

Tevfik_Kursun

Altın Üye
Katılım
30 Temmuz 2012
Mesajlar
3,794
Excel Vers. ve Dili
Office 2016 Pro - Türkçe 64 Bit
Altın Üyelik Bitiş Tarihi
12-02-2029
Kesinlikle, her ikisi de çözümler. Sıkıntı olursa bakarım
 

hüseyintok

Altın Üye
Katılım
11 Mart 2020
Mesajlar
87
Altın Üyelik Bitiş Tarihi
11-03-2025
Teşekkürler ilginiz için. TK3 daha uygun oldu ama. veri olmayan aylarda ay bilgisini getiriyor. Ekte paylaşıyorum o sıkıntıyı çözerseniz sorun kalmayacak
 

Ekli dosyalar

Tevfik_Kursun

Altın Üye
Katılım
30 Temmuz 2012
Mesajlar
3,794
Excel Vers. ve Dili
Office 2016 Pro - Türkçe 64 Bit
Altın Üyelik Bitiş Tarihi
12-02-2029
Merhaba,
Buyrun
İyi çalışmalar
 

Ekli dosyalar

Korhan Ayhan

Administrator
Yönetici
Admin
Katılım
15 Mart 2005
Mesajlar
42,269
Excel Vers. ve Dili
Microsoft 365 Tr-En 64 Bit
Alternatif;

Önerdiğim kod belirlenen sütundaki aşağıdaki verileri listeler. İsteğe göre düzenlenebilir. Gerçek anlamda BOŞ olan hücreleri pas geçer.

Sabit (Sayı+Metin)
Formül (Sayı+Metin)

C++:
Option Explicit

Private Sub Worksheet_Change(ByVal Target As Range)
    Dim Sutun As Integer, Alan As Range
    Dim Alan_1 As Range, Alan_2 As Range
    
    If Intersect(Target, Range("C3")) Is Nothing Then Exit Sub
    If Target.Cells.Count > 1 Then Exit Sub
    
    Application.ScreenUpdating = False
    
    Sutun = WorksheetFunction.Match(Target, Range("G3:Z3"), 0)
    Range("C4:C" & Rows.Count).ClearContents
    
    On Error Resume Next
    Set Alan_1 = Nothing
    Set Alan_2 = Nothing
    Set Alan_1 = Cells(4, Sutun + 6).Resize(Rows.Count - 3).SpecialCells(xlCellTypeConstants, 3)
    Set Alan_2 = Cells(4, Sutun + 6).Resize(Rows.Count - 3).SpecialCells(xlCellTypeFormulas, 3)
    If Not Alan_1 Is Nothing And Not Alan_2 Is Nothing Then
        Set Alan = Union(Alan_1, Alan_2)
    ElseIf Not Alan_1 Is Nothing Then
        Set Alan = Alan_1
    ElseIf Not Alan_2 Is Nothing Then
        Set Alan = Alan_2
    Else
        Set Alan = Nothing
    End If
    On Error GoTo 0

    If Not Alan Is Nothing Then
        Alan.Copy
        Range("C4").PasteSpecial xlPasteValues
        Target.Select
        Application.CutCopyMode = False
    End If

    Application.ScreenUpdating = True
End Sub
 

Tevfik_Kursun

Altın Üye
Katılım
30 Temmuz 2012
Mesajlar
3,794
Excel Vers. ve Dili
Office 2016 Pro - Türkçe 64 Bit
Altın Üyelik Bitiş Tarihi
12-02-2029
Teşekkürler Korhan Hocam,
Farklı bir yöntem görmek te güzel.
 

hüseyintok

Altın Üye
Katılım
11 Mart 2020
Mesajlar
87
Altın Üyelik Bitiş Tarihi
11-03-2025
Alternatif;

Önerdiğim kod belirlenen sütundaki aşağıdaki verileri listeler. İsteğe göre düzenlenebilir. Gerçek anlamda BOŞ olan hücreleri pas geçer.

Sabit (Sayı+Metin)
Formül (Sayı+Metin)

C++:
Option Explicit

Private Sub Worksheet_Change(ByVal Target As Range)
    Dim Sutun As Integer, Alan As Range
    Dim Alan_1 As Range, Alan_2 As Range
   
    If Intersect(Target, Range("C3")) Is Nothing Then Exit Sub
    If Target.Cells.Count > 1 Then Exit Sub
   
    Application.ScreenUpdating = False
   
    Sutun = WorksheetFunction.Match(Target, Range("G3:Z3"), 0)
    Range("C4:C" & Rows.Count).ClearContents
   
    On Error Resume Next
    Set Alan_1 = Nothing
    Set Alan_2 = Nothing
    Set Alan_1 = Cells(4, Sutun + 6).Resize(Rows.Count - 3).SpecialCells(xlCellTypeConstants, 3)
    Set Alan_2 = Cells(4, Sutun + 6).Resize(Rows.Count - 3).SpecialCells(xlCellTypeFormulas, 3)
    If Not Alan_1 Is Nothing And Not Alan_2 Is Nothing Then
        Set Alan = Union(Alan_1, Alan_2)
    ElseIf Not Alan_1 Is Nothing Then
        Set Alan = Alan_1
    ElseIf Not Alan_2 Is Nothing Then
        Set Alan = Alan_2
    Else
        Set Alan = Nothing
    End If
    On Error GoTo 0

    If Not Alan Is Nothing Then
        Alan.Copy
        Range("C4").PasteSpecial xlPasteValues
        Target.Select
        Application.CutCopyMode = False
    End If

    Application.ScreenUpdating = True
End Sub
Korhan bey sizin çalışmanızda boş satırlar "0" değeri verecek şekilde nasıl düzenleyebiliriz? Sadece dolu olanları getiriyor ve satır kayması yaşıanıyor.
 
Üst