কলাম নম্বরটি অক্ষরে রূপান্তরিত করার কাজ?


143

কারও কাছে কি কোনও এক্সেল ভিবিএ ফাংশন রয়েছে যা কোনও নম্বর থেকে কলাম লেটার (গুলি) ফিরিয়ে দিতে পারে?

উদাহরণস্বরূপ, 100 প্রবেশ করে ফিরে আসা উচিত CV


4

@ ফ্রেঞ্চিসডিয়ান এটি এই প্রশ্নের বিপরীত যা নম্বরটি থেকে ঠিকানাটি
খুঁজছে

2
@ ব্র্যাটেডজ উত্তর সংযুক্তিতে চিঠি এবং সংখ্যায় চিঠি উভয়ই প্রদর্শিত হয়।
ফ্রান্সিস ডিন

2
@ ফ্রেঞ্চিসডিয়ান ফেয়ার পয়েন্ট, আমি গৃহীত উত্তরের চেয়ে লিঙ্কে প্রশ্নের শিরোনামটির দিকে
চেয়েছি

উত্তর:


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()। অন্যথায়, আপনি একটি প্রকারের অমিল ত্রুটি পাবেন।
স্টিভয়েসিয়াক

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
@ ব্র্যাটেডজ আমি বিভিন্ন কারণে কল্পনা করতে পারি: 1) এই পদ্ধতিটি আমার পরীক্ষার দ্বারা প্রায় 6x দ্রুত হয় 2) এটির এক্সেল এপিআইতে অ্যাক্সেসের প্রয়োজন হয় না 3) এটি সম্ভবত একটি ছোট মেমরির ছাপ রয়েছে। সম্পাদনা: এছাড়াও, আমি নিশ্চিত নই যে কেন আমি এক বছরের বেশি বয়সী উত্তরে মন্তব্য করেছি: এস
ব্ল্যাকহক

6
যদিও বর্ধিত গতির একটি অপূর্ণতা রয়েছে। আপনি যদি একটি অবৈধ কলাম নম্বরটিতে পাস করেন তবে রেঞ্জ অবজেক্টটি ব্যবহার করে একটি ত্রুটি ছুঁড়ে। কেউ এখনও এক্সেল 2003 ব্যবহার করে এমনকি এটি কাজ করে you আপনার যদি এই ধরণের ব্যতিক্রমের প্রয়োজন হয় তবে রেঞ্জ পদ্ধতিতে যান। নাহলে, রবার্টসডে কুদোস।
ইঞ্জিনিয়ার টোস্ট

6
IF ColumnNumber <= Columns.Countসংস্করণগুলির আশেপাশে অনুমানগুলি এড়ানো ভাল be
brettdj

1
এই কোডটি ব্যবহারের আর একটি কারণ হ'ল আপনি যদি ভিবিএতে না হয়ে ভিবি
,।


33

আমি অবাক হয়েছি কেউই পরামর্শ দেয়নি: ** <code> </code> <code> কলাম (</ কোড> *** <কোড> কলাম সূচী </ কোড> *** <কোড] d ঠিকানা </ কোড> <কোড> </ code> এ **

  • : উদাহরণস্বরূপ MsgBox Columns( 9347 ).Address আয় ** <কোড> $ নীরব: $ নীরব </ code> এ **

কেবলমাত্র কলাম লেটার (গুলি) ফিরিয়ে দিতে :Split((Columns(Column Index).Address(,0)),":")(0)

  • : উদাহরণস্বরূপ MsgBox Split((Columns( 2734 ).Address(,0)),":")(0) আয় ** <কোড> ডিএডি </ code> এ **

  আরও উদাহরণ



এটি আমার জন্য অফিস 365 এ কাজ করে: স্ট্রিং কল = ওয়ার্কশিট Col কলাম [কলাম] d রিটার্ন কল.সুবস্ট্রিং (col.IndexOf (":") + 2); কিছু কারণে অন্যান্য অভিব্যক্তি, যেমন রেঞ্জ = ওয়ার্কশিট। সেলগুলি [1, কলাম], ত্রুটি ছুঁড়েছিল (সেলস কলগুলিতে বা যখন আমি ঠিকানাটি নেওয়ার চেষ্টা করেছি, মনে করতে পারছি না - দুঃখিত - কোন রেখাটি যেখানে নিক্ষেপ করছে নির্দিষ্ট কেসগুলি cases)
স্যাম আজার

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 এর বেশি সংখ্যার রূপান্তর করতে কাট-পেস্ট নিখুঁত Thanks ধন্যবাদ!
ডেভিড ক্রিডার

