'SOLA HÜCRE' başvurusu için Excel formülü


86

Değer sol hücredeki değerden farklıysa hücre renginin değişmesi için koşullu biçimlendirme yapmaya çalışıyorum (her sütun bir ay, her satırda belirli bir nesnenin masrafları var. İzlemek istiyorum. fiyatlar aylar içinde kolayca değişir.)

Bunu hücre başına yapabilir ve biçimlendirip sürükleyebilirim, ancak genel bir formülün tüm çalışma sayfasına uygulanmasını istiyorum.

Teşekkürler!


3
... ve birisi onu arıyorsa ... sağdaki sütunu almak için:=INDIRECT("RC[1]",0)
prograhammer

Bu çok güzel bir soru. Ne yazık ki, bunu doğru anladığımdan emin değilim, orijinal poster, koşullu biçimlendirme yapıp ardından biçim ressamını her hücreye yapıştırmadan hücrelerinin değiştirilmesini istedi. Diyelim ki satırlarda aylar ve sütunlarda muz, elma ve portakal var. Matriste fiyatlar var. Önceki aydan mevcut aya fiyat değişikliği olsaydı, otomatik olarak BİR HÜCRE KIRMIZI RENKLENDİRECEK bir şeyi nasıl yapabilirdik? Eğer fiyat düşerse hücreleri yeşile ve kırmızıya
Bryan

Yanıtlar:


96
=OFFSET(INDIRECT(ADDRESS(ROW(), COLUMN())),0,-1)

14
Basit bir A1 veya RC [-1] göreli referans yerine, nadiren kullanılan kullanıma ihtiyaç duyulan beş işlev işlevini kullanmak mı? Bu, Walla Walla WA'da mola vererek Brooklyn'den Bronx'a seyahat etmek gibi!
John Machin

5
Neden bunun yerine = DOLAYLI (ADRES (SATIR (), SÜTUN () - 1))
Prometheus

1
"Dolaylı", (1) tek iş parçacıklı ve (2) uçucu (muhtemelen tüm çalışma kitabınızı her değişiklikle yeniden hesaplamaya zorlayan) dahil (ancak bunlarla sınırlı olmamak üzere) birçok soruna sahiptir. .
John Joseph

Koşullu biçimlendirmede, kuralı olarak belirledim, ="OFFSET(INDIRECT(ADDRESS(ROW(), COLUMN())),0,-1)=""xyz"""ancak hücre biçimlendirilmedi. Sorun nedir?
fermuar

81

En kısa en uyumlu sürüm:

=INDIRECT("RC[-1]",0)

"RC [-1]" soldaki bir sütun anlamına gelir. "R [1] C [-1]" sol alt taraftadır.

İkinci parametre 0, ilk parametrenin R1C1 gösterimi kullanılarak yorumlandığı anlamına gelir.

Diğer seçenekler:

=OFFSET(INDIRECT(ADDRESS(ROW(), COLUMN())),0,-1)

Bence çok uzun. Ancak, göreceli değer dinamikse / başka bir hücreden türetilmişse kullanışlıdır. Örneğin:

=OFFSET(INDIRECT(ADDRESS(ROW(), COLUMN())),0, A1)

En basit seçenek:

= RC[-1]

dezavantajı, seçenekleri kullanarak R1C1 gösterimini açmanız gerekmesidir; bu, diğer insanların excel'i kullanmak zorunda kaldığı bir durumdur.


11

Koşullu biçimlendirmenizi oluştururken, istediğiniz şeye (sayfanın tamamı) uygulanacağı aralığı ayarlayın, ardından yalnızca sol üst köşeyi biçimlendiriyormuşsunuz gibi göreli bir formül girin ( $işaretleri kaldırın ).

Excel, biçimlendirmeyi uygun şekilde geri kalan hücrelere uygulayacaktır.

Bu örnekte, B1'den başlayarak, sol hücre A1 olacaktır. Sadece bunu kullanın - gelişmiş formül gerekmez.


Bir şey daha gelişmiş arıyorsanız, size oynayabilir column(), row()ve indirect(...).


7

Hücre referansınızı R1C1 gösterimini (Araçlar | Seçenekler, Genel sekmesi) kullanacak şekilde değiştirirseniz, basit bir gösterim kullanabilir ve herhangi bir hücreye yapıştırabilirsiniz.

Şimdi formülünüz basitçe:

=RC[-1]

5

