Bagaimana cara mendapatkan nama kolom saat ini di Excel?

25

Apa fungsi untuk mendapatkan nomor baris saat ini dan nama kolom saat ini untuk sel di Excel?

Jader Dias
sumber
1
Saya baru tahu fungsinya LIN dan COL tetapi masalahnya adalah mereka mengembalikan nomor, dan saya perlu surat kolom untuk INDIRECT saya t.
Jader Dias
2
Anda dapat menggunakan OFFSET berfungsi bersamaan dengan, atau bukannya, INDIRECT rumus dalam hal itu. Jika Anda ingin menggunakan string, saya juga memperbarui jawaban saya.
Breakthrough
Omong-omong, INDIRECT adalah fungsi yang mudah menguap, jadi gunakanlah dengan hemat. Kedengarannya seperti OFFSET mungkin pilihan yang lebih baik di sini jika Anda mendasarkan referensi yang Anda inginkan pada beberapa perhitungan posisi.
AdamV

Jawaban:

31

Anda dapat menggunakan ROW dan COLUMN fungsi untuk melakukan ini. Jika Anda menghilangkan argumen untuk rumus tersebut, sel saat ini digunakan. Ini dapat langsung digunakan dengan itu OFFSET fungsi , atau fungsi lain di mana Anda dapat menentukan baris dan kolom sebagai nilai numerik.

Misalnya, jika Anda masuk =ROW() di sel D8, nilai yang dikembalikan adalah 8. Jika Anda memasukkan =COLUMN() dalam sel yang sama, nilai yang dikembalikan adalah 4.

Jika Anda menginginkan huruf kolom, Anda dapat menggunakan CHAR fungsi. Saya tidak merekomendasikan penggunaan huruf untuk mewakili kolom, karena segala sesuatunya menjadi rumit ketika beralih ke nama kolom huruf ganda (di mana hanya menggunakan angka lebih logis lagian)

Apapun, jika Anda masih ingin mendapatkan surat kolom, Anda bisa menambahkan 64 ke nomor kolom (64 menjadi satu karakter kurang A ), jadi pada contoh sebelumnya, jika Anda menetapkan nilai sel =CHAR(COLUMN()+64), nilai yang dikembalikan adalah D. Jika Anda ingin nilai sel menjadi lokasi sel itu sendiri, rumus lengkapnya adalah =CHAR(COLUMN()+64) & ROW().


Hanya FYI, saya mendapat 64 dari tabel ASCII. Anda juga bisa menggunakan CODE rumus, jadi rumus yang diperbarui menggunakan ini akan menjadi =CHAR(COLUMN() + CODE("A") - 1). Anda harus mengurangi 1 karena nilai minimum COLUMN selalu 1, dan kemudian nilai pengembalian minimum dari seluruh rumus akan menjadi B.

Namun, ini tidak akan berfungsi dengan kolom dua huruf. Dalam hal ini, Anda memerlukan rumus berikut untuk menguraikan kolom dua huruf dengan benar:

=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()

Saya tidak yakin apakah ada cara yang lebih mudah untuk melakukannya atau tidak, tetapi saya tahu itu bekerja dari sel A1 untuk ZZ99 tanpa masalah. Namun, ini menggambarkan mengapa sebaiknya menghindari penggunaan pengidentifikasi kolom berbasis huruf, dan tetap menggunakan formula berbasis angka murni (mis. Menggunakan nomor kolom alih-alih menggunakan OFFSET ).

Breakthrough
sumber
Ini hanya akan berfungsi untuk 26 kolom pertama. Tapi itu akan berhasil.
Jader Dias
1
@ Jader Dias itu sebabnya saya sarankan Anda menggunakan OFFSET alih-alih, yang memungkinkan Anda menentukan kolom sebagai angka. Terlepas dari itu, saya memperbarui jawaban dengan rumus untuk memperluasnya agar berfungsi dengan kolom dua huruf.
Breakthrough
2
Saya tidak tahu mengapa jawaban ini mendapat begitu banyak suara ketika jawaban Skotlandia jauh lebih baik, kecuali bahwa ia tidak menjelaskannya. Tidak diperlukan formula kompleks. Saya menambahkan komentar untuk menjelaskan mengapa / bagaimana cara kerjanya.
Gerhard Powell
Ini berfungsi sampai Anda pindah ke AA dll maka itu tidak akan berfungsi.
krystan honour
@krystanhonour Anda menggunakan rumus terakhir dari jawaban saya dalam hal itu ... However, this will not work with two-letter columns. In that case, you need the following formula to properly parse two-letter columns:
Breakthrough
30

Coba fungsi berikut:

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

Penjelasan: ADDRESS(row_num, column_num, [abs_num]). [abs_num] = 4 = alamat relatif. Itu berarti tidak ada '$ dalam nilai yang dikembalikan. Untuk Kolom 'AB', kolom ADDRESS akan mengembalikan 'AB1'. Pengganti menghapus '1'.

Scot Sutton
sumber
5

Coba ini

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

Ini memberi Anda tajuk kolom yang tepat, tanpa $ dll.

