• DİKKAT

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

WorksheetFunction sınıfının Match özelliği alınamıyor Hatası

  • Konbuyu başlatan Konbuyu başlatan walabi
  • Başlangıç tarihi Başlangıç tarihi

walabi

Altın Üye
Katılım
22 Eylül 2012
Mesajlar
1,080
Excel Vers. ve Dili
excel 2010

excel 2013
Merhaba, aşağıdaki kod ile match ve index den yararlanarak, S1 in G sütunu verilerini S2 nin A sütununda aratarak s2 den değer getirmeye çalışıyorum. S1 in verisi s2 de olmadığı zaman "WorksheetFunction sınıfının Match özelliği alınamıyor " şeklinde hata almaktayım.

Bu hata ortaya çıktığı zaman s1.cells(i, "AF") nin değerini nasıl boş yaptırabilirim.


Kod:
s1.Cells(i, "AF") = WorksheetFunction.Index(s2.Range("G:G"), WorksheetFunction.Match(s1.Cells(i, "G"), s2.Range("A:A"), 0))
 
Ben bu tip bi yapı için önce saydırıyorum. Muhakkak daha hızlı bir yolu vardır fakat alışkanlık :)

Kod:
if worksheetfunction.countif(s2.Range("A:A"),s1.Cells(i, "G")) > 0 then
s1.Cells(i, "AF") = WorksheetFunction.Index(s2.Range("G:G"), WorksheetFunction.Match(s1.Cells(i, "G"), s2.Range("A:A"), 0))
else
s1.Cells(i, "AF") = ""
end if
 
Ben bu tip bi yapı için önce saydırıyorum. Muhakkak daha hızlı bir yolu vardır fakat alışkanlık :)

Kod:
if worksheetfunction.countif(s2.Range("A:A"),s1.Cells(i, "G")) > 0 then
s1.Cells(i, "AF") = WorksheetFunction.Index(s2.Range("G:G"), WorksheetFunction.Match(s1.Cells(i, "G"), s2.Range("A:A"), 0))
else
s1.Cells(i, "AF") = ""
end if


Teşekkürler syn @DoğanD , bu aklıma gelmemişti. Ancak aslında ben şunu denemeye çalışmıştım. Normal formül kullanırken eğerhata(....., "") şeklindeki fonksiyonu vba da çözüm olabilir diye düşündüm ancak olmadı. Ya da ben beceremedim.

Sizin çözümünüz de mantıklı, on error resume next kullanmaktan kurtulurum :)
 
Merhaba, aşağıdaki kod ile match ve index den yararlanarak, S1 in G sütunu verilerini S2 nin A sütununda aratarak s2 den değer getirmeye çalışıyorum. S1 in verisi s2 de olmadığı zaman "WorksheetFunction sınıfının Match özelliği alınamıyor " şeklinde hata almaktayım.

Bu hata ortaya çıktığı zaman s1.cells(i, "AF") nin değerini nasıl boş yaptırabilirim.


Kod:
s1.Cells(i, "AF") = WorksheetFunction.Index(s2.Range("G:G"), WorksheetFunction.Match(s1.Cells(i, "G"), s2.Range("A:A"), 0))
? Açıklama:
  • On Error Resume Next: Hata olursa kodun durmamasını sağlar.
  • If Err.Number <> 0: Hata oluşmuşsa, ilgili hücreye boş değer ("") atanır.
  • Err.Clear: Hata bilgisi sıfırlanır.
  • On Error GoTo 0: Normal hata kontrolüne geri dönülür.
Kod:
On Error Resume Next

s1.Cells(i, "AF") = WorksheetFunction.Index(s2.Range("G:G"), WorksheetFunction.Match(s1.Cells(i, "G"), s2.Range("A:A"), 0))

If Err.Number <> 0 Then
    s1.Cells(i, "AF") = ""
    Err.Clear
End If

On Error GoTo 0
 
Geri
Üst