2013-07-19 7 views
8

जो कुछ भी अच्छा है, उसके प्यार के लिए, मुझे यह काम करने के लिए प्रतीत नहीं होता है। मैं उपर्युक्त त्रुटि प्राप्त कर रहा हूं।एक्सेल वीबीए: एक मैच नहीं मिल सकता है, त्रुटि "वर्कशीट फ़ंक्शन वर्ग की मिलान संपत्ति प्राप्त करने में असमर्थ"

मेरे पास यह तालिका है, और मैं यह पता लगाने की कोशिश कर रहा हूं कि कोड दूसरे कॉलम के भीतर कहीं भी अपने स्वयं के कोड से मेल खाता है या नहीं, हालांकि यह त्रुटि हो रही है। आपकी मदद बहुत ही सराहनिय है।

enter image description here

Sub testing() 

    Dim m1 As long 
    Dim myrange As Range 

    Set myrange = Worksheets("Sheet1").Range("B2:B23") 

    For e = 2 To 23 
     m1= Application.WorksheetFunction.Match(Cells(e, 1).Value, myrange, 0) 

     If m1 > 0 Then 
      Cells(e, 3).Value = "Yes" 
     Else 
      Cells(e, 3).Value = "No" 
     End If 
    Next e 

MsgBox "Complete!" 

End Sub 
+0

डेविड का जवाब सही है, लेकिन क्यों न केवल स्तंभ सी में सूत्र डालें? –

+0

हाय डौग, मुझे इसे अन्य कार्यों के संयोजन के साथ उपयोग करने की आवश्यकता होगी जिसे मैं बाद में करना चाहता हूं, जिसे मैं केवल वीबीए कोड के माध्यम से ही किया जा सकता हूं। –

उत्तर

14

उपयोग Application.Match समारोह जो जाल त्रुटियों के लिए बेहतर क्षमता के लिए अनुमति देता है। WorksheetFunction.Match का उपयोग करते समय, जब कोई मिलान नहीं मिलता है, तो यह एक त्रुटि देता है, जो आप अनुभव कर रहे हैं।

If Not IsError(Application.Match(Cells(e, 1).Value, myrange, 0)) Then 
    'Do stuff when the match is found 
    Cells(e, 3).Value = "Yes" 
Else: 
    Cells(e, 3).Value = "No" 
End If 

तुम भी संभावित CountIf समारोह इस्तेमाल कर सकते हैं:

If Application.WorksheetFunction.CountIf(myRange, Cells(e,1).Value) > 0 Then 
    Cells(e,3).Value = "Yes" 
Else: 
    Cells(e,3).Value = "No" 
End If 
इन तरीकों का

न तो m1 चर का उपयोग करने की आवश्यकता है, तो आप, If/Then बयान के True भाग के भीतर इस चर असाइन कर सकते हैं, तो आपको की पहचान करने की आवश्यकता है जहां मिलान मिल गया है।

+0

धन्यवाद, यह काम किया! बहुत सराहना की। –

+0

त्वरित प्रश्न हालांकि: यदि आप सेल के भीतर मूल्य के "मिलान" करना चाहते हैं, तो आप किस फ़ंक्शन का उपयोग करेंगे? –

+0

यह आंशिक मिलान की जटिलता पर निर्भर करता है। यह कुछ आसान हो सकता है, उदाहरण के लिए "स्टीव" से शुरू होने वाले किसी भी सेल के अवसरों की गणना करने के लिए, 'countIf' फ़ंक्शन में दूसरा तर्क' स्टीव * ''जैसा होगा, या यदि आप किसी भी सेल की तलाश में थे शब्द "स्टीव", आप '" * स्टीव * "' आदि का उपयोग कर सकते हैं, अधिक जटिल, और आप नियमित अभिव्यक्तियों का उपयोग करने के लिए देखना चाहते हैं। –

2

बस एक और विकल्प के रूप में, यह सेल सी 2 में नीचे सूत्र डालने और इसे C23 तक खींचकर भी किया जा सकता है।

=IF(COUNTIF($A$2:$A$23,B2)>=1,"YES","NO") 
+0

+1, यह तब तक जाने का तरीका है, जब तक वीबीए के लिए कुछ अनिवार्य कारण न हो। –

+1

कोड के दूसरे सेट के साथ भाग में उपयोग करने के लिए एक मैच खोजने का प्रयास कर रहा है। –

संबंधित मुद्दे