Çok uzun yazmak yerine:

=OFFSET(INDIRECT(ADDRESS(ROW(), COLUMN())),0,-1)

Basitçe yazabilirsiniz:

=OFFSET(*Name of your Cell*,0,-1)

Böylece, örneğin Cell B2'ye yazabilirsiniz :

=OFFSET(B2,0,-1)

B1 hücresine başvurmak için

Yine de teşekkürler Jason Young !! Cevabınız olmadan bu çözümü asla bulamazdım!


2
Bu kullanışlı değil. Hücrenizin B2 olduğunu zaten biliyorsanız, sola hücre için B1 yazabilir ve ofsetleri hiç kullanamazsınız. Önemli olan tamamen genel bir şey yapmaktır.
Matthew

1
Hangi hücreden başladığınızı biliyorsanız ve sadece yapmak istediğiniz ofset dinamik diyelim = OFFSET (B2,0, A2) ise oldukça kullanışlıdır. Onu kullandığım bağlam buydu.
Sam Fed

Bu aradığım cevap! Birinin tüm bir satırı temsil eden tek bir hücreyi seçebilmesini ve bu satırdaki parametreleri kullanmak için her şeyin otomatik olarak değiştirilmesini istedim. Teşekkürler!
BT

1

A1 hücresini aşağıdaki formülle doldurun :

 =IF(COLUMN(A1)=1;"";OFFSET(A20;0;-1))&"1"

Sonra sağa doğru otomatik genişletir,

 1|  A  |  B  |  C  |  ect ect
 2|    1|   11|  111|  ect ect

Göreli konum, kullanılabilir hücrenin aralığının dışındaysa, # BAŞV! hata.

Beğeneceğinizi umuyoruz.


1

Daha da basit:

=indirect(address(row(), column() - 1))

OFFSET, geçerli referansa göre bir referans döndürür, bu nedenle dolaylı olarak doğru referansı döndürürse buna ihtiyacınız yoktur.


Bunu asla yapmayın. DOLAYLI bağımlılık ağacını kırar - bu bir felakettir.
Ollie2893

Sütunun ilk satırına bağlı olarak koşullu biçimlendirme için yararlı olduğunu düşündüğüm bu işlevi yeni keşfettim. RC [] notasyonunun işe
yarayıp yaramadığından

1

Bir oluştururken kullanıcı tanımlı işlevi , başka cevaplar fonksiyonları içeren öğrendim OFFSETve INDIRECTuygulanamaz.

Bunun yerine, Application.CallerKullanıcı Tanımlı İşlevin (UDF) kullanıldığı hücreye başvurmak için kullanmanız gerekir. İkinci bir adımda, sütunun dizinini ilgili sütunun adına dönüştürürsünüz.
Son olarak, etkin çalışma sayfasının Aralık işlevini kullanarak sol hücreye başvurabilirsiniz .

Function my_user_defined_function(argument1, argument2)
    ' Way to convert a column number to its name copied from StackOverflow
    ' http://stackoverflow.com/a/10107264
    ' Answer by Siddarth Rout (http://stackoverflow.com/users/1140579/siddharth-rout)
    ' License (if applicable due to the small amount of code): CC BY-SA 3.0
    colName = Split(Cells(, (Application.Caller(1).Column - 1)).Address, "$")(1)

    rowNumber = Application.Caller(1).Row

    left_cell_value = ActiveSheet.Range(colName & rowNumber).Value

    ' Now do something with left_cell_value

0

Bir seçimin koşullu biçimlendirmesini değiştiren bir VBA komut dosyası kullanabilirsiniz (koşulu ve biçimlendirmeyi buna göre ayarlamanız gerekebilir):

For Each i In Selection
i.FormatConditions.Delete
i.FormatConditions.Add Type:=xlCellValue, Operator:=xlLess, Formula1:="=" & i.Offset(0, -1).Address
With i.FormatConditions(1).Font
    .Bold = True
End With
Next i

0

Bu konuya tökezledim çünkü her zaman "soldaki hücreye" referans vermek istedim, ancak CRUCI OLARAK kalıcı bir şekilde (OFFSET, DOLAYLI ve benzeri felaketler yok). İnternette yukarı ve aşağı bakmak, cevap yok. (Bu konu da aslında bir cevap vermiyor.) Biraz uğraştıktan sonra, bu toplulukla paylaşmaktan hoşlandığım en şaşırtıcı yönteme rastladım:

