VBA - जांचें कि क्या कोई मान किसी सरणी में मौजूद है
VBA - जांचें कि क्या कोई मान किसी सरणी में मौजूद है
परिचय
यह जाँचने के लिए कि कोई मान किसी सरणी में मौजूद है, हम उसके तत्वों के माध्यम से लूप कर सकते हैं। हालाँकि एक और उपाय है! आप INDEX () फ़ंक्शन, Excel के मूल निवासी और दो आयामी सरणियों के मामले में INDEX / MATCH फ़ंक्शन के संयोजन का उपयोग कर सकते हैं। हालाँकि, यदि मान नहीं मिला, तो Application.Match एक त्रुटि देता है। आपको किसी भी संभावित त्रुटि, साथ ही सरणी चर के आयामों की संख्या को ध्यान में रखना होगा।यह छोटा सा कार्य आपकी मदद करेगा!
मैच फ़ंक्शन का उपयोग करना
बूलियन के रूप में फ़ंक्शन एस्टडांस (स्ट्रिंग के रूप में, तबला)बाइट के रूप में मंद आयाम, जे इंटेगर के रूप में
त्रुटि फिर से शुरू पर
यदि IsError (UBound (Tabl, 2)) तो Dimension = 1 Else आयाम = 2
त्रुटि GoTo 0 पर
केस डायमेंशन का चयन करें
मामला एक
त्रुटि फिर से शुरू पर
एस्टडांस = एप्लीकेशन.मैच (उद्देश्य, टैबल, 0)
त्रुटि GoTo 0 पर
केस 2
J = 1 के लिए UBound (Tabl, 2)
त्रुटि फिर से शुरू पर
एस्टडांस = एप्लीकेशन.मैच (उद्देश्य, एप्लीकेशन.इंडेक्स (टैबल, जे), 0)
त्रुटि GoTo 0 पर
यदि एस्टडांस = सच है तो बाहर निकलें
आगामी
अंत का चयन करें
अंत समारोह
समारोह का आह्वान
उप परीक्षण ()डिम टीबी (), आई अस इंटेगर
'tb 2 आयाम:
टीबी = रेंज ("ए 2: सी 16")। मान
डिबग.प्रिंट एस्टडांस (मावेलुर, टीबी)
मिटा दें टी.बी.
'tb 1 आयाम:
पुनः रक्षा टीबी (15)
I = 0 से 14 के लिए
Tb (i) = कक्ष (i + 2, 1)
आगामी
डिबग.प्रिंट एस्टडांस (मावेलुर, टीबी)
अंत उप
एक लूप का उपयोग करना
इस फ़ंक्शन की संरचना मैच का उपयोग करने वाले के समान है।BoucleSurTabl (स्ट्रिंग, टीबी के रूप में प्रेरित करें)बाइट के रूप में मंद आयाम, आई लॉन्ग, जे अस लॉन्ग
त्रुटि फिर से शुरू पर
यदि IsError (UBound (Tb, 2)) तो Dimension = 1 Else आयाम = 2
त्रुटि GoTo 0 पर
केस डायमेंशन का चयन करें
मामला एक
जम्मू के लिए = एलबाउंड (टीबी) से यूबाउंड (टीबी)
अगर Tb (j) = mot तो BoucleSurTabl = True: Exit Function
आगामी
केस 2
I के लिए = एलबाउंड (टीबी, 1) से यूबाउंड (टीबी, 1)
जम्मू के लिए = एलबाउंड (टीबी, 2) टू यूबाउंड (टीबी, 2)
अगर Tb (i, j) = mot तो BoucleSurTabl = True: Exit Function
अगला जे
अगला मैं
अंत का चयन करें
अंत समारोह
टिप्पणियों
सभी बाधाओं के खिलाफ, आपको Application.Match का उपयोग करने की तुलना में बड़े सरणियों पर लूप फ़ंक्शन के साथ एक बेहतर परिणाम मिलेगा।निम्न श्रेणी ("A1: Y20002") के साथ 2-आयामी सरणी का परीक्षण।
- मैच फ़ंक्शन का उपयोग करना: 8.300781 सेकंड।
- लूप का उपयोग करना: 0.4375 सेकंड।
एक आयामी सरणी का परीक्षण:
- मैच फ़ंक्शन का उपयोग करना: तत्काल
- लूप का उपयोग करना: 0.015625 सेकंड
डाउनलोड लिंक
- आप नमूना कार्यपुस्तिका डाउनलोड कर सकते हैं: //cjoint.com/?DHfpeqMBvRK