1
বাকীটি কখনই ২ more টির বেশি হতে পারে না কেন তাই দীর্ঘের চেয়ে পূর্ণসংখ্যা কেন হবে না?
কলটার

10
@ কল্টর যদি না আপনার কোনও পূর্ণসংখ্যার ব্যবহারের জন্য বিশেষ উদ্দেশ্য থাকে, যেমন একটি এপিআই কল করার মতো উদাহরণস্বরূপ, আপনার কখনই কোনও দীর্ঘের জন্য পূর্ণসংখ্যার পছন্দ করা উচিত নয়। ভিবিএ লংসের জন্য অনুকূলিত। ভিবিএ পূর্ণসংখ্যার চেয়ে দীর্ঘ দীর্ঘ প্রক্রিয়া করে।
এক্সেল হিরো

1
@ এক্সেলহিরো আমি এটা জানতাম না। একটি পূর্ণসংখ্যার চেয়ে বেশি সময় ধরে কি মেমরি লাগে না?
কলটার

6
@ ক্যাল্টর প্রকৃতপক্ষে একটি দীর্ঘ 32 বিট, যখন একটি পূর্ণসংখ্যার 16 হয় But তবে এটি আধুনিক কম্পিউটিংয়ের ক্ষেত্রে গুরুত্বপূর্ণ নয়। 25 বছর আগে ... এটা অনেক গুরুত্বপূর্ণ। তবে আজ (15 বছর আগেও) পার্থক্যটি সম্পূর্ণ অপ্রয়োজনীয়।
এক্সেল হিরো

9

এটি একটি সূত্র ব্যবহারের মাধ্যমে উপলব্ধ:

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

এবং অনুরোধ হিসাবে একটি ভিবিএ ফাংশন হিসাবেও লেখা যেতে পারে:

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
আমি সবেমাত্র লক্ষ্য করেছি যে এটি মূলত নিকোলে ইভানভের সমাধান হিসাবে একই, যা আমার কিছুটা উপন্যাস করে। আমি এটি ছেড়ে দেব কারণ এটি কয়েক মিনিটের জন্য কিছুটা ভিন্ন পদ্ধতির দেখায়
আলেকজানবার্ড

দুটি কারণের জন্য ভাল সমাধান: কোনও বস্তু ব্যবহার না করা (যেমন পরিসর, ঘর ইত্যাদি); খুব কমপ্যাক্ট সংজ্ঞা।
প্রিয়.by. জেসুস

8

রবার্টসডের কোডটি মার্জিত, তবুও এটি ভবিষ্যত-প্রমাণ তৈরি করতে, এন এর ঘোষণাকে দীর্ঘ টাইপ করুন

আপনি যদি ম্যাক্রোগুলি এড়ানোর জন্য কোনও সূত্র চান তবে এখানে এমন কিছু রয়েছে যা 702 সহ অন্তর্ভুক্ত কলাম পর্যন্ত কাজ করে

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

যেখানে A1 হ'ল ঘরটি অক্ষরে রূপান্তরিত করার জন্য কলাম নম্বর রয়েছে containing


7

সর্বশেষ আপডেট : দয়া করে নীচের ফাংশনটি উপেক্ষা করুন, @ সুরসিনট্যাচরোয়েন আমাকে সতর্ক করতে পরিচালিত হয়েছিল যে এটি ভেঙে গেছে n = 53
যারা আগ্রহী তাদের জন্য এখানে নীচে অন্যান্য ভাঙা মান রয়েছে n = 200:

কিছু মান

আপনার সমস্ত প্রয়োজনের জন্য দয়া করে @brettdj ফাংশনটি ব্যবহার করুন। এটি মাইক্রোসফ্ট এক্সেলের জন্য সর্বশেষ সর্বাধিক সংখ্যক কলাম সীমাবদ্ধতার জন্যও কাজ করে: 16384উচিতXFD

