Excel में वर्तमान कॉलम नाम कैसे प्राप्त करें?


28

एक्सेल में एक सेल के लिए वर्तमान लाइन नंबर और वर्तमान कॉलम नाम प्राप्त करने के लिए क्या कार्य है?


1
मैं सिर्फ कार्यों में पता चला LINऔर COLलेकिन समस्या यह है कि वे संख्या वापसी है, और मैं करने के लिए स्तंभ पत्र की जरूरत है INDIRECTयह।
जादर डायस

2
आप OFFSETफ़ंक्शन के साथ, या INDIRECTउस मामले में सूत्र के बजाय संयोजन का उपयोग कर सकते हैं । यदि आप स्ट्रिंग्स का उपयोग करना चाहते हैं, हालांकि, मैंने अपना उत्तर भी अपडेट कर दिया है।
ब्रेकथ्रू

वैसे, INDIRECT एक अस्थिर कार्य है, इसलिए इसे संयम से उपयोग करें। यह लगता है जैसे OFFSET यहाँ एक बेहतर विकल्प हो सकता है यदि आप उस संदर्भ को आधार बना रहे हैं जो आप स्थिति की कुछ गणना पर चाहते हैं।
एडमवी

जवाबों:


33

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

उदाहरण के लिए, यदि आप =ROW()सेल D8 में प्रवेश करते हैं, तो लौटाया गया मान 8. है। यदि आप =COLUMN()उसी सेल में प्रवेश करते हैं, तो लौटाया गया मान 4 है।

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

भले ही, यदि आप अभी भी स्तंभ पत्र प्राप्त करना चाहते हैं, तो आप बस स्तंभ संख्या में 64 (64 तब एक वर्ण कम हो A) जोड़ सकते हैं , इसलिए पिछले उदाहरण में, यदि आप सेल के मान को सेट करते हैं =CHAR(COLUMN()+64), तो मान वापस आ जाएगा। D। यदि आप सेल का मान स्वयं सेल स्थान चाहते हैं, तो पूर्ण सूत्र होगा =CHAR(COLUMN()+64) & ROW()


सिर्फ एक FYI करें, मुझे ASCII तालिका से 64 मिले। आप CODEसूत्र का उपयोग भी कर सकते हैं , इसलिए इसका उपयोग करने वाला अद्यतन सूत्र होगा =CHAR(COLUMN() + CODE("A") - 1)। आपको 1 को घटाना है क्योंकि न्यूनतम मान COLUMNहमेशा 1 है, और फिर पूरे सूत्र का न्यूनतम वापसी मूल्य होगा B

हालांकि, यह दो-अक्षर वाले कॉलम के साथ काम नहीं करेगा। उस स्थिति में, आपको दो-अक्षर कॉलम को ठीक से पार्स करने के लिए निम्न सूत्र की आवश्यकता है:

=IF(COLUMN()>26,IF(RIGHT(CHAR(IF(MOD(COLUMN()-1,26)=0,1,MOD(COLUMN()-1,26))+64),1)="Y",CHAR(INT((COLUMN()-1)/26)+64) & "Z",CHAR(INT((COLUMN()-1)/26)+64) & CHAR(IF(MOD(COLUMN(),26)=0,1,MOD(COLUMN(),26))+64)),CHAR(COLUMN()+64))&ROW()

मुझे यकीन नहीं है कि ऐसा करने का एक आसान तरीका है या नहीं, लेकिन मुझे पता है कि सेल A1से ZZ99कोई समस्या नहीं है। हालाँकि, यह दिखाता है कि अक्षर-आधारित कॉलम आइडेंटिफ़ायर के उपयोग से बचना सबसे अच्छा है, और शुद्ध संख्या-आधारित फ़ार्मुलों के साथ रहना (जैसे अक्षर के साथ कॉलम नंबर का उपयोग करना OFFSET)।


यह पहले 26 कॉलम के लिए ही काम करेगा। लेकिन वह करेंगे।
जादेर डायस

1
@ जैदर डायस यही कारण है कि मैं आपको OFFSETइसके बजाय उपयोग करने की सलाह देता हूं, जो आपको कॉलम को संख्या के रूप में निर्दिष्ट करने की अनुमति देता है। भले ही, मैंने दो-अक्षर वाले कॉलम के साथ काम करने के लिए इसे बढ़ाने के सूत्र के साथ उत्तर को अपडेट किया।
ब्रेकथ्रू

