स्तंभ संख्या को पत्र में बदलने का कार्य?


143

क्या किसी के पास एक्सेल VBA फ़ंक्शन है जो किसी संख्या से कॉलम अक्षर (ओं) को वापस कर सकता है?

उदाहरण के लिए, 100 में प्रवेश करना चाहिए CV


4
इस प्रश्न की जाँच करें: stackoverflow.com/questions/10106465/…
फ्रांसिस डीन

@FrancisDean इस सवाल का उल्टा है जो संख्या से पता की तलाश में है
brettdj

2
@brettdj उत्तर जुड़ा हुआ पत्र संख्या और अक्षर से संख्या तक दोनों को दर्शाता है।
फ्रांसिस डीन

जवाबों:


211

यह फ़ंक्शन किसी दिए गए कॉलम नंबर के लिए कॉलम अक्षर देता है।

Function Col_Letter(lngCol As Long) As String
    Dim vArr
    vArr = Split(Cells(1, lngCol).Address(True, False), "$")
    Col_Letter = vArr(0)
End Function

कॉलम 100 के लिए परीक्षण कोड

Sub Test()
    MsgBox Col_Letter(100)
End Sub

9
आप (0)स्प्लिट कमांड के अंत में जोड़ सकते हैं यदि आप अपने आप को एक चर घोषणा और कोड की अतिरिक्त लाइन को बचाना चाहते हैं। जैसेCol_letter = Split(Cells(1, lngCol).Address(True, False), "$")(0)
कलस्टर

3
यह काफी सही है, लेकिन मैंने कई लाइनों का उपयोग करना अधिक उचित समझा।
brettdj

6
इस स्थिति में बूलियन पैरामेट्स के साथ परेशान क्यों। तुम यह केर सकते हो:............................................. ......v = Split(Cells(1, lngCol).Address, "$")(1)
एक्सेल हीरो

1
हालांकि यह बहुत पुराना है, मेरे पास एक मामूली जोड़ है - पहले जांचना अगर संख्या सकारात्मक है, अन्यथा आप त्रुटियों में भाग लेते हैं। यदि lngcol <= 0 तो
Selkie

1
वीबीएस का उपयोग करते समय, याद रखें कि .Cellsएक्सेल की एक संपत्ति है, जिसका अर्थ है कि आपको उपयोग करने की आवश्यकता है <excel_object>.Cells()। अन्यथा, आपको एक प्रकार की बेमेल त्रुटि मिलेगी।
Stevoisiak

88

यदि आप श्रेणी वस्तु का उपयोग नहीं करते हैं:

Function ColumnLetter(ColumnNumber As Long) As String
    Dim n As Long
    Dim c As Byte
    Dim s As String

    n = ColumnNumber
    Do
        c = ((n - 1) Mod 26)
        s = Chr(c + 65) & s
        n = (n - c) \ 26
    Loop While n > 0
    ColumnLetter = s
End Function

1
स्पष्ट नहीं है कि आपने लूप के आधार पर एक लंबी विधि क्यों पोस्ट की है यदि आप इसके बजाय किसी रेंज ऑब्जेक्ट का उपयोग नहीं करेंगे:
brettdj

29
@bretjj मैं कई कारणों की कल्पना कर सकता हूं: 1) यह विधि मेरे परीक्षण 2 से लगभग 6 गुना तेज है) इसे एक्सेल एपीआई 3 तक पहुंचने की आवश्यकता नहीं है) यह संभवतः एक छोटा मेमोरी फुटप्रिंट है। संपादित करें: इसके अलावा, मुझे यकीन नहीं है कि मैंने एक वर्ष से अधिक पुराने उत्तर पर टिप्पणी क्यों की: एस
ब्लैकहॉक

6
हालांकि बढ़ी हुई गति में एक खामी है। यदि आप एक अमान्य कॉलम संख्या में पास करते हैं, तो रेंज ऑब्जेक्ट का उपयोग करना एक त्रुटि फेंकता है। यह तब भी काम करता है जब कोई अभी भी Excel 2003 का उपयोग कर रहा है। यदि आपको उस तरह के अपवाद की आवश्यकता है, तो रेंज विधि के साथ जाएं। अन्यथा, कुदोस को लूट के लिए।
इंजीनियर टोस्ट

