Excel中取得儲存格目前行號和目前列名的函數是什麼?
答案1
您可以使用ROW
和COLUMN
函數來執行此操作。如果省略這些公式的參數,則使用目前儲存格。這些可以直接使用OFFSET
功能,或任何其他可以將行和列指定為數值的函數。
例如,如果您=ROW()
在儲存格 D8 中輸入,則傳回值為 8 =COLUMN()
。
如果你想要列字母,可以使用該CHAR
函數。我不建議使用字母來表示列,因為當傳遞到雙字母列名稱時事情會變得棘手(無論如何,僅使用數字更符合邏輯)。
無論如何,如果您仍然想獲取列字母,您可以簡單地將 64 新增至列號(64 比 少一個字元A
),因此在前面的範例中,如果將儲存格的值設為=CHAR(COLUMN()+64)
,則傳回的值將是D
。如果您希望儲存格的值是儲存格位置本身,則完整的公式將為=CHAR(COLUMN()+64) & ROW()
。
僅供參考,我從 ASCII 表中得到了 64。您也可以使用該CODE
公式,因此使用此公式更新後的公式將是=CHAR(COLUMN() + CODE("A") - 1)
。由於 的最小值COLUMN
始終為 1,因此必須減去 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
)。
答案2
嘗試以下功能:
=SUBSTITUTE(ADDRESS(1,COLUMN(),4),"1","")
解釋:ADDRESS(row_num, column_num, [abs_num])
。[abs_num] = 4
= 相對位址。這意味著返回值中沒有“$”。對於列“AB”,將ADDRESS
返回“AB1”。替補去掉“1”。
答案3
嘗試這個
=SUBSTITUTE(SUBSTITUTE(CELL("address"),"$" & ROW(),""), "$", "")
這為您提供了準確的列標題,沒有任何 $ 等。
答案4
為了取得列名稱,我使用了以下公式。
對於特定的單元格:
=SUBSTITUTE(CELL("address",H3),"$" & ROW(H3),"")
對於目前儲存格:
=SUBSTITUTE(CELL("address"),"$" & ROW(),"")
嘗試這個變體。它適用於 3 個字母的列,並且不會在前端留下“$”:
=SUBSTITUTE(ADDRESS(ROW(XFD123),COLUMN(XFD123),4),ROW(XFD123),"")