E6'da 100'lük bir başlangıç ​​değeri varsayalım. F5'te bu değere bir delta girdiğimi varsayalım, 5 diyelim. Daha sonra F6 = E6 + F5'te devam değerini (105) hesaplayacağız. Başka bir adım eklemek istiyorsanız, kolay: F ​​sütununu G sütununa kopyalayın ve G5'e yeni bir delta girin.

Periyodik olarak yaptığımız budur. Her sütunun bir tarihi vardır ve bu tarihler kronolojik sırada OLMALIDIR (MATCH'a yardımcı olmak için vb.). Bazen bir adıma girmeyi unuturuz. Şimdi, F ve G arasına bir sütun eklemek (ihmalinizi yakalamak için) ve F'yi yeni G'ye (devam formülünü yeniden doldurmak için) kopyalamak istediğinizi varsayalım. Bu tam bir felaketten HİÇBİR ŞEYDİR. Deneyin - H6 şimdi = F6 + H5 ve DEĞİL (kesinlikle ihtiyacımız olduğu gibi) = G6 + H5 diyecek. (Yeni G6 doğru olacaktır.)

Bunun işe yaraması için, bu sıradan hesaplamayı en şaşırtıcı şekilde gizleyebiliriz F6 = endeks ($ E6: F6; 1; sütunlar ($ E1: F1) -1) + F5. Sağa kopyalayın ve G6 = dizin ($ E6: G6; 1; sütunlar ($ E1: G1) -1) + G5 elde edin.

Bu asla işe yaramaz, değil mi? Dairesel referans, açıkça! Deneyin ve hayran kalın. Excel, INDEX aralığı yeniden hesapladığımız hücreye yayılmasına rağmen, hücrenin INDEX tarafından ele alınmadığını ve bu nedenle döngüsel bir referans OLUŞTURMADIĞINI fark ediyor gibi görünüyor.

Yani şimdi evdeyim ve kuruyum. F ve G arasına bir sütun ekleyin ve tam olarak ihtiyacımız olanı elde ederiz: Eski H'deki devam değeri, yeni G'ye eklediğimiz devam değerine geri dönecektir.



0

"LeftCell" adlı bir formül oluşturun

Uçucu olmayan bir cevap arayanlar için, bunu, adlandırılmış bir formülde INDEX işlevini kullanarak başarabilirsiniz.

  1. A2 Hücresini Seçin

  2. Name Manager(Ctrl + F3)

  3. Tıklayın New

  4. 'LeftCell' (veya ne tercih ederseniz) olarak adlandırın

  5. İçin Scope:seçinWorkbook

  6. Olarak Refers to:, formülü girin:

    =INDEX(!A1:!A2, 1)

  7. Tıkla OKve kapatName Manager

Bu, Excel'e her zaman geçerli hücrenin hemen solundaki değere bakmasını ve farklı hücreler seçildiğinde dinamik olarak değişmesini söyler. Ad tek başına kullanılırsa hücrenin değerini sağlar, ancak bir aralıkta başvuruyu kullanır. Fikir için hücre referansları hakkındaki bu yanıta kredi verin .


0

Bunun en kolay cevap olduğunu düşünüyorum.

Ofsete başvurmak için bir "Ad" kullanın.

Diyelim ki, bir sütunu (Sütun A), ancak toplamı tutan hücreye kadar toplamak istediğinizi (örneğin, Hücre A100); Bunu yap:

(Adı oluştururken A1 referansını kullandığınızı varsayıyorum; R1C1 daha sonra değiştirilebilir)

  1. Sayfada en üst satırda olmayan herhangi bir yere tıklayın - Hücre D9 deyin
  2. Adlandırılmış bir Aralık tanımlayın, "OneCellAbove" deyin, ancak "= D8" ile "RefersTo" kutusunun üzerine yazın (tırnak işareti olmadan)
  3. Şimdi, Cell A100'de formülü kullanabilirsiniz.
    = TOPLA (A1: OneCellAbove)

-1

Lütfen tüm sayfayı seçin ve GİRİŞ> Stiller - Koşullu Biçimlendirme, Yeni Kural ..., Hangi hücrelerin biçimlendirileceğini belirlemek için bir formül kullanın ve bu formülün doğru olduğu durumlarda değerleri biçimlendirin ::

=A1<>XFD1

Format..., biçimlendirme seçimini seçin OK,, OK.

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.