एक्सेल सूत्र 'संदर्भ के लिए छोड़ दिया'


86

मैं सशर्त स्वरूपण करने की कोशिश कर रहा हूं ताकि सेल का रंग बदल जाए यदि मूल्य इसके बाईं ओर के सेल में मूल्य से अलग है (प्रत्येक कॉलम एक महीना है, प्रत्येक पंक्ति में कुछ निश्चित वस्तु पर खर्च की निगरानी करना चाहता हूं। महीनों में आसानी से कीमतों में बदलाव।)

मैं इसे प्रति सेल कर सकता हूं और इसे फॉर्मेट-ड्रैग कर सकता हूं, लेकिन मैं पूरी वर्कशीट में आवेदन करने के लिए एक सामान्य फॉर्मूला चाहूंगा।

धन्यवाद!


3
... और अगर किसी को इसकी तलाश है ... स्तंभ को दाईं ओर ले जाने के लिए:=INDIRECT("RC[1]",0)
अग्रगामी

यह एक बहुत बड़ा सवाल है। दुर्भाग्य से, मुझे यकीन नहीं है कि अगर मैं इसे सही ढंग से समझ रहा हूं, तो मूल पोस्टर चाहता था कि उसकी कोशिकाएं सशर्त स्वरूपण करने और फिर प्रत्येक सेल में प्रारूप चित्रकार को चिपकाने के बिना बदल दें। मान लें कि पंक्तियों में हमारे पास महीने हैं, और कॉलम में केले, सेब और संतरे हैं। मैट्रिक्स में कीमतें हैं। अगर हम पिछले महीने से मौजूदा महीने में मूल्य में बदलाव करते हैं, तो हम कुछ ऐसा कैसे कर पाएंगे जो स्वचालित रूप से एक सेल लाल हो जाएगा? अगर हरे रंग की कोशिकाओं को रंगने के लिए एक स्वचालित तरीका भी है अगर कीमत नीचे जाती है और लाल होती है अगर
ब्रायन

जवाबों:


96
=OFFSET(INDIRECT(ADDRESS(ROW(), COLUMN())),0,-1)

14
एक साधारण A1 या RC [-1] के सापेक्ष संदर्भ के बजाय FIVE का उपयोग की जाने वाली ज़रूरत-से-दिखने-से-उपयोग कार्यों का उपयोग करना? कि वाल्ला वाल्ला में स्टॉप-ओवर के साथ ब्रुकलिन से ब्रोंक्स की यात्रा करना पसंद है!
जॉन मैकिन

5
इसके बजाय यह क्यों नहीं = संकेत (ADDRESS (ROW), COLUMN () - 1))
Prometheus