এখানে চিত্র বর্ণনা লিখুন

আপডেট শেষ


নীচের ফাংশনটি মাইক্রোসফ্ট সরবরাহ করেছে:

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
  • মাইক্রোসফ্ট এক্সেল 2002 স্ট্যান্ডার্ড সংস্করণ
  • মাইক্রোসফ্ট এক্সেল 2000 স্ট্যান্ডার্ড সংস্করণ
  • মাইক্রোসফ্ট এক্সেল 97 স্ট্যান্ডার্ড সংস্করণ

2
রেফারেন্সের জন্য, ক্র ()) বৃহত্তর কলাম সেট সহ এই পুকসটি বৃহত সংখ্যাটি ভালভাবে পরিচালনা করে না।
Azuvector

2
এটি একটি বাগ আছে। কনভার্টটোলেটর চেষ্টা করুন (53) যা 'বিএ' হওয়া উচিত ছিল তবে এটি ব্যর্থ হবে।
সুরসিন তানচরওন

@ সুরসিনটানচরোয়েন এই ত্রুটিটি লক্ষ করার জন্য আপনাকে অনেক ধন্যবাদ। আমি কখনই ভাবিনি যে মাইক্রোসফ্ট একটি ভাঙা ফাংশন সরবরাহ করবে কারণ তারা তারাই মাইক্রোসফ্ট এক্সেল তৈরি করেছিল। আমি এখন থেকে এই ফাংশনটি ত্যাগ করব এবং @brettdj ফাংশনটি ব্যবহার করব যা সর্বশেষতম মাইক্রোসফ্ট এক্সেলের সর্বাধিক সংখ্যক কলাম সীমাতে সঠিক হবেCol_Letter(16384) = "XFD"
mtbink.com

4
এবং পৃথিবীতে এই "27 দ্বারা বিভাজন" কোথা থেকে এসেছে? সর্বশেষে আমি চেক করেছি 26 টি অক্ষর রয়েছে। এই কোডটি ভঙ্গ করে কেন।
ইবি 11

5

এটি উপরের @ ড্যামিয়েনফেনেলির উত্তরের উপর ভিত্তি করে একটি ফাংশন । যদি আপনি আমাকে থাম্বস আপ দেন, তাকেও থাম্বস আপ করুন! : P: P

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

2
ভাল, তবে এটি গৃহীত উত্তর থেকে আলাদা কীভাবে?
আইওনিস

@ লান্নিস আমি ড্যামিয়ানফেন্লির উত্তরের উপর ভিত্তি করে খনিটি গৃহীত হয়েছে, নয়। তবে হ্যাঁ, আমার দেখতে অনেকটা গ্রহণযোগ্য উত্তরের মতোই লাগছে, এটিকে আরও পঠনযোগ্য করার জন্য একটি লাইন দুটি ভাঙা বাদ দিয়ে।
ব্রেটফ্রমলা

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

এক্স কলামে সারি এক্সে অবস্থিত সেল থাটগুলির জন্য আপনার এক কোড লাইনের ভিতরে যে কলামটি রয়েছে তা নির্বিশেষে এটি কাজ করবে:

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

আপনার যদি অনন্য সংজ্ঞায়িত নাম "সেলনাম" সহ একটি ঘর থাকে:

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

1

ব্রেটডডজ থেকে সমাধানটি চমত্কারভাবে কাজ করে, তবে আপনি যদি একই কারণে আমি যে কারণে একটি সম্ভাব্য সমাধান হিসাবে এসে পৌঁছে থাকেন তবে আমি ভেবেছিলাম যে আমি আমার বিকল্প সমাধানটি দেব offer

আমি যে সমস্যাটি করছিলাম তা ম্যাচ () ফাংশনের আউটপুটের ভিত্তিতে একটি নির্দিষ্ট কলামে স্ক্রোল করছিল। কলামের সংখ্যাটিকে তার কলাম লেটার সমান্তরালে রূপান্তরিত না করে আমি অস্থায়ীভাবে রেফারেন্স স্টাইলটি A1 থেকে R1C1 তে টগল করতে বেছে নিয়েছি। এই ভাবে আমি কোনও ভিবিএ ফাংশন নিয়ে কৌতুক না করে কেবল কলাম নম্বরটিতে স্ক্রোল করতে পারি। দুটি রেফারেন্স শৈলীর মধ্যে সহজেই টগল করতে, আপনি এই ভিবিএ কোডটি ব্যবহার করতে পারেন:

