एक बार एक फ़ंक्शन लिखने और इसे कई कोशिकाओं में अपडेट करने के लिए कैसे करें?


1

अक्सर ऐसा होता है कि मैं एक सेल में एक फ़ंक्शन लिखता हूं और फिर इसे कई कोशिकाओं में कॉपी करता हूं। प्रतियां फिर अपनी सही पंक्तियों को संदर्भित करती हैं। लेकिन अगर मैं पहले सेल में फ़ंक्शन को बदल देता हूं तो प्रतियां अप्रभावित रहती हैं। मुझे सभी प्रतियों को नए के साथ बदलना होगा। यह कॉपी-पेस्ट प्रोग्रामिंग है जब मैं वास्तव में चाहता हूं कि एक जगह एक फ़ंक्शन लिखना है और उस फ़ंक्शन को कॉल करना है जैसे कि यह अधीनस्थ कोशिकाओं के एक समूह से एक कॉपी था

क्या इसे प्राप्त करने की कोई तकनीक है, या क्या मैं स्प्रेडशीट प्रोग्रामिंग मॉडल से बहुत अधिक उम्मीद कर रहा हूं?


क्या फ़ंक्शन बदलते हैं, जैसा कि विभिन्न कोशिकाओं को संदर्भित करता है, या अधिकांश सूत्र समान हैं? यदि इसमें से अधिकांश समान है, तो आप उस हिस्से को एक अलग सेल में लिखने में सक्षम हो सकते हैं, इसलिए जिन सेल को आपको अपडेट करना है, उस सेल + सूत्र के साथ सेल का संदर्भ शामिल है। अन्यथा, आपको कोशिकाओं को अपडेट करने के लिए मैक्रोज़ का उपयोग करना होगा, जो बहुत कठिन है।
LPChip

फ़ंक्शंस इस तरह हैं: = IF (MOD (A2,30) = 19, स्ट्रिंग्स। $ A $ 1, ""), इसके बाद A5, A8, और इसी तरह की अन्य प्रतियां। लेकिन अगर मैं उन सभी को कहने के लिए बदलना चाहता हूं (लक्ष्य 27 == 14) तो मुझे एक बार बदलाव करना होगा और इसे अन्य सभी समान कोशिकाओं में कॉपी करना होगा। नीचे दिया गया उत्तर सही रास्ते पर है, लेकिन इसकी अपनी समस्याएं हैं (लिब्रे ऑफिस बेसिक को सीखना है, और फ़ंक्शंस स्प्रेडशीट से जुड़ी नहीं हैं।)
पॉलिमैथ 69

जवाबों:


3

आप अपने खुद के फ़ंक्शन को शाॅरेसिक / लिब्रे ऑफिस बेसिक या पायथन का उपयोग करके लिख सकते हैं। यह बहुत आसान है और एक फ़ंक्शन को अपडेट करने की अनुमति देता है जो सभी कोशिकाओं को प्रभावित करता है जहां सूत्र का उपयोग किया जाता है।

जैसा कि यहाँ वर्णित है (शिष्टाचार लुईस के वेबलॉग) , बस निम्नलिखित करें:

  1. टूल्स पर जाएं -> मैक्रोज़ -> मैक्रोज़ को व्यवस्थित करें -> लिबरऑफिस बेसिक;
  2. मॉड्यूल 1 का चयन करें;
  3. संपादित करें पर क्लिक करें;
  4. उदाहरण के लिए, फ़ंक्शन कोड दर्ज करें:
Function Area(width, height)
    Area = width * height
End Function

अब, आप =AREA(arg; arg2)अपनी स्प्रैडशीट में उपयोग कर सकते हैं । यदि आप परिणाम की गणना करने के तरीके को बदलते हैं, तो यह सभी घटनाओं को प्रभावित करता है =AREA()

संपादित करें

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

यहाँ छवि विवरण दर्ज करें


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

मैंने इसे कवर करने के लिए अपना उत्तर संपादित कर दिया है।
तोहवोहोहू

क्या मेरे कंप्यूटर के लिए कस्टम फ़ंक्शन को परिभाषित करने का एक तरीका है, लेकिन क्या उन्हें स्वचालित रूप से किसी भी स्प्रैडशीट में सहेजा गया है जिसमें उनका उपयोग किया जाता है?
एंडोलिथ

@endolith: यह एक अलग सवाल के लायक होगा (लेकिन अगर मैंने यह नहीं पूछा कि यह कहीं और से पहले नहीं पूछा गया था) ...
tohuwawohu

1

मैक्रोज़ के बिना एक सरल समाधान: बस अलग-अलग कोशिकाओं में चर तर्कों को रखें। इसलिए इसके बजाय

=IF(MOD(A2,30)=19,Strings.$A$1,"")

(मूल्यों 30और 19नियत के साथ), बस इसके द्वारा प्रतिस्थापित करें

=IF(MOD(A2,$E$1)=$E$2,Strings.$A$1,"")

और मूल्यों डाल 30और 19क्रमशः कोशिकाओं E1 और E2 में,। अब, यदि आप E1 और / या E2 बदलते हैं, तो हर सूत्र उस मान का उपयोग करेगा।

यदि उन दो मूल्यों के कुछ संयोजन हैं जिन्हें आपको अक्सर लागू करने की आवश्यकता होती है, तो आप तदनुसार परिदृश्यों को परिभाषित कर सकते हैं


0

आप एक तुलना फ़ंक्शन सेल बना सकते हैं और अपने अन्य कार्यों से उस का संदर्भ ले सकते हैं।

मान लें कि आप A10 में यह फ़ंक्शन बनाते हैं, तो A10 इस तरह दिखाई देगा:

= (एमओडी (A2,30) = 19,1,0) अगर

अब, यदि आप A11 में अपना अन्य कार्य करते हैं, तो सामान्यतया आपका फ़ंक्शन इस तरह दिखता है: = IF (MOD (A2,30) = 19, स्ट्रिंग्स। $ A $ 1, "")

अब यह इस तरह दिखाई देगा: = if (A10 = 1, स्ट्रिंग्स। $ A $ 1, "")

यदि आपको तुलना भाग को बदलने की आवश्यकता है, तो आप A10 को बदलते हैं और यह उन सभी कोशिकाओं के लिए अद्यतन करता है जो इसे संदर्भित करते हैं।


मुझे यह उत्तर समझ में नहीं आता। आप A2 को बहुत अधिक स्थानों पर संदर्भित करते हैं ... फ़ंक्शन के संचालक के रूप में और अभिव्यक्ति के स्थान के रूप में। क्या आप यह कहकर मना कर सकते हैं, A1 में डेटा आइटम है, A2 में जेनेरिक फ़ंक्शन है, और A3 ए 1 और $ A $ 2 को संदर्भित करने के लिए जेनेरिक फ़ंक्शन का उपयोग करता है। तब B3 B1 (डेटा) और $ A $ 2 को संदर्भित करने के लिए जेनेरिक का उपयोग कर सकता था। धन्यवाद।
पोलीमैथ

@ polymath69 आह, आप सही हैं। मैं इसका उत्तर प्रतिबिंबित करने के लिए संपादित करूंगा। मैंने सिर्फ ओपी से फंक्शनालॉजी को कॉपी किया और पूरी तरह से भूल गया कि यह नेस्टेड लूप में बदल जाएगा।
LPChip
हमारी साइट का प्रयोग करके, आप स्वीकार करते हैं कि आपने हमारी Cookie Policy और निजता नीति को पढ़ और समझा लिया है।
Licensed under cc by-sa 3.0 with attribution required.