2013-02-02 11 views
7

G'Day,प्रत्येक सेल को सही ढंग से पढ़ने के लिए यूडीएफ के लिए Excel के सरणी-सूत्रों का उपयोग कैसे करें?

मैं प्रत्येक कोशिका सूत्र में गतिशील रूप से पढ़ सकते हैं मदद करने के अपने आप को समझ कैसे Excel के सरणी-फार्मूले (Control + Shift + Enter) के प्रति अधिक एक प्रश्न है।

मैंने आपको यह दिखाने के लिए एक सरल उदाहरण बनाया है कि मेरा क्या मतलब है।

मैंने एक छोटा काल्पनिक खेत बनाया जिसमें कुछ जानवर हैं, जो नामों से सूचीबद्ध हैं और जानवर जो बनाता है उसकी आवाज़ प्रदान करेंगे। अगले कॉलम में मैंने मेकसाउंड नामक एक उपयोगकर्ता परिभाषित फ़ंक्शन बनाया जो कि जानवरों का एक इनपुट लेता है और वह जानवर जो बनाता है उसका जवाब देता है। जैसा कि नीचे स्नैपशॉट चित्र में दिखाया गया है।

enter image description here

दुर्भाग्य से, मैंने सोचा था कि एक arrayformula मैं विभिन्न जानवरों लिस्टिंग कोशिकाओं है कि लेने सकता है और यह बजाय इस स्नैपशॉट की तरह समाप्त होता है।

enter image description here

तो मैं कैसे पहचान करने के लिए मैं कॉलम बी में विभिन्न कोशिकाओं है के रूप में मैं जानता हूँ कि नीम हकीमों अन्य जानवरों के लिए इस सवाल का जवाब नहीं है arrayformula पूछ सकते हैं। :-)

यहां एक और स्नैपशॉट है जो मैंने उपयोग किए गए संपीड़न और कोड के लिए सरफॉर्म्यूल के बगल में सूत्र दिखा रहा है।

enter image description here

Public Function MakesSound(AnimalName As String) As Variant 
    Select Case AnimalName 
     Case Is = "Duck" 
      MakesSound = "Quack!" 
     Case Is = "Cow" 
      MakesSound = "Moo!" 
     Case Is = "Bird" 
      MakesSound = "Tweet!" 
     Case Is = "Sheep" 
      MakesSound = "Ba-Ba-Ba!" 
     Case Is = "Dog" 
      MakesSound = "Woof!" 
     Case Else 
      MakesSound = "Eh?" 
    End Select 
End Function 

मैं सुझाव के लिए खुले हूँ।

धन्यवाद, पीटर।

+0

आप 'इंडेक्स/MATCH' या यहां तक ​​कि' VLOOKUP' का उपयोग क्यों नहीं करते? – brettdj

+1

मैं अब यह देखने के लिए सरणी सूत्रों की खोज कर रहा हूं कि कौन से प्रभाव होते हैं। मैं इसे सुझाव देने के लिए धन्यवाद, brettdj। –

उत्तर

11

आपको सरणी फ़ंक्शन को सरणी में डेटा पढ़ने, इसे संसाधित करने और आउटपुट सरणी बनाने की आवश्यकता है।
फिर सरणी फ़ंक्शन ntrls को ctrl-shift-enter का उपयोग करके बहु-सेल सरणी सूत्र (D3: D7) में दर्ज किया जाना चाहिए।

Public Function MakesSound(AnimalName As Range) As Variant 
Dim Ansa() As Variant 
Dim vData As Variant 
Dim j As Long 
vData = AnimalName.Value2 
ReDim Ansa(1 To UBound(vData), 1 To 1) 
For j = 1 To UBound(vData) 
    Select Case vData(j, 1) 
    Case Is = "Duck" 
     Ansa(j, 1) = "Quack!" 
    Case Is = "Cow" 
     Ansa(j, 1) = "Moo!" 
    Case Is = "Bird" 
     Ansa(j, 1) = "Tweet!" 
    Case Is = "Sheep" 
     Ansa(j, 1) = "Ba-Ba-Ba!" 
    Case Is = "Dog" 
     Ansa(j, 1) = "Woof!" 
    Case Else 
     Ansa(j, 1) = "Eh?" 
    End Select 
Next j 
MakesSound = Ansa 
End Function 
+0

धन्यवाद चार्ल्स/ब्रेट्डज, मैं प्रभावित हूं। यह काम करता हैं। –

+0

तो ... सरल शब्दों में इस से मेरा सबक लेना किसी भी आकार (या प्रकार?) के 2 डी सरणी में परिवर्तित श्रेणी से इनपुट होना है, फ़ंक्शन या उपयोगकर्ता परिभाषित फ़ंक्शन (यूडीएफ) सरणी को संसाधित कर सकता है वैसे भी उपयोगकर्ता प्रसन्न होते हैं, एक बार किए जाने के बाद "संस्करण के रूप में" आउटपुट के अनुसार सरणी से रूपांतरण में तदनुसार रूपांतरण होता है। मुझे बस एक्सेल सीखना अच्छा लगता है !! :-) –

3

दिया नमूने के लिए सरणी सूत्रों का उपयोग करने के उद्देश्य से मेरे लिए वास्तव में अस्पष्ट है, लेकिन वैसे भी, अगर आप जोर देते हैं - निम्न प्रयास करें:

  1. करें क्षेत्र C3:C7 (अपने सर्वोच्च स्क्रीन पर के रूप में)।
  2. प्रेस F2 मौके पर संपादित करें और निम्न सूत्र टाइप करने के लिए: =MakesSound(B2:B7)
  3. प्रेस CTRL + शिफ्ट + ENTER बजाय हमेशा की तरह ENTER - यह एक सरणी सूत्र परिभाषित करेगा और परिणाम होगा {} इसके चारों ओर ब्रैकेट्स (लेकिन उन्हें मैन्युअल रूप से टाइप न करें!)।

मुझे यकीन नहीं है कि आपका यूडीएफ सरणी नोटेशन को सही तरीके से संभाल सकता है, लेकिन सामान्य एक्सेल सूत्रों के लिए यह अपेक्षित काम करता है, उदा। चरण 2 के लिए एक सरणी के रूप में =LEFT(B2:B7,2) आज़माएं - और यह प्रत्येक जानवर के नाम से 2 प्रारंभिक अक्षर लौटाएगा।

आशा है कि किसी भी तरह से मददगार था। सौभाग्य!

+0

आप सही पीटर एल हैं, यह सही ढंग से संभाल नहीं था। यह #VALUES के साथ आया था! मैं उम्मीद कर रहा था कि यह इस तरह के सरणी प्रसंस्करण को संभालेगा। –

+0

@ user1924393 अगर उत्तर किसी भी तरह से मददगार था - इसे अपग्रेड करने में संकोच न करें, आपके पास उस विशेषाधिकार के लिए पर्याप्त प्रतिनिधि है) –

+0

किया गया, पीटर एल। मैं सीख रहा हूं ... :) –

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

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