düşey ara ile ilgili

Katılım
6 Mart 2007
Mesajlar
76
Excel Vers. ve Dili
xp ingilizce
Private Sub Worksheet_Change(ByVal Target As Range)
On Error Resume Next
Application.ScreenUpdating = False
If Intersect(Target, [d5:d100]) Is Nothing Then Exit Sub
For ara = 5 To 300
Range("c" & ara) = WorksheetFunction.VLookup(Range("d" & ara), Sheets("genel bilgiler").Range("a1:c30"), 2, 0)
Range("b" & ara) = WorksheetFunction.VLookup(Range("d" & ara), Sheets("genel bilgiler").Range("a1:c30"), 3, 0)
If Range("d" & ara) = "" Then
Range("d" & ara).Offset(0, -1) = ""
Range("d" & ara).Offset(0, -2) = ""
End If
Next
End Sub

yukarıdaki kodu uyuguladığımızda excel yaklaşık 30 sn de getiriyor
formulu nasıl kısaltabiliriz.

teşekkürler
 

veyselemre

Özel Üye
Katılım
9 Mart 2005
Mesajlar
3,652
Excel Vers. ve Dili
Pro Plus 2021
Bir hatırlatma, bu forumun en güzel özelliklerinden birisi, mesajlara dosya eklenebilmesi.
 
Katılım
15 Haziran 2006
Mesajlar
3,704
Excel Vers. ve Dili
Excel 2003, 2007, 2010 (TR)
Her seferinde yaklaşık 300 satır tekrar tekrar kontrol edilsin istemezseniz , şöyle olabilir.

Kod:
Private Sub Worksheet_Change(ByVal Target As Range)
Set sg = Sheets("Genel Bilgiler")
Set sf = Sheets("Fiyat")
If Intersect(Target, [d5:d300]) Is Nothing Then: Exit Sub
sat = Target.Row
x = Application.WorksheetFunction.Match(Target.Value, sg.Range("A1:A1000"), 0)
sf.Cells(sat, 2) = sg.Cells(x, 3)
sf.Cells(sat, 3) = sg.Cells(x, 2)
Set sg = Nothing
Set sf = Nothing
End Sub
 
Katılım
3 Ağustos 2007
Mesajlar
1
Excel Vers. ve Dili
2003 ingilizce
biri bana örnekle düşey aramayı anlatabilirmi
 

veyselemre

Özel Üye
Katılım
9 Mart 2005
Mesajlar
3,652
Excel Vers. ve Dili
Pro Plus 2021
Kod:
Private Sub Worksheet_Change(ByVal Target As Range)
    If Intersect(Target, [d5:d100]) Is Nothing Or Target.Count > 1 Then Exit Sub
    If Target <> "" Then
        Target.Offset(, -1) = WorksheetFunction.VLookup(Target.Value, Sheets("genel bilgiler").Range("a1:c30"), 2, 0)
        Target.Offset(, -2) = WorksheetFunction.VLookup(Target.Value, Sheets("genel bilgiler").Range("a1:c30"), 3, 0)
    Else
        Target.Offset(, -2).Resize(, 2) = ""
    End If
End Sub
 
Katılım
15 Haziran 2006
Mesajlar
3,704
Excel Vers. ve Dili
Excel 2003, 2007, 2010 (TR)
Sn.iremitucu
Soruyu "Fonksiyonlar" b&#246;l&#252;m&#252;nde yeni bir ba&#351;l&#305;k a&#231;arak sorarsan&#305;z, bir s&#252;r&#252; alternatifle birlikte yard&#305;mc&#305; olacaklar &#231;&#305;kacakt&#305;r. San&#305;r&#305;m buradaki &#246;zel konu alt&#305;nda daha az ilgi g&#246;r&#252;rs&#252;n&#252;z. &#304;yi &#231;al&#305;&#351;malar
 
