วิธีรับชื่อคอลัมน์ปัจจุบันใน Excel


30

ฟังก์ชันรับหมายเลขบรรทัดปัจจุบันและชื่อคอลัมน์ปัจจุบันของเซลล์ใน Excel คืออะไร


1
ฉันเพิ่งค้นพบฟังก์ชั่นLINและCOLแต่ปัญหาคือพวกเขากลับตัวเลขและตัวอักษรที่ฉันต้องการคอลัมน์เพื่อINDIRECTมัน
Jader Dias

2
คุณสามารถใช้OFFSETฟังก์ชันร่วมกับหรือแทนINDIRECTสูตรในกรณีนั้น ถ้าคุณต้องการใช้สตริงฉันก็อัพเดตคำตอบของฉันด้วย
พัฒนา

โดยวิธีการที่ INDIRECT เป็นฟังก์ชั่นที่ผันผวนดังนั้นใช้มันเท่าที่จำเป็น ดูเหมือนว่า am OFFSET อาจเป็นตัวเลือกที่ดีกว่าถ้าคุณอ้างอิงจากการอ้างอิงตำแหน่งที่คุณต้องการในการคำนวณตำแหน่ง
AdamV

คำตอบ:


33

คุณสามารถใช้ROWและCOLUMNฟังก์ชั่นการทำเช่นนี้ หากคุณไม่ใช้อาร์กิวเมนต์สำหรับสูตรเหล่านั้นเซลล์ปัจจุบันจะถูกใช้ เหล่านี้สามารถนำมาใช้โดยตรงกับฟังก์ชั่นหรือฟังก์ชั่นอื่น ๆ ที่คุณสามารถระบุทั้งแถวและคอลัมน์เป็นค่าตัวเลขOFFSET

ตัวอย่างเช่นหากคุณป้อน=ROW()ในเซลล์ D8 ค่าที่ส่งคืนคือ 8 หากคุณป้อน=COLUMN()ในเซลล์เดียวกันค่าที่ส่งคืนคือ 4

หากคุณต้องการตัวอักษรคอลัมน์คุณสามารถใช้CHARฟังก์ชั่น ฉันไม่แนะนำให้ใช้ตัวอักษรเพื่อเป็นตัวแทนของคอลัมน์เนื่องจากสิ่งต่าง ๆ มีความยุ่งยากเมื่อส่งผ่านไปยังชื่อคอลัมน์ตัวอักษรสองตัว

หากคุณยังต้องการรับตัวอักษรคอลัมน์คุณสามารถเพิ่ม 64 ไปยังหมายเลขคอลัมน์ (64 เป็นตัวอักษรน้อยกว่านั้นA) ดังนั้นในตัวอย่างก่อนหน้านี้หากคุณตั้งค่าของเซลล์เป็นค่า=CHAR(COLUMN()+64)ที่ส่งคืนจะเป็นD. =CHAR(COLUMN()+64) & ROW()หากคุณต้องการความคุ้มค่าของเซลล์ที่จะเป็นที่ตั้งของมือถือของตัวเองสูตรที่สมบูรณ์จะเป็น


แค่ FYI ฉันได้ 64 จากตาราง ASCII นอกจากนี้คุณยังสามารถใช้สูตรเพื่อให้สูตรการปรับปรุงโดยใช้นี้จะเป็น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 คอลัมน์แรกเท่านั้น แต่นั่นจะทำ
Jader Dias

1
@Jader Dias นั่นคือเหตุผลที่ฉันแนะนำให้คุณใช้OFFSETแทนซึ่งช่วยให้คุณสามารถระบุคอลัมน์เป็นตัวเลขได้ ไม่ว่าฉันจะอัพเดตคำตอบด้วยสูตรใดเพื่อขยายให้ทำงานกับคอลัมน์สองตัวอักษร
พัฒนา

2
ฉันไม่รู้ว่าทำไมคำตอบนี้จึงได้รับคะแนนเสียงมากมายเมื่อคำตอบของชาวสกอตดีกว่ามากยกเว้นว่าเขาไม่ได้อธิบาย ไม่จำเป็นต้องใช้สูตรที่ซับซ้อน ฉันเพิ่มความคิดเห็นเพื่ออธิบายว่าทำไม / ทำงานอย่างไร
แกร์ฮาร์ดพาวเวลล์

