Excel'deki bir hücrenin geçerli satır numarasını ve geçerli sütun adını alma işlevi nedir?
OFFSET
işlevi INDIRECT
, bu durumda formülle birlikte veya bunun yerine kullanabilirsiniz . Dizeleri kullanmak istiyorsanız, yine de cevabımı güncelledim.
Excel'deki bir hücrenin geçerli satır numarasını ve geçerli sütun adını alma işlevi nedir?
OFFSET
işlevi INDIRECT
, bu durumda formülle birlikte veya bunun yerine kullanabilirsiniz . Dizeleri kullanmak istiyorsanız, yine de cevabımı güncelledim.
Yanıtlar:
Bunu yapmak için ROW
ve COLUMN
fonksiyonları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, CHAR
iş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. CODE
Formülü de kullanabilirsiniz , böylece bunu kullanan güncellenmiş formül olacaktır =CHAR(COLUMN() + CODE("A") - 1)
. Minimum değeri COLUMN
her 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 A1
için ZZ99
herhangi 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
).
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.
However, this will not work with two-letter columns. In that case, you need the following formula to properly parse two-letter columns:
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.
Bunu dene
=SUBSTITUTE(SUBSTITUTE(CELL("address"),"$" & ROW(),""), "$", "")
Bu size $ vb. Olmadan tam sütun başlığı verir.
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.
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),"")
Başka bir olası yol da böyle bir şey kullanmak olacaktır:
=INDIRECT("MySheet1!"&LOOKUP(COLUMN(),colid)&ROW())
Burada colid
bir 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!A1
ve karşılık gelen hücresinde bulunan değeri döndürür MySheet1
.
Bu, örneğin MySheet1
bir ç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.
İş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.
=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$2
veya$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.
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
LIN
veCOL
ancak sorun onlar numaralarını döndürmez ve ben için sütun harfini gerekINDIRECT
o.