Katılım
6 Mart 2007
Mesajlar
76
Excel Vers. ve Dili
xp ingilizce
veysel bey sizin yazmış olduğunuz makro
güzel çalışıyor fakat fiyat sutunundaki

d kolonun da bir aralık seçip sildiğimizde
sadece bir satırdaki değerler siliniyor
bunu nasıl çözebiliriz.
teşekkürler
 

veyselemre

Özel Üye
Katılım
9 Mart 2005
Mesajlar
3,652
Excel Vers. ve Dili
Pro Plus 2021
Kod:
Private Sub Worksheet_Change(ByVal Target As Range)
    If Intersect(Target, [d5:d100]) Is Nothing Then Exit Sub
    Set alan = Sheets("genel bilgiler").Range("a1:c30")
    If Target.Count = 1 Then
        If Target <> "" Then
            Target.Offset(, -1) = WorksheetFunction.VLookup(Target.Value, alan, 2, 0)
            Target.Offset(, -2) = WorksheetFunction.VLookup(Target.Value, alan, 3, 0)
        Else
            Target.Offset(, -2).Resize(, 2) = ""
        End If
    Else
        For Each huc In Target
            If huc = "" Then
                huc.Offset(, -2).Resize(, 2) = ""
            Else
                huc.Offset(, -1) = WorksheetFunction.VLookup(huc.Value, alan, 2, 0)
                huc.Offset(, -2) = WorksheetFunction.VLookup(huc.Value, alan, 3, 0)
            End If
        Next
    End If
End Sub
 
Katılım
6 Mart 2007
Mesajlar
76
Excel Vers. ve Dili
xp ingilizce
veysel bey yardımlarınız için çok teşekkür ederim

son göndermiş olduğunuz makro çalıştı fakat şöyle bir problem oluştu

tablonun küçük bir örneğini göndermiştim tablo çok büyük olduğu için

makroyu uyguladığımız zaman calculation çalışıyor ve makro çalışmıyor
yani değerleri getirmiyor calculation manual getirdiğimiz zamnan çalışıyor
bunu nasıl çözebiliriz.

teşekkürler
 

veyselemre

Özel Üye
Katılım
9 Mart 2005
Mesajlar
3,652
Excel Vers. ve Dili
Pro Plus 2021
Yukardaki makro D5:D100 aral&#305;&#287;&#305;nda &#231;al&#305;&#351;&#305;r, a&#351;a&#287;&#305;daki makro d s&#252;tununda &#231;al&#305;&#351;&#305;r.
Kod:
Private Sub Worksheet_Change(ByVal Target As Range)
    If Intersect(Target, [d:d]) Is Nothing Then Exit Sub
    Set alan = Sheets("genel bilgiler").Range("a1:c" & Sheets("genel bilgiler").[a65536].End(3).Row)
    For Each huc In Target
        If huc = "" Then
            huc.Offset(, -2).Resize(, 2) = ""
        Else
            huc.Offset(, -1) = WorksheetFunction.VLookup(huc.Value, alan, 2, 0)
            huc.Offset(, -2) = WorksheetFunction.VLookup(huc.Value, alan, 3, 0)
        End If
    Next
End Sub
 
Katılım
6 Mart 2007
Mesajlar
76
Excel Vers. ve Dili
xp ingilizce
veysel bey problem tablo büyük olduğu için calculation

çalıştığı için makro işlem görmüyor makro çalışmadan önce calculation

iptal edilecek daha sonra tekrar devreye girecek

teşekkürler
 

veyselemre

Özel Üye
Katılım
9 Mart 2005
Mesajlar
3,652
Excel Vers. ve Dili
Pro Plus 2021
ActiveSheet.EnableCalculation = False

&#350;eklinde hesaplamay&#305; iptal edebilirsin.

Kodlar&#305;n sonunda da True vererek de aktif edebilirsiniz.
 
Katılım
6 Mart 2007
Mesajlar
76
Excel Vers. ve Dili
xp ingilizce
Veysel bey yardımlarınız çok teşekkürler sağolun
 
Üst