ทำงานได้จนกว่าคุณจะย้ายไปที่ AA เป็นต้นและจะไม่ทำงาน
krystan ให้เกียรติ

@krystanhonour ใช้สูตรสุดท้ายจากคำตอบของฉันในกรณีนี้ ...However, this will not work with two-letter columns. In that case, you need the following formula to properly parse two-letter columns:
Breakthrough

34

ลองใช้ฟังก์ชั่นต่อไปนี้:

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

คำอธิบาย: ADDRESS(row_num, column_num, [abs_num]). [abs_num] = 4= ที่อยู่ญาติ นั่นหมายความว่าไม่มี '$' ในค่าที่ส่งคืน สำหรับคอลัมน์ 'AB' ADDRESSจะส่งคืน 'AB1' ตัวสำรองจะลบ '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มีว่างเปล่า


2

สิ่งนี้จะได้ผลเช่นกัน

=MID(CELL("address"),2,FIND("$",CELL("address"),2)-2)

คุณสามารถเพิ่มคำอธิบายลงในสิ่งนี้ได้ไหม
ChrisF

1

อีกวิธีที่เป็นไปได้คือการใช้สิ่งนี้:

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

โดยที่colidอ้างถึงช่วงที่ตั้งชื่อคุณจะสร้างที่อื่นภายในเวิร์กบุ๊กซึ่งประกอบด้วยคอลัมน์ที่อยู่ติดกันสองคอลัมน์ที่มีหลายแถว: คอลัมน์แรกที่มีตัวเลข 1 ถึง n ที่สอดคล้องกับCOLUMN()ตัวเลขส่วนที่สองประกอบด้วยตัวอักษร A - ZZ หรือคอลัมน์อื่น ๆ ต้องการที่จะรองรับ ROW()ที่เหลือปรับเป็นก็คือการกลับจำนวนแถว

ดังนั้นถ้าคุณมีการคัดลอกสตริงด้านบนเพื่อเซลล์ A1 ของ MySheet2 'ก็จะประเมินเป็นและส่งกลับค่าที่พบในเซลล์ที่สอดคล้องกันของ=MySheet1!A1MySheet1

สิ่งนี้จะช่วยให้คุณสามารถใช้MySheet1เป็นพื้นที่ทำงานในการลบและแทรกข้อมูลใหม่ในขณะที่การจัดรูปแบบหรือการคำนวณใด ๆMySheet2ที่อ้างถึงเนื้อหาเหล่านั้นจะยังคงทำงานอย่างถูกต้องกับชุดข้อมูลใหม่จากแผ่นงานแท็บเป้าหมาย


1

วิธีแก้ปัญหาสำหรับรุ่น Excel ของโปแลนด์:

  • สำหรับเซลล์หนึ่ง ๆ :
=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


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

สูตรที่อยู่ใช้งานได้โดยส่งคืนชื่อคอลัมน์และแถว รูปแบบที่ส่งคืนจะเป็น$(Column Letters)$(Row Numbers)เช่น - $AA$2หรือ$XAA$243556

หากเรารู้ว่า $ จะเกิดขึ้นเสมอกับตัวอักษรตัวแรกเราสามารถใช้สูตรกลางแรกเพื่อเริ่มการดึงตัวละครหลังจากเครื่องหมาย $ แรก (เช่นตัวที่ 2)

จากนั้นเราจะพบเครื่องหมาย $ ถัดไป (เท่าที่เรารู้ว่าจะมีเพียงสอง) และเรารู้ว่ามีอักขระกี่ตัวระหว่างเครื่องหมายดอลลาร์ตัวแรกและตัวที่สอง ส่วนที่เหลือเป็นการลบแบบง่าย


0

นี่คือวิธีที่คุณสามารถค้นหาส่วนหัวของคอลัมน์ (เช่นตัวอักษร):

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


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
โปรดขยายคำตอบนี้โดยอธิบายว่าฟังก์ชั่นเหล่านี้คืออะไร
Kevin Panko

รับชื่อคอลัมน์ปัจจุบันใน Excel เช่น "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)))
โดยการใช้ไซต์ของเรา หมายความว่าคุณได้อ่านและทำความเข้าใจนโยบายคุกกี้และนโยบายความเป็นส่วนตัวของเราแล้ว
Licensed under cc by-sa 3.0 with attribution required.