2
मुझे नहीं पता कि जब स्कॉच का जवाब बहुत बेहतर था, तो इस जवाब को इतने वोट क्यों मिले, सिवाय इसके कि उन्होंने इसकी व्याख्या नहीं की। किसी जटिल सूत्र की जरूरत नहीं। मैंने यह बताने के लिए एक टिप्पणी जोड़ी कि यह क्यों / कैसे काम करता है।
गेरहार्ड पॉवेल

यह तब तक काम करता है जब तक आप एए आदि की ओर नहीं जाते हैं, तब तक यह काम नहीं करेगा।
क्रिस्टन सम्मान

@krystanhonour ने उस मामले में मेरे उत्तर से अंतिम सूत्र का उपयोग किया ...However, this will not work with two-letter columns. In that case, you need the following formula to properly parse two-letter columns:
ब्रेकथ्रू

34

निम्न फ़ंक्शन आज़माएँ:

=SUBSTITUTE(ADDRESS(1,COLUMN(),4),"1","")

स्पष्टीकरण: ADDRESS(row_num, column_num, [abs_num])[abs_num] = 4= रिश्तेदार का पता। इसका मतलब है कि लौटाए गए मूल्य में कोई '$' नहीं हैं। कॉलम 'एबी' के लिए, ADDRESS'एबी 1' लौटाएगा। स्थानापन्न '1' को हटा दें।


5

इसे इस्तेमाल करे

=SUBSTITUTE(SUBSTITUTE(CELL("address"),"$" & ROW(),""), "$", "")

यह आपको सटीक कॉलम हेडर देता है, बिना किसी $ आदि के।


2

इसे किसी भी सेल में टाइप करें:

Español :

=SI(ENTERO((COLUMNA()-1)/26)=0;"";CAR((ENTERO(COLUMNA()-1)/26)+64))&CAR(COLUMNA()-(ENTERO((COLUMNA()-1)/26)*26)+64)

अंग्रेजी :

=IF(INT((COLUMN()-1)/26)=0,"",CHAR((INT(COLUMN()-1)/26)+64))&CHAR(COLUMN()-(INT((COLUMN()-1)/26)*26)+64)

आप पंक्ति संख्या द्वारा कॉलम () को बदल सकते हैं।


2

स्तंभ नाम प्राप्त करने के लिए मैंने निम्नलिखित सूत्रों का उपयोग किया।

एक विशेष सेल के लिए:

=SUBSTITUTE(CELL("address",H3),"$" & ROW(H3),"")

वर्तमान सेल के लिए:

=SUBSTITUTE(CELL("address"),"$" & ROW(),"")

इस भिन्नता को आजमाएं। यह 3-अक्षर कॉलम पर काम करता है, और सामने के छोर पर "$" नहीं छोड़ता है:

=SUBSTITUTE(ADDRESS(ROW(XFD123),COLUMN(XFD123),4),ROW(XFD123),"")

2

थोड़ा मैनुअल लेकिन कम VBA और एक सरल सूत्र:

  • Excel की एक पंक्ति में, उदा। सेल A1, कॉलम नंबर दर्ज करें =column()
  • नीचे दी गई पंक्ति में, दर्ज करें =Address(1,A1)
  • यह परिणाम प्रदान करेगा $A$1

मानों की प्रतिलिपि बनाने के बाद, ढूँढें और प्रतिस्थापित करें $और 1रिक्त के साथ।



1

एक और संभव तरीका कुछ इस तरह का उपयोग करना होगा:

=INDIRECT("MySheet1!"&LOOKUP(COLUMN(),colid)&ROW())

colidएक नामित सीमा को संदर्भित करता है जहां आप कार्यपुस्तिका के भीतर कहीं और दो पंक्तियों के साथ कई पंक्तियों के साथ बना सकते हैं: पहला स्तंभ जिसमें संख्या 1 से n तक की COLUMN()संख्या होती है, दूसरे में अक्षर A - ZZ, या फिर कई स्तंभ संदर्भ होते हैं। समायोजित करने की इच्छा। ROW()ठीक बाएं के रूप में यह पंक्ति संख्या वापस जाने के लिए है।

इसलिए यदि आप उपरोक्त स्ट्रिंग को 'MySheet2' के सेल A1 में कॉपी करना चाहते हैं, तो यह इसका मूल्यांकन करेगा =MySheet1!A1, और इसके अनुरूप सेल में प्राप्त मान को वापस लौटाएगा MySheet1