gaurav aggarwal
sumber
2

Ketik ini ke sel apa saja:

Español :

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

Inggris :

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

Anda dapat mengganti kolom () dengan nomor baris.

sygn
sumber
2

Untuk mendapatkan nama kolom saya menggunakan rumus berikut.

Untuk sel tertentu:

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

Untuk sel saat ini:

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

Coba variasi ini. Ini berfungsi pada kolom 3 huruf, dan tidak meninggalkan "$" di ujung depan:

=SUBSTITUTE(ADDRESS(ROW(XFD123),COLUMN(XFD123),4),ROW(XFD123),"")
Vikas Madaan
sumber
2

Manual yang sedikit tetapi lebih sedikit VBA dan formula yang lebih sederhana:

  • Di deretan Excel, mis. sel A1, masukkan nomor kolom =column()
  • Di baris di bawah ini, masukkan =Address(1,A1)
  • Ini akan memberikan hasilnya $A$1

Setelah nilai disalin, temukan dan ganti $ dan 1 dengan kosong.

Steve
sumber
2

Ini akan bekerja juga

=MID(CELL("address"),2,FIND("$",CELL("address"),2)-2)
edl
sumber
Bisakah Anda menambahkan beberapa penjelasan untuk ini?
ChrisF
1

Cara lain yang mungkin adalah menggunakan sesuatu seperti ini:

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

Dimana colid mengacu pada a bernama rentang yang akan Anda buat di tempat lain dalam buku kerja yang terdiri dari dua kolom yang berdekatan dengan beberapa baris: kolom pertama yang berisi angka 1 hingga n yang sesuai dengan COLUMN() angka, yang kedua berisi huruf A - ZZ, atau seberapa banyak referensi kolom yang ingin Anda tampung. Itu ROW() tidak apa-apa karena mengembalikan nomor Baris.

Jadi jika Anda menyalin string di atas ke sel A1 dari 'MySheet2', itu akan dievaluasi sebagai =MySheet1!A1, dan mengembalikan nilai yang ditemukannya di sel terkait MySheet1.

Ini akan memungkinkan Anda, misalnya, untuk menggunakannya MySheet1 sebagai area kerja, untuk menghapus dan memasukkan kembali data baru, sembari memformat atau menghitung apa pun di MySheet2 yang merujuk pada konten tersebut akan terus berfungsi dengan benar dengan set data baru dari lembar kerja tab target.

Tigger
sumber
1

Solusi untuk memoles versi Excel:

  • untuk sel tertentu:
=PODSTAW(PODSTAW(KOMÓRKA("adres";B1);"$" & WIERSZ();""); "$"; "")
  • untuk sel saat ini:
=PODSTAW(PODSTAW(KOMÓRKA("adres");"$" & WIERSZ();""); "$"; "")
mla
sumber
0

Inilah VBA, formula yang ditentukan pengguna, solusi. Ini berfungsi dengan 1, 2, & amp; 3 kolom huruf.

Masukkan yang berikut ini dalam modul kode:

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 () di sel mana pun akan mengembalikan huruf kolom sel.
= COLUMNLETTER (B3) di sel mana pun akan kembali B .

Fungsi yang Ditentukan Pengguna ini berfungsi dengan baik saat membuat rumus umum di dalam fungsi INDIRECT.

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

Formula alamat berfungsi dengan mengembalikan nama kolom dan baris. Format yang dikembalikan akan selalu $(Column Letters)$(Row Numbers) - mis. $AA$2 atau $XAA$243556

Jika kita tahu bahwa $ akan selalu muncul pada karakter pertama, kita dapat menggunakan rumus pertengahan pertama untuk mulai menarik karakter setelah tanda $ pertama (mis. Karakter ke-2).

Kemudian, kita menemukan tanda $ berikutnya (karena kita tahu hanya akan ada dua) dan kita tahu berapa banyak karakter yang ada di antara tanda dolar pertama dan kedua. Sisanya adalah pengurangan sederhana.

Jon
sumber
0

Inilah cara Anda dapat menemukan tajuk kolom (yaitu surat):

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

coba ini:

=LEFT(ADDRESS(1,COLUMN(),4),LEN(ADDRESS(1,COLUMN(),4))-1)
denz
sumber
0

Formula berikut ini berfungsi di mana pun Anda meletakkannya (itu akan memberi Anda kembali nama kolom).

=SUBSTITUTE(SUBSTITUTE(ADDRESS(ROW(),COLUMN()),"$",""),ROW(),"")
Excellll
sumber
-1

coba ini:

= JIKA (COLUMN () & gt; 26, CHAR (COLUMN () / 26 +64), "") & amp; CHAR (MOD (COLUMN () - 1,26) +65) & amp; BARIS()

fungsi ini efektif hingga "ZY1" atau kolom = 701

ayus
sumber
4
Harap rentangkan jawaban ini dengan menjelaskan apa fungsi-fungsi ini.
Kevin Panko
dapatkan nama kolom saat ini di Excel, seperti "A1", "B1", ... bahkan seperti "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)))
mkltmsck
sumber