Geçerli sütun adını Excel'de nasıl edinebilirim?


30

Excel'deki bir hücrenin geçerli satır numarasını ve geçerli sütun adını alma işlevi nedir?


1
Sadece işlevlerini öğrendim LINve COLancak sorun onlar numaralarını döndürmez ve ben için sütun harfini gerek INDIRECTo.
Jader Dias

2
OFFSETişlevi INDIRECT, bu durumda formülle birlikte veya bunun yerine kullanabilirsiniz . Dizeleri kullanmak istiyorsanız, yine de cevabımı güncelledim.
Atılım

Bu arada, INDIRECT geçici bir fonksiyondur, bu nedenle dikkatli kullanın. OFFSET gibi bir ses var, eğer referansın bir pozisyon hesaplamasına dayanıyorsanız, burada daha iyi bir seçim olabilir.
AdamV

Yanıtlar:


33

Bunu yapmak için ROWve COLUMNfonksiyonlarını kullanabilirsiniz. Bu formüller için argümanı atlarsanız, geçerli hücre kullanılır. Bunlar direkt olarak kullanılabilir fonksiyonu ya da sayısal değerler olarak satır ve sütun belirtebilir başka fonksiyonu.OFFSET

Örneğin, =ROW()D8 hücresine girerseniz , döndürülen değer 8'dir =COLUMN(). Aynı hücreye girerseniz , döndürülen değer 4'tür.

Sütun harfini istiyorsanız, CHARişlevi kullanabilirsiniz . Sütunları temsil etmek için harflerin kullanılmasını önermiyorum, çünkü işler çift harfli sütun adlarına geçerken zorlaşır (burada sayıları kullanmak zaten daha mantıklıdır).

Ne olursa olsun, yine de sütun harfini almak istiyorsanız, sütun numarasına sadece 64 sayı ekleyebilirsiniz (64 o zaman bir karakterden daha azdır A), önceki örnekte hücrenin değerini ayarlarsanız, =CHAR(COLUMN()+64)döndürülen değer D. Bir hücrenin değerinin hücrenin bulunduğu yer olmasını isterseniz, tam formül olacaktır =CHAR(COLUMN()+64) & ROW().


Sadece bir FYI, 64 ASCII tablodan aldım. CODEFormülü de kullanabilirsiniz , böylece bunu kullanan güncellenmiş formül olacaktır =CHAR(COLUMN() + CODE("A") - 1). Minimum değeri COLUMNher zaman 1 olduğundan 1'i çıkarmanız gerekir ve ardından formülün tamamının minimum dönüş değeri olur B.

Ancak, bu iki harfli sütunlarla çalışmaz. Bu durumda, iki harfli sütunları uygun şekilde ayrıştırmak için aşağıdaki formüle ihtiyacınız vardır:

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

Eminim bunu ya da değil daha kolay bir yolu varsa değilim ama hücreden o çalıştığını biliyorum A1için ZZ99herhangi bir sorun ile. Bununla birlikte, bu, harf tabanlı sütun tanımlayıcıları kullanmaktan kaçınmanın ve saf sayı tabanlı formüllere sadık kalmanın neden en iyi olduğunu göstermektedir (örneğin, harf yerine sütun sayısını kullanarak OFFSET).


Sadece ilk 26 sütun için çalışacak. Ama bu yapacak.
Jader Dias

1
@Jader Dias bu yüzden kullanmanızı tavsiye ederim OFFSET, bu da sütunları sayı olarak belirlemenizi sağlar. Ne olursa olsun, cevabı iki harfli sütunlarla çalışacak şekilde genişletmek için bir formülle güncelledim.
Atılım

2
Scot'un cevabı çok daha iyi olduğunda bu cevabı neden bu kadar çok oy aldığını bilmiyorum, ancak bunu açıklamadı. Karmaşık bir formül gerekmez. Neden / nasıl çalıştığını açıklamak için bir yorum ekledim.
Gerhard Powell

Bu, AA'ya geçene kadar çalışır, sonra işe yaramaz.
Krystan onur

@krystanhonour bu durumda cevabımdaki son formülü kullanıyor ...However, this will not work with two-letter columns. In that case, you need the following formula to properly parse two-letter columns:
Atılım

34

Aşağıdaki işlevi deneyin:

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

Açıklama: ADDRESS(row_num, column_num, [abs_num]). [abs_num] = 4= göreceli adres. Bu, döndürülen değerde '$' olmadığı anlamına gelir. Sütun için 'AB', ADDRESS'AB1' değerini döndürür. Yerine '1' kaldırılır.


5

Bunu dene

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

Bu size $ vb. Olmadan tam sütun başlığı verir.


2

Bunu herhangi bir hücreye yazın:

Español :

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

İngilizce :

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

Column () 'ı satır numarasına göre değiştirebilirsiniz.


