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

walabi

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

excel 2013
Altın Üyelik Bitiş Tarihi
06-08-2025
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))
 

DoğanD

Altın Üye
Katılım
22 Eylül 2023
Mesajlar
490
Excel Vers. ve Dili
Office 365 TR
Altın Üyelik Bitiş Tarihi
05-10-2028
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
 

walabi

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

excel 2013
Altın Üyelik Bitiş Tarihi
06-08-2025
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 :)
 

volki_112

Altın Üye
Katılım
29 Eylül 2023
Mesajlar
494
Excel Vers. ve Dili
2019 Türkçe
Altın Üyelik Bitiş Tarihi
13-12-2029
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
 
Üst