6
IF ColumnNumber <= Columns.Countसंस्करणों के आसपास मान्यताओं से बचने के लिए बेहतर होगा।
brettdj

1
इस कोड का उपयोग करने का एक अन्य कारण यह है कि यदि आप VBA में नहीं बल्कि VB .net, आदि में हैं
मॉरी मार्कोविट्ज़


33

मुझे आश्चर्य है कि किसी ने भी सुझाव नहीं दिया: ** <कोड> </ कोड> <कोड> कॉलम (</ कोड> *** <कोड> कॉलम इंडेक्स </ कोड> *** <कोड>)। पता </ कोड>। <code> </ code> **

  • उदाहरण के लिए: MsgBox Columns( 9347 ).Address रिटर्न ** <code> $ गेंदा: $ गेंदा </ code> **

केवल कॉलम अक्षर वापस करने के लिए :Split((Columns(Column Index).Address(,0)),":")(0)

  • उदाहरण के लिए: MsgBox Split((Columns( 2734 ).Address(,0)),":")(0) रिटर्न ** <code> पिता </ code> **

  और ज्यादा उदाहरण



यह एक मेरे लिए Office 365 में काम करता है: string col = Worksheet.olumns [column] .Address; वापसी col.Substring (col.IndexOf (":") + 2); किसी कारण के लिए अन्य अभिव्यक्तियाँ, जैसे कि Range = Worksheet.Cells [1, column], त्रुटियां फेंक रही थीं (या तो सेल में या जब मैंने पता लेने की कोशिश की, तो याद नहीं कर सकते - खेद है - कौन सी लाइनें जहां फेंक रही हैं विशिष्ट मामले।)
सैम ऐज़र

19

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

ColLtr = Cells(1, ColNum).Address(True, False)
ColLtr = Replace(ColLtr, "$1", "")

या इसे इसके साथ थोड़ा और अधिक कॉम्पैक्ट बना सकते हैं

ColLtr = Replace(Cells(1, ColNum).Address(True, False), "$1", "")

ध्यान दें कि यह आपको सेल ऑब्जेक्ट में पंक्ति 1 संदर्भित करने पर निर्भर करता है।


18

और पुनरावृत्ति का उपयोग कर एक समाधान:

Function ColumnNumberToLetter(iCol As Long) As String

    Dim lAlpha As Long
    Dim lRemainder As Long

    If iCol <= 26 Then
        ColumnNumberToLetter = Chr(iCol + 64)
    Else
        lRemainder = iCol Mod 26
        lAlpha = Int(iCol / 26)
        If lRemainder = 0 Then
            lRemainder = 26
            lAlpha = lAlpha - 1
        End If
        ColumnNumberToLetter = ColumnNumberToLetter(lAlpha) & Chr(lRemainder + 64)
    End If

End Function

676 से अधिक संख्या बदलने के लिए एकदम सही कट-एंड-पेस्ट। धन्यवाद!
डेविड क्राइडर

1
शेष कभी भी 26 से अधिक नहीं हो सकता है, इसलिए लंबे समय के बजाय पूर्णांक क्यों नहीं?
कलस्टर

10
@Caltor जब तक आपके पास एक पूर्णांक का उपयोग करने के लिए एक विशेष उद्देश्य नहीं है, जैसे कि एक एपीआई को कॉल करना जो उदाहरण के लिए एक मांग करता है, तो आपको कभी भी एक लॉन्गर के ऊपर एक पूर्णांक नहीं चुनना चाहिए। VBA को Longs के लिए अनुकूलित किया गया है। VBA, इंटीग्रर्स की तुलना में बहुत तेजी से प्रक्रिया करता है।
एक्सेल हीरो

1
@ExcelHero मुझे नहीं पता था कि। हालांकि एक लोंग एक इंजीगर की तुलना में अधिक मेमोरी नहीं लेता है?
कलस्टर

6
@ कैलाटर वास्तव में एक लंबा 32 बिट्स है, जबकि एक इंटजर 16 है। लेकिन यह आधुनिक कंप्यूटिंग में कोई फर्क नहीं पड़ता। 25 साल पहले ... यह बहुत मायने रखता था। लेकिन आज (15 साल पहले भी) अंतर पूरी तरह से असंगत है।
एक्सेल हीरो

9

यह एक सूत्र का उपयोग करके उपलब्ध है:

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

