Apa fungsi untuk mendapatkan nomor baris saat ini dan nama kolom saat ini untuk sel di Excel?
OFFSET
berfungsi bersamaan dengan, atau bukannya, INDIRECT
rumus dalam hal itu. Jika Anda ingin menggunakan string, saya juga memperbarui jawaban saya.
Apa fungsi untuk mendapatkan nomor baris saat ini dan nama kolom saat ini untuk sel di Excel?
OFFSET
berfungsi bersamaan dengan, atau bukannya, INDIRECT
rumus dalam hal itu. Jika Anda ingin menggunakan string, saya juga memperbarui jawaban saya.
Jawaban:
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
).
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.
However, this will not work with two-letter columns. In that case, you need the following formula to properly parse two-letter columns:
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'.
Coba ini
=SUBSTITUTE(SUBSTITUTE(CELL("address"),"$" & ROW(),""), "$", "")
Ini memberi Anda tajuk kolom yang tepat, tanpa $ dll.
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.
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),"")
Manual yang sedikit tetapi lebih sedikit VBA dan formula yang lebih sederhana:
=column()
=Address(1,A1)
$A$1
Setelah nilai disalin, temukan dan ganti $
dan 1
dengan kosong.
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.
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.
=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.
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
LIN
danCOL
tetapi masalahnya adalah mereka mengembalikan nomor, dan saya perlu surat kolom untukINDIRECT
saya t.