Sub toggle_reference_style()

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

End Sub

1

Brettdj উত্তরে আরও বলা যায়, কলাম নম্বরটির ইনপুটটি alচ্ছিকভাবে করা এখানে। যদি কলাম নম্বর ইনপুট বাদ দেওয়া হয় তবে ফাংশনটি সেলটির কলামের চিঠিটি ফাংশনে কল করে। আমি জানি এটি নিছক ব্যবহার করেও অর্জন করা যেতে পারে 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

এই সূত্রটি একটি পরিসীমা (অর্থাত্, এ 1 ) এর উপর ভিত্তি করে কলামটি দেবে , যেখানে পরিসরটি একটি একক ঘর। যদি একটি বহু-কক্ষ পরিসর দেওয়া হয় তবে এটি শীর্ষ-বাম ঘরটি ফিরিয়ে দেবে। দ্রষ্টব্য, উভয় ঘর উল্লেখ অবশ্যই এক হতে হবে:

এমআইডি (সেল ("ঠিকানা", এ 1 )), 2, অনুসন্ধান ("$", সেল ("ঠিকানা", এ 1 ), 2) -2)

কিভাবে এটা কাজ করে:

সেল ("সম্পত্তি", "সীমা") ব্যবহৃত সম্পত্তির উপর নির্ভর করে ব্যাপ্তির একটি নির্দিষ্ট মান প্রদান করে। এই ক্ষেত্রে সেল ঠিকানা। ঠিকানার বৈশিষ্ট্যটি একটি মান $ [কল] $ [সারি], অর্থাৎ A1 -> $ এ $ 1 প্রদান করে। এমআইডি ফাংশনটি $ চিহ্নগুলির মধ্যে কলাম মানকে বিশ্লেষণ করে।


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

কলাম নম্বর থেকে কলাম লেটারটি নিম্নলিখিত পদক্ষেপগুলি দিয়ে সূত্র ব্যবহার করে উত্তোলন করা যায়
1. ADDRESS সূত্র ব্যবহার করে কলামের ঠিকানা গণনা করুন
2. এমআইডি এবং ফিন্ড ফাংশন ব্যবহার করে কলামের চিঠিটি বের করুন

উদাহরণ:
1. ঠিকানা (1000,1000,1)
ফলাফল ) সমস্ত $ 1000
2 । = এমআইডি (F15,2, FIND ("$", F15,2) -2)
ফলাফল সমস্ত as15ing এফ 15 এর ধাপ 1 এর ফলাফল রয়েছে

এক সাথে আমরা
এমআইডি লিখতে পারি (অ্যাড্রেস (1000,1000,1), 2, FIND ( "$", ADDRESS এর (1000,1000,1), 2) -2)


-1

এটি কেবলমাত্র রেফিডিটের জন্যই ... শীঘ্রই সংস্করণে উপরের কোডটি উত্পন্নভাবে ব্যবহার করুন ... পড়তে এবং বুঝতে সহজ হয় / এটি পোজ ব্যবহার করে $

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

কেবলমাত্র আসকি নাম্বারে রূপান্তর এবং চিঠিতে ফিরে রূপান্তর করতে সিআর () ব্যবহার করে কী হবে?

কল_লেটর = সিআর (নির্বাচন। কলাম +৯৯)


-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
বর্ণমালার বর্ণগুলি তালিকাবদ্ধ করে স্ট্রিং তৈরি করার দরকার নেই। এএসসিআইআই মূলত আমাদের জন্য তা করেছে।
কলটার
আমাদের সাইট ব্যবহার করে, আপনি স্বীকার করেছেন যে আপনি আমাদের কুকি নীতি এবং গোপনীয়তা নীতিটি পড়েছেন এবং বুঝতে পেরেছেন ।
Licensed under cc by-sa 3.0 with attribution required.