और इसलिए अनुरोध के अनुसार VBA फ़ंक्शन के रूप में भी लिखा जा सकता है:

Function ColName(colNum As Integer) As String
    ColName = Split(Worksheets(1).Cells(1, colNum).Address, "$")(1)
End Function

8

यह एक लूप के बजाय पुनरावर्तन का उपयोग करते हुए, रोबर्ट्सड के उत्तर का एक संस्करण है ( जन विज्निक्स के एक लाइन समाधान के स्वाद के साथ )।

Public Function ColumnLetter(Column As Integer) As String
    If Column < 1 Then Exit Function
    ColumnLetter = ColumnLetter(Int((Column - 1) / 26)) & Chr(((Column - 1) Mod 26) + Asc("A"))
End Function

मैंने निम्न इनपुट के साथ इसका परीक्षण किया है:

1   => "A"
26  => "Z"
27  => "AA"
51  => "AY"
702 => "ZZ"
703 => "AAA" 
-1  => ""
-234=> ""

2
मैंने अभी देखा है कि यह अनिवार्य रूप से निकोले इवानोव के समाधान के समान है, जो मुझे थोड़ा कम उपन्यास बनाता है। मैं इसे छोड़ दूँगा क्योंकि यह मिनुतिया के कुछ के लिए थोड़ा अलग दृष्टिकोण दिखाता है
अलेक्जेंडरबर्ड

दो कारणों से अच्छा समाधान: किसी भी वस्तु का उपयोग नहीं करना (जैसे सीमा, सेल और इसी तरह); बहुत कॉम्पैक्ट परिभाषा।
प्रिय.जयस

8

robertsd का कोड सुरुचिपूर्ण है, फिर भी इसे भविष्य का प्रमाण बनाने के लिए, n के प्रकार को लंबे समय तक घोषित करने के लिए बदलें

यदि आप मैक्रो से बचने के लिए एक फॉर्मूला चाहते हैं, तो यहाँ कुछ ऐसा है जो 702 कॉलम तक काम करता है

=IF(A1>26,CHAR(INT((A1-1)/26)+64),"")&CHAR(MOD(A1-1,26)+65)

जहां A1 वह सेल है जिसमें कॉलम नंबर को अक्षरों में बदलना है।


7

नवीनतम अद्यतन : कृपया नीचे दिए गए फ़ंक्शन को अनदेखा करें, @SurasinTancharoen मुझे सतर्क करने में कामयाब रहा कि यह टूट गया है n = 53
जो लोग रुचि रखते हैं, उनके लिए यहां नीचे अन्य टूटे हुए मूल्य हैं n = 200:

के कुछ मूल्य

कृपया अपनी सभी आवश्यकताओं के लिए @bretjj फ़ंक्शन का उपयोग करें। यह भी Microsoft Excel नवीनतम कॉलम की अधिकतम संख्या के लिए काम करता है: 16384देना चाहिएXFD

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

अद्यतन का अंत


नीचे दिया गया कार्य Microsoft द्वारा प्रदान किया गया है:

Function ConvertToLetter(iCol As Integer) As String
   Dim iAlpha As Integer
   Dim iRemainder As Integer
   iAlpha = Int(iCol / 27)
   iRemainder = iCol - (iAlpha * 26)
   If iAlpha > 0 Then
      ConvertToLetter = Chr(iAlpha + 64)
   End If
   If iRemainder > 0 Then
      ConvertToLetter = ConvertToLetter & Chr(iRemainder + 64)
   End If
End Function

स्रोत: एक्सेल कॉलम संख्याओं को वर्णमाला वर्णों में कैसे बदलें

प्र लागू होता है

  • माइक्रोसॉफ्ट ऑफिस एक्सेल 2007
  • Microsoft Excel 2002 मानक संस्करण
  • Microsoft Excel 2000 मानक संस्करण
  • Microsoft Excel 97 मानक संस्करण

2
संदर्भ के लिए, Chr () के रूप में बड़े कॉलम सेट के साथ यह पुक बड़ी संख्या को अच्छी तरह से संभाल नहीं करता है।
अज़ुवेक्टर

2
यह एक बग है। ConvertToLetter (53) आज़माएं जो 'बीए' होना चाहिए था, लेकिन यह विफल हो जाएगा।
सुरसिन तन्खारोने

@SurasinTancharoen इस दोष पर ध्यान देने के लिए आपका बहुत-बहुत धन्यवाद। मैंने कभी नहीं सोचा था कि Microsoft एक टूटी हुई फ़ंक्शन प्रदान करेगा क्योंकि वे एक हैं जिन्होंने स्वयं Microsoft Excel बनाया। मैं अभी से इस फ़ंक्शन को छोड़ दूंगा और @brettdj फ़ंक्शन का उपयोग करूंगा, जो नवीनतम Microsoft Excel की अधिकतम कॉलम सीमा की सीमा तक सही होगाCol_Letter(16384) = "XFD"
mtbink.com

4
और पृथ्वी पर यह "27 से विभाजित" कहाँ से आता है? अंतिम बार मैंने जांच की कि 26 पत्र हैं। यही कारण है कि यह कोड टूट जाता है।
आईब ११

5

यह @ DamienFennelly के उत्तर के ऊपर आधारित एक फ़ंक्शन है। यदि आप मुझे एक अंगूठे दे, उसे भी एक अंगूठे दे दो! : पी

Function outColLetterFromNumber(iCol as Integer) as String
    sAddr = Cells(1, iCol).Address
    aSplit = Split(sAddr, "$")
    outColLetterFromNumber = aSplit(1)
End Function

2
एक अच्छा है, लेकिन यह स्वीकृत उत्तर से कैसे अलग है?
आयोनिस

@loannis मैं DamianFennelly के उत्तर पर आधारित थी, न कि स्वीकृत। लेकिन हाँ, मेरा स्वीकृत उत्तर बहुत कुछ दिखता है, सिवाय इसके कि एक पंक्ति दो को तोड़कर इसे अधिक पठनीय बनाया जा सकता है।
ब्रेटफ्रॉमला

3

एक्सेल पावर का उपयोग करने का एक बहुत ही सरल तरीका है: Range.Cells.Addressसंपत्ति का उपयोग करें , इस तरह से:

strCol = Cells(1, lngRow).Address(xlRowRelative, xlColRelative)

यह पंक्ति 1 पर वांछित कॉलम का पता लौटाएगा। इसे ले जाएं 1:

strCol = Left(strCol, len(strCol) - 1)

ध्यान दें कि यह इतना तेज़ और शक्तिशाली है कि आप स्तंभ के पते भी वापस कर सकते हैं जो कि मौजूद हैं!

संपत्ति lngRowका उपयोग कर वांछित कॉलम नंबर के लिए स्थानापन्न Selection.Column!


2

यहाँ एक सरल एक लाइनर है जिसका उपयोग किया जा सकता है।

ColumnLetter = Mid(Cells(Row, LastColA).Address, 2, 1)

यह केवल 1 अक्षर वाले कॉलम के लिए काम करेगा, लेकिन साधारण मामलों के लिए अच्छा है। यदि आपको विशेष रूप से 2 पत्र पदनामों के लिए काम करने की आवश्यकता है, तो आप निम्नलिखित का उपयोग कर सकते हैं:

ColumnLetter = Mid(Cells(Row, LastColA).Address, 2, 2)

2

यह कॉलम Y में, पंक्ति X में स्थित सेल thats के लिए आपकी एक कोड लाइन के अंदर किस कॉलम के बिना काम करेगा:

Mid(Cells(X,Y).Address, 2, instr(2,Cells(X,Y).Address,"$")-2)

यदि आपके पास अद्वितीय परिभाषित नाम "Cellname" के साथ एक सेल है:

Mid(Cells(1,val(range("Cellname").Column)).Address, 2, instr(2,Cells(1,val(range("Cellname").Column)).Address,"$")-2)

1

Brettdj से समाधान काल्पनिक रूप से काम करता है, लेकिन यदि आप इस कारण से एक संभावित समाधान के रूप में मेरे पास आ रहे हैं, तो मैंने सोचा था कि मैं अपना वैकल्पिक समाधान पेश करूंगा।

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

Sub toggle_reference_style()

If Application.ReferenceStyle = xlR1C1 Then
  Application.ReferenceStyle = xlA1
Else
  Application.ReferenceStyle = xlR1C1
End If

End Sub

1