1
"इनडायरेक्ट" में बहुत सारी समस्याएं हैं, जिनमें (लेकिन केवल) सीमित नहीं है (1) सिंगल-थ्रेडेड, और (2) वाष्पशील (संभवतः कैस्केड-आपकी पूरी कार्यपुस्तिका को प्रत्येक परिवर्तन के साथ पुनर्गणना करने के लिए मजबूर करना। इसका उपयोग न करें यदि आप कोई समस्या नहीं करते हैं ।
जॉन जोसेफ

सशर्त स्वरूपण में मैंने नियम निर्धारित किया है ="OFFSET(INDIRECT(ADDRESS(ROW(), COLUMN())),0,-1)=""xyz"""लेकिन सेल प्रारूपित नहीं है। क्या गलत है?
जिपर

81

सबसे कम संगत संस्करण है:

=INDIRECT("RC[-1]",0)

"RC [-1]" का अर्थ है बाईं ओर एक कॉलम। "R [1] C [-1]" नीचे-बाएँ है।

दूसरे पैरामीटर 0 का मतलब है कि पहले पैरामीटर की व्याख्या R1C1 नोटेशन का उपयोग करके की गई है।

अन्य विकल्प:

=OFFSET(INDIRECT(ADDRESS(ROW(), COLUMN())),0,-1)

मेरी राय में बहुत लंबा है। लेकिन उपयोगी है अगर सापेक्ष मूल्य एक अन्य सेल से गतिशील / व्युत्पन्न है। उदाहरण के लिए:

=OFFSET(INDIRECT(ADDRESS(ROW(), COLUMN())),0, A1)

सबसे सरल विकल्प:

= RC[-1]

नुकसान यह है कि आपको विकल्पों का उपयोग करके आर 1 सी 1 नोटेशन को चालू करने की आवश्यकता है, जो कि एक नो-गो है जब अन्य लोगों को एक्सेल का उपयोग करना होगा।


11

अपनी सशर्त स्वरूपण बनाते समय, उस सीमा को सेट करें जिस पर वह लागू होता है जो आप चाहते हैं (पूरी शीट), फिर एक सापेक्ष सूत्र दर्ज करें ( $संकेतों को हटा दें ) जैसे कि आप केवल ऊपरी-बाएँ कोने को स्वरूपित कर रहे थे।

एक्सेल अपने अनुसार बाकी की कोशिकाओं में फॉर्मेटिंग को ठीक से लागू करेगा।

इस उदाहरण में, बी 1 में शुरू होने पर, बाएं सेल A1 होगा। बस इसका उपयोग करें - कोई उन्नत सूत्र आवश्यक नहीं है।


आप कुछ के लिए और अधिक उन्नत देख रहे हैं, तो आप के साथ चारों ओर खेल सकते हैं column(), row()और indirect(...)


7

यदि आप R1C1 अंकन (उपकरण | विकल्प, सामान्य टैब) का उपयोग करने के लिए अपना सेल संदर्भ बदलते हैं, तो आप एक साधारण अंकन का उपयोग कर सकते हैं और इसे किसी भी सेल में पेस्ट कर सकते हैं।

अब आपका फार्मूला बस है:

=RC[-1]

5

बहुत लंबे लिखने के बजाय:

=OFFSET(INDIRECT(ADDRESS(ROW(), COLUMN())),0,-1)

आप बस लिख सकते हैं:

=OFFSET(*Name of your Cell*,0,-1)

इस प्रकार उदाहरण के लिए आप सेल B2 में लिख सकते हैं :

=OFFSET(B2,0,-1)

सेल B1 के संदर्भ में

फिर भी धन्यवाद जेसन यंग !! मैं आपके जवाब के बिना इस समाधान के साथ कभी नहीं आया होता!


2
यह उपयोगी नहीं है। यदि आप पहले से ही जानते हैं कि आपका सेल B2 है, तो आप सेल के लिए B1 को बाईं ओर लिख सकते हैं और ऑफ़सेट का उपयोग बिल्कुल भी नहीं कर सकते। बात पूरी तरह से सामान्य करने के लिए कुछ करने की है।
मैथ्यू पढ़ें

1
यह काफी सुविधाजनक है यदि आप जानते हैं कि आप किस सेल से शुरू करते हैं, और केवल ऑफसेट जो आप करना चाहते हैं, उदाहरण के लिए गतिशील कहना = OFFSET (B2,0, A2) है। यह वह संदर्भ था जिसमें मैंने इसका उपयोग किया था।
सैम फेड

यह वह उत्तर है जिसकी मुझे तलाश थी! मैं चाहता था कि कोई व्यक्ति एक एकल कक्ष का चयन करने में सक्षम हो जो पूरी पंक्ति का प्रतिनिधित्व करता है, और उस पंक्ति में मापदंडों का उपयोग करने के लिए सब कुछ स्वचालित रूप से बदल जाता है। धन्यवाद!
बीटी

1

A1 सेल भरें , निम्न सूत्र के साथ:

 =IF(COLUMN(A1)=1;"";OFFSET(A20;0;-1))&"1"

फिर ऑटेक्स्टेंड टू राइट, आपको मिलता है

 1|  A  |  B  |  C  |  ect ect
 2|    1|   11|  111|  ect ect

यदि ऑफ़सेट उपलब्ध सेल की सीमा के बाहर है, तो आपको #REF मिलता है! त्रुटि।

उम्मीद करता हु आपको आनंद मिला हो।


1

और भी सरल:

=indirect(address(row(), column() - 1))

OFFSET वर्तमान संदर्भ के सापेक्ष एक संदर्भ देता है, इसलिए यदि अप्रत्यक्ष सही संदर्भ देता है, तो आपको इसकी आवश्यकता नहीं है।


ऐसा कभी न करें। संकेत निर्भरता के पेड़ को तोड़ता है - यह एक आपदा है।
Ollie2893

मैंने अभी इस फ़ंक्शन की खोज की है जो मुझे लगता है कि कॉलम की पहली पंक्ति के आधार पर सशर्त स्वरूपण के लिए उपयोगी है। निश्चित नहीं है कि अगर RC [] संकेतन के लिए काम करता है
संकरी

1

उपयोगकर्ता निर्धारित फ़ंक्शन बनाते समय , मुझे पता चला कि अन्य कार्यों में शामिल उत्तर OFFSETऔर INDIRECTलागू नहीं किए जा सकते हैं।

इसके बजाय, आपको Application.Callerउस कक्ष को संदर्भित करने के लिए उपयोग करना होगा जिसमें उपयोगकर्ता निर्धारित फ़ंक्शन (UDF) का उपयोग किया गया है। एक दूसरे चरण में, आप कॉलम के इंडेक्स को संबंधित कॉलम के नाम में परिवर्तित करते हैं।
अंत में, आप सक्रिय वर्कशीट की रेंज फ़ंक्शन का उपयोग करके बाएं सेल को संदर्भित करने में सक्षम हैं ।

Function my_user_defined_function(argument1, argument2)
    ' Way to convert a column number to its name copied from StackOverflow
    ' http://stackoverflow.com/a/10107264
    ' Answer by Siddarth Rout (http://stackoverflow.com/users/1140579/siddharth-rout)
    ' License (if applicable due to the small amount of code): CC BY-SA 3.0
    colName = Split(Cells(, (Application.Caller(1).Column - 1)).Address, "$")(1)

    rowNumber = Application.Caller(1).Row

    left_cell_value = ActiveSheet.Range(colName & rowNumber).Value

    ' Now do something with left_cell_value

0

आप एक VBA स्क्रिप्ट का उपयोग कर सकते हैं जो चयन की सशर्त स्वरूपण को बदलता है (आपको तदनुसार स्थिति और स्वरूपण को समायोजित करना पड़ सकता है:

For Each i In Selection
i.FormatConditions.Delete
i.FormatConditions.Add Type:=xlCellValue, Operator:=xlLess, Formula1:="=" & i.Offset(0, -1).Address
With i.FormatConditions(1).Font
    .Bold = True
End With
Next i

0

मैं इस धागे पर ठोकर खाई क्योंकि मैं हमेशा "बाईं ओर सेल" का संदर्भ देना चाहता था, लेकिन वास्तव में एक गैर-वाष्पशील तरीके से (कोई OFFSET, संकेत और इसी तरह की आपदाएं)। वेब को ऊपर और नीचे देखना, कोई जवाब नहीं। (यह धागा वास्तव में या तो एक उत्तर प्रदान नहीं करता है।) कुछ छेड़छाड़ के बाद मैं सबसे आश्चर्यजनक विधि पर ठोकर खाई, जिसे मैं इस समुदाय के साथ साझा करना पसंद करता हूं:

मान लीजिए कि ई 6 में 100 का शुरुआती मूल्य है। मान लीजिए कि मैं F5 में इस मान के लिए एक डेल्टा दर्ज करता हूं, कहते हैं 5. हम तो F6 = E6 + F5 में निरंतरता मूल्य (105) की गणना करेंगे। यदि आप एक और कदम जोड़ना चाहते हैं, तो आसान है: कॉलम जी को कॉलम एफ कॉपी करें और जी 5 में एक नया डेल्टा दर्ज करें।

यह हम समय-समय पर करते हैं। प्रत्येक कॉलम में एक तारीख होती है और ये तारीखें कालानुक्रमिक क्रम में (MATCH आदि की मदद के लिए) होनी चाहिए। हर बार ऐसा होता है कि हम एक कदम दर्ज करना भूल जाते हैं। अब मान लीजिए कि आप F और G के बीच एक कॉलम डालना चाहते हैं (अपनी चूक को पकड़ने के लिए) और F को नए G में कॉपी करें (निरंतरता फॉर्मूला को फिर से खोलने के लिए)। यह कुल आपदा का कुछ नहीं है। इसे आज़माएं - H6 अब कहेगा = F6 + H5 और नहीं (जैसा कि हमें इसकी बिल्कुल आवश्यकता है) = G6 + H5। (नया G6 सही होगा।)

इस काम को करने के लिए, हम इस आश्चर्यजनक गणना को सबसे आश्चर्यजनक तरीके से F6 = अनुक्रमणिका ($ E6: F6; 1; कॉलम; ($ E1: F1) -1) + F5 पर रोक सकते हैं। दाईं ओर कॉपी करें और आपको G6 = index ($ E6: G6; 1; कॉलम; $ E1: G1) -1) + G5 मिलेगा।

यह कभी काम नहीं करना चाहिए, है ना? परिपत्र संदर्भ, स्पष्ट रूप से! इसे आज़माएं और चकित हो जाएं। एक्सेल को यह महसूस होता है कि हालाँकि INDEX रेंज उस सेल का विस्तार करता है जिसे हम पुनर्गणना कर रहे हैं, उस सेल को खुद INDEX द्वारा संबोधित नहीं किया जाता है और इस प्रकार यह एक परिपत्र संदर्भ नहीं बनाता है।

इसलिए अब मैं घर और सूखी हूं। F और G के बीच एक कॉलम डालें और हमें ठीक वही मिलता है जिसकी हमें आवश्यकता होती है: पुराने H में निरंतरता मान हम नए G में सम्मिलित निरंतरता मान पर वापस लौटेंगे।



0

एक नाम सूत्र बनाएं "LeftCell"

गैर-वाष्पशील उत्तर की तलाश करने वालों के लिए, आप नामांकित सूत्र में INDEX फ़ंक्शन का उपयोग करके इसे पूरा कर सकते हैं।

  1. सेल A2 चुनें

  2. खोलें Name Manager(Ctrl + F3)

  3. क्लिक New

  4. इसे 'वामपन्थी' (या जो भी आप चाहें) नाम दें

  5. के लिए Scope:, का चयन करेंWorkbook

  6. में Refers to:, सूत्र दर्ज करें:

    =INDEX(!A1:!A2, 1)

  7. क्लिक करें OKऔर बंद करेंName Manager

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


0

मुझे लगता है कि यह सबसे आसान जवाब है।

ऑफसेट को संदर्भित करने के लिए "नाम" का उपयोग करें।

मान लें कि आप एक कॉलम (कॉलम A) को सभी तरह से सम्‍मिलित करना चाहते हैं, लेकिन सम्‍मिलित सेल को सम्‍मिलित नहीं करते हैं (जैसे सेल ए 100); यह करो:

(मुझे लगता है कि आप नाम बनाते समय A1 संदर्भ का उपयोग कर रहे हैं; R1C1 बाद में स्विच किया जा सकता है)

  1. शीर्ष पंक्ति पर नहीं शीट में कहीं भी क्लिक करें - सेल डी 9 कहें
  2. नामांकित श्रेणी को परिभाषित करें, "OneCellAbove" कहें, लेकिन "= D8" (कोई उद्धरण नहीं) के साथ 'RefersTo' बॉक्स को अधिलेखित करें
  3. अब, सेल A100 में आप सूत्र का उपयोग कर सकते हैं
    = SUM (A1: OneCellAbove)

-1

कृपया संपूर्ण पत्रक और गृह> शैलियाँ - सशर्त स्वरूपण, नया नियम ... का चयन करें , यह निर्धारित करने के लिए कि कौन सा कक्ष स्वरूपित करता है और यह मान कहाँ है, यह सूत्र सत्य है :

=A1<>XFD1

Format..., स्वरूपण के विकल्प का चयन करें, , । OKOK

हमारी साइट का प्रयोग करके, आप स्वीकार करते हैं कि आपने हमारी Cookie Policy और निजता नीति को पढ़ और समझा लिया है।
Licensed under cc by-sa 3.0 with attribution required.