यह, उदाहरण के लिए, आपको MySheet1कार्यशील क्षेत्र के रूप में उपयोग करने, नए डेटा को हटाने और पुन: सम्मिलित करने के लिए सक्षम करेगा , जबकि MySheet2उन सामग्रियों को संदर्भित करने वाले किसी भी स्वरूपण या गणना में लक्ष्य वर्जित वर्कशीट से नए डेटासेट के साथ सही ढंग से काम करना जारी रहेगा।


1

पॉलिश एक्सेल संस्करण के लिए समाधान:

  • एक विशेष सेल के लिए:
=PODSTAW(PODSTAW(KOMÓRKA("adres";B1);"$" & WIERSZ();""); "$"; "")
  • वर्तमान सेल के लिए:
=PODSTAW(PODSTAW(KOMÓRKA("adres");"$" & WIERSZ();""); "$"; "")

0

यहां एक VBA, उपयोगकर्ता परिभाषित सूत्र, समाधान है। यह 1, 2, और 3 अक्षर वाले कॉलम के साथ काम करता है।

निम्नलिखित को एक कोड मॉड्यूल में रखें:

Function COLUMNLETTER(Optional rng As Range) As String
    'Returns the Column Letter of the top left cell in rng.

    If rng Is Nothing Then Set rng = Application.Caller
    COLUMNLETTER = Left(rng.Address(0, 0), IIf(rng.Column > 26, IIf(rng.Column > 702, 3, 2), 1))

End Function

= किसी भी सेल में COLUMNLETTER () सेल के कॉलम लेटर को लौटा देगा।
= किसी भी सेल में COLUMNLETTER (B3) B वापस कर देगा ।

INDIRECT फंक्शन के अंदर जेनेरिक फॉर्मूले बनाते समय यह User Defined फंक्शन बढ़िया काम करता है।


0
=MID(ADDRESS(ROW(),COLUMN()),2,FIND("$",ADDRESS(ROW(),COLUMN()),2)-2)

पता सूत्र स्तंभ और पंक्ति नाम लौटाकर काम करता है। लौटा हुआ प्रारूप हमेशा रहेगा $(Column Letters)$(Row Numbers)- जैसे $AA$2या$XAA$243556

अगर हम जानते हैं कि $ हमेशा पहले चरित्र में होगा, तो हम पहले मध्य सूत्र का उपयोग कर सकते हैं ताकि पहले $ संकेत (यानी दूसरा वर्ण) के बाद पात्रों को खींचना शुरू किया जा सके।

फिर, हम अगले $ चिन्ह को पाते हैं (जैसा कि हम जानते हैं कि केवल दो ही होंगे) और हम जानते हैं कि पहले और दूसरे डॉलर के संकेत के बीच कितने अक्षर हैं। बाकी सरल घटाव है।


0

यहां बताया गया है कि आप कॉलम शीर्षक (यानी पत्र) कैसे पा सकते हैं:

=RIGHT(LEFT(ADDRESS(1,COLUMN()),LEN(ADDRESS(1,COLUMN()))-2),LEN(ADDRESS(1,COLUMN()))-3)

0

इसे इस्तेमाल करे:

=LEFT(ADDRESS(1,COLUMN(),4),LEN(ADDRESS(1,COLUMN(),4))-1)

0

निम्न सूत्र काम नहीं करता है जहाँ आप इसे डालते हैं (यह आपको कॉलम नाम वापस देगा)।

=SUBSTITUTE(SUBSTITUTE(ADDRESS(ROW(),COLUMN()),"$",""),ROW(),"")

-1

इसे इस्तेमाल करे:

= IF (COLUMN ()> 26, CHAR (COLUMN () / 26 +64), "") और CHAR (MOD (COLUMN () - 1,26) +65) और ROW ()

यह फ़ंक्शन "ZY1" या कॉलम = 701 तक प्रभावी है


4
कृपया ये उत्तर बताएं कि ये कार्य क्या हैं।
केविन पेंको

एक्सेल में वर्तमान कॉलम नाम, जैसे "A1", "B1", ... यहां तक ​​कि "AA1", "BA1", "CA1", जैसे ...
ayus

-1
=IF(COLUMN()>702,RIGHT(LEFT(ADDRESS(ROW(),COLUMN()),4),3),IF(COLUMN()>26,RIGHT(LEFT(ADDRESS(ROW(),COLUMN()),3),2),RIGHT(LEFT(ADDRESS(ROW(),COLUMN()),2),1)))
हमारी साइट का प्रयोग करके, आप स्वीकार करते हैं कि आपने हमारी Cookie Policy और निजता नीति को पढ़ और समझा लिया है।
Licensed under cc by-sa 3.0 with attribution required.