ब्रेटडज उत्तर पर आगे, यहां कॉलम नंबर के इनपुट को वैकल्पिक बनाना है। यदि स्तंभ संख्या इनपुट छोड़ा गया है, तो फ़ंक्शन उस सेल के स्तंभ पत्र को लौटाता है जो फ़ंक्शन को कॉल करता है। मुझे पता है कि यह भी केवल का उपयोग करके प्राप्त किया जा सकता है ColumnLetter(COLUMN()), लेकिन मुझे लगा कि अगर यह चतुराई से समझ सकता है तो यह अच्छा होगा।

Public Function ColumnLetter(Optional ColumnNumber As Long = 0) As String
    If ColumnNumber = 0 Then
        ColumnLetter = Split(Application.Caller.Address(True, False, xlA1), "$")(0)
    Else
        ColumnLetter = Split(Cells(1, ColumnNumber).Address(True, False, xlA1), "$")(0)
    End If
End Function

इस फ़ंक्शन का व्यापार बंद यह है कि यह IFपरीक्षण की वजह से ब्रेटडज के उत्तर की तुलना में बहुत थोड़ा धीमा होगा । लेकिन यह महसूस किया जा सकता है यदि फ़ंक्शन को बार-बार बहुत बड़ी मात्रा में उपयोग किया जाता है।


1

यहाँ देर से उत्तर दिया गया है, सिर्फ़ उपयोग करने के लिए Int()और If1-3 चरित्र स्तंभों के मामले में:

Function outColLetterFromNumber(i As Integer) As String

    If i < 27 Then       'one-letter
        col = Chr(64 + i)
    ElseIf i < 677 Then  'two-letter
        col = Chr(64 + Int(i / 26)) & Chr(64 + i - (Int(i / 26) * 26))
    Else                 'three-letter
        col = Chr(64 + Int(i / 676)) & Chr(64 + Int(i - Int(i / 676) * 676) / 26)) & Chr(64 + i - (Int(i - Int(i / 676) * 676) / 26) * 26))
    End If

    outColLetterFromNumber = col

End Function

1
Function fColLetter(iCol As Integer) As String
  On Error GoTo errLabel
  fColLetter = Split(Columns(lngCol).Address(, False), ":")(1)
  Exit Function
errLabel:
  fColLetter = "%ERR%"
End Function

1

यहाँ, पास्कल (डेल्फी) में एक साधारण कार्य।

function GetColLetterFromNum(Sheet : Variant; Col : Integer) : String;
begin
  Result := Sheet.Columns[Col].Address;  // from Col=100 --> '$CV:$CV'
  Result := Copy(Result, 2, Pos(':', Result) - 2);
end;

1

यह सूत्र एक श्रेणी (जैसे, A1 ) के आधार पर कॉलम देगा , जहां रेंज एकल कक्ष है। यदि मल्टी-सेल रेंज दी जाती है तो यह टॉप-लेफ्ट सेल को लौटा देगा। ध्यान दें, दोनों सेल संदर्भ समान होना चाहिए:

MID (CELL ("पता", A1 ), 2, SEARCH ("$", CELL ("पता", A1 ), 2) -2)

यह काम किस प्रकार करता है:

CELL ("प्रॉपर्टी", "रेंज") उपयोग की गई प्रॉपर्टी के आधार पर रेंज का एक विशिष्ट मूल्य देता है। इस मामले में सेल का पता। पता संपत्ति का मूल्य $ [col] $ [पंक्ति], यानी A1 -> $ A $ 1 है। MID फ़ंक्शन $ प्रतीकों के बीच कॉलम मान को पार्स करता है।


0

कॉलम नाम प्राप्त करने का आसान तरीका

Sub column()

cell=cells(1,1)
column = Replace(cell.Address(False, False), cell.Row, "")
msgbox column

End Sub

मुझे आशा है कि यह मदद करता है =)


0
Sub GiveAddress()
    Dim Chara As String
    Chara = ""
    Dim Num As Integer
    Dim ColNum As Long
    ColNum = InputBox("Input the column number")

    Do
        If ColNum < 27 Then
            Chara = Chr(ColNum + 64) & Chara
            Exit Do
        Else
            Num = ColNum / 26
            If (Num * 26) > ColNum Then Num = Num - 1
            If (Num * 26) = ColNum Then Num = ((ColNum - 1) / 26) - 1
            Chara = Chr((ColNum - (26 * Num)) + 64) & Chara
            ColNum = Num
        End If
    Loop

    MsgBox "Address is '" & Chara & "'."