2

Sütun adını almak için aşağıdaki formülleri kullandım.

Belirli bir hücre için:

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

Mevcut hücre için:

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

Bu varyasyonu dene. 3 harfli sütunlarda çalışır ve ön uçta "$" bırakmaz:

=SUBSTITUTE(ADDRESS(ROW(XFD123),COLUMN(XFD123),4),ROW(XFD123),"")

2

Hafif manuel fakat daha az VBA ve daha basit bir formül:

  • Excel'in bir satırına, örneğin A1 hücresi, sütun numarasını girin =column()
  • Aşağıdaki satıra girin =Address(1,A1)
  • Bu sonuç sağlayacaktır $A$1

Değerler kopyalandıktan sonra, boş bırakın $ve bulun ve değiştirin 1.


2

Bu da işe yarayacak

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

Buna bir açıklama ekler misiniz?
ChrisF

1

Başka bir olası yol da böyle bir şey kullanmak olacaktır:

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

Burada colidbir belirtmektedir adlı aralığında birden fazla satır ile iki bitişik sütunlarım içeren çalışma kitabı içinde başka bir yerde yaratacak: birinci sütun sayıları 1 ihtiva eden, n karşılık gelen COLUMN(), harf içeren ve ikinci bir sayısı - ZZ ya da ancak pek çok kolon Referanslar karşılamak istiyoruz. ROW()İnce o Satır sayısını döndürmek için olduğu gibi bırakılır.

Bu nedenle yukarıdaki dizgiyi 'MySheet2' A1 hücresine kopyalayacak olursanız, olarak değerlendirir =MySheet1!A1ve karşılık gelen hücresinde bulunan değeri döndürür MySheet1.

Bu, örneğin MySheet1bir çalışma alanı olarak kullanmanıza , yeni verileri silmenize ve yeniden eklemenize olanak sağlarken MySheet2, bu içeriklere atıfta bulunan herhangi bir biçimlendirme veya hesaplama hedef sekmeli çalışma sayfasındaki yeni veri kümeleriyle doğru çalışmaya devam edecektir.


1

Lehçe Excel sürümü için çözüm:

  • belirli bir hücre için:
=PODSTAW(PODSTAW(KOMÓRKA("adres";B1);"$" & WIERSZ();""); "$"; "")
  • mevcut hücre için:
=PODSTAW(PODSTAW(KOMÓRKA("adres");"$" & WIERSZ();""); "$"; "")

0

İşte bir VBA, kullanıcı tanımlı formül, çözüm. 1, 2 ve 3 harf sütunlarıyla çalışır.

Aşağıdakileri bir kod modülüne yerleştirin:

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 () herhangi bir hücrede hücrenin sütun harfini döndürür.
= Herhangi bir hücrede COLUMNLETTER (B3) B döndürür .

Bu Kullanıcı Tanımlı İşlev, INDIRECT işlevi içinde genel formüller oluştururken harika çalışır.


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

Adres formülü, sütun ve satır adını döndürerek çalışır. Döndürülen biçimi hep olacak $(Column Letters)$(Row Numbers)- örneğin $AA$2veya$XAA$243556

$ 'In her zaman ilk karakterde olacağını biliyorsak, ilk $ işaretinden sonra karakter çekmeye başlamak için ilk orta formülü kullanabiliriz (örneğin 2. karakter).

Sonra bir sonraki $ işaretini bulduk (bildiğimiz gibi sadece iki tane olacak) ve ilk ve ikinci dolar işareti arasında kaç karakter olduğunu biliyoruz. Gerisi basit çıkarma.


0

Sütun başlığını şu şekilde bulabilirsiniz (örneğin, harf):

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

0

bunu dene:

=LEFT(ADDRESS(1,COLUMN(),4),LEN(ADDRESS(1,COLUMN(),4))-1)

0

Aşağıdaki formül, nereye koyduğunuz önemli değildir (sütun adını geri verecektir).

=SUBSTITUTE(SUBSTITUTE(ADDRESS(ROW(),COLUMN()),"$",""),ROW(),"")

-1

bunu dene:

= IF (KOLON ()> 26, CHAR (KOLON () / 26 +64), "") ve CHAR (MOD (KOLON () - 1,26) +65) & SATIR ()

bu işlev "ZY1" veya sütun = 701'e kadar etkilidir


4
Lütfen bu cevapları bu fonksiyonların ne olduğunu açıklayarak genişletin.
Kevin Panko

Böyle ... hatta yukarı böyle "AA1", "Ba1", "CA1" olarak ... "A1", "B1" olarak, Excel'de mevcut sütun adını almak
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)))
Sitemizi kullandığınızda şunları okuyup anladığınızı kabul etmiş olursunuz: Çerez Politikası ve Gizlilik Politikası.
Licensed under cc by-sa 3.0 with attribution required.