End Sub

0

इसलिए मुझे यहां पार्टी में देर हो गई है, लेकिन मैं एक और जवाब देना चाहता हूं जो किसी और ने अभी तक संबोधित नहीं किया है जिसमें सरणियां शामिल नहीं हैं। आप इसे सरल स्ट्रिंग हेरफेर के साथ कर सकते हैं।

Function ColLetter(Col_Index As Long) As String

    Dim ColumnLetter As String

    'Prevent errors; if you get back a number when expecting a letter, 
    '    you know you did something wrong.
    If Col_Index <= 0 Or Col_Index >= 16384 Then
        ColLetter = 0
        Exit Function
    End If

    ColumnLetter = ThisWorkbook.Sheets(1).Cells(1, Col_Index).Address     'Address in $A$1 format
    ColumnLetter = Mid(ColumnLetter, 2, InStr(2, ColumnLetter, "$") - 2)  'Extracts just the letter

    ColLetter = ColumnLetter
End Sub

आपके पास प्रारूप में इनपुट होने के बाद $A$1, Midफ़ंक्शन का उपयोग करें , पहले के लिए खाते की स्थिति 2 पर शुरू करें $, फिर आप पाते हैं कि दूसरा $स्ट्रिंग का उपयोग करते हुए कहां दिखाई देता है InStr, और फिर उस प्रारंभिक स्थिति के लिए खाते से 2 को घटाएं।

यह आपको संभावित स्तंभों की पूरी श्रृंखला के लिए अनुकूलनीय होने का लाभ देता है। इसलिए, ColLetter(1)"ए" ColLetter(16384)वापस देता है , और "एक्सएफडी" वापस देता है, जो मेरे एक्सेल संस्करण के लिए अंतिम संभव स्तंभ है।


-1

स्तंभ संख्या से स्तंभ पत्र को निम्न चरणों का पालन करके सूत्र का उपयोग करके निकाला जा सकता है
। ADDRESS सूत्र का उपयोग करके स्तंभ पते की गणना करें ।
MID और FIND फ़ंक्शन का उपयोग करके स्तंभ पत्र निकालें

उदाहरण:
1. ADDRESS (1000,1000,1)
परिणाम सभी $ 1000 $
2 । = MID (F15,2, FIND ("$", F15,2) -2)
परिणाम यह मानते हैं कि सभी F15 में चरण 1 का परिणाम होता है

एक बार में हम
MID (ADDRESS (1000,1000,1), 2, FIND लिख सकते हैं ( "$", पते (1000,1000,1), 2) -2)


-1

यह केवल REFEDIT के लिए है ... सामान्य रूप से शीघ्र ही वर्जन कोड का उपयोग करें ... पढ़ने और समझने में आसान / यह $ poz का उपयोग करता है

Private Sub RefEdit1_Change()

    Me.Label1.Caption = NOtoLETTER(RefEdit1.Value) ' you may assign to a variable  var=....'

End Sub

Function NOtoLETTER(REFedit)

    Dim First As Long, Second As Long

    First = InStr(REFedit, "$")                 'first poz of $
    Second = InStr(First + 1, REFedit, "$")     'second poz of $

    NOtoLETTER = Mid(REFedit, First + 1, Second - First - 1)   'extract COLUMN LETTER

End Function


-2

क्या सिर्फ एससीआई संख्या में परिवर्तित करने और Chr () का उपयोग करने के लिए एक पत्र में वापस परिवर्तित?

col_letter = Chr (चयन। कॉलम + 96)


-6

यहाँ एक और तरीका है:

{

      Sub find_test2()

            alpha_col = "A,B,C,D,E,F,G,H,I,J,K,L,M,N,O,P,Q,R,S,T,U,V,W,X,W,Z" 
            MsgBox Split(alpha_col, ",")(ActiveCell.Column - 1) 

      End Sub

}

1
वर्णमाला के अक्षरों को सूचीबद्ध करने के लिए कोई स्ट्रिंग बनाने की आवश्यकता नहीं है। एएससीआईआई ने अनिवार्य रूप से हमारे लिए ऐसा किया है।
काल्टर
हमारी साइट का प्रयोग करके, आप स्वीकार करते हैं कि आपने हमारी Cookie Policy और निजता नीति को पढ़ और समझा लिया है।
Licensed under cc by-sa 3.0 with attribution required.