Satır eklerken / silerken Excel formülünün değişmesini durdurma


5

Kişisel bütçem için bir bütçe çalışma kitabı hazırlamaya çalışıyorum, toplamda 13 sayfa, her ay için diğer 12 sayfa. Hayatım boyunca, aylık sayfalardan birine satır eklerken neden formüllerimin değiştiğini çözemiyorum. İşte sahip olduğum formüllerden birine bir örnek:

=SUMIF(JUN!$G$2:$G$500,"Utilities", JUN!$D$2:$D$500)

Bir sayfanın en üstüne bir satır eklersem, hesaplamaları fırlatıp ikiyi üçe çıkarır. Formülün değişmesini engellememin bir yolu var mı? İnanılmaz derecede sinir bozucu.


1
Kullanırsanız ne olur =SUMIF(JUN!$G$1:$G$500,"Utilities", JUN!$D$1:$D$500)? Tahminen satır 1farkı girebilirsiniz başlıkları ve böylece tarafından asla kullanılmayacaktır SUMIFve daha sonra satırları arasında bir satır eklerseniz 1ve 2hala iyi olacak formülü
cybernetic.nomad

@ cybernetic.nomad Sana ne olacağını söyleyeceğim. Sadece işe yarayacak! ;-) büyü gibi (elbette, başlık, sürece G1olan Utilitiesve başlık D1. Bir sayıdır Hangi durumda size :-D hak şeyi alırsınız)
robinCTS

@ cybernetic.nomad Bu benim için çalıştı ve benim durumumdaki en kolay çözüm oldu. Hala 500'lük artışlarla değişiyor, ama her neyse, keyfi bir neyse
Mike

Yanıtlar:


6

Anlamanız gereken şey, tarafından belirtilen mutlak referansların $mutlaklığının kesinlikle mutlak olmadığıdır ;-)

Şimdi bu dil twister'ın dışına çıktı, açıklamama izin ver.

Mutlaklık, yalnızca formülü kopyalayıp yapıştırırken veya doldururken geçerlidir. Kesinlikle başvurulan bir aralığın üstüne satır veya sola sütun ekleme, aralığın adresini "aralıklandırır", böylece aralığın işaret ettiği veriler aynı kalır.

Ek olarak, aralığın ortasına satır veya sütun eklemek , yeni satırları / sütunları kapsayacak şekilde genişletecektir. Bu nedenle, bir aralığa (tablo) veri satırı eklemek için ilk veri satırından sonra eklemeniz gerekir .

Geçerli veri aralığının üstünde bir veri satırı eklenmesine izin vermenin en basit yolu, her zaman bir başlık satırına sahip olmak ve başlık satırını gerçek aralığa dahil etmektir. Bu, tam olarak cybernetic.nomad tarafından bu yorumda önerilen çözümdür .


Ancak , hala bir sorun daha var ve bu tablonun sonundan sonra bir satır veri ekliyor . Sadece yeni verileri, satırdaki son veri satırından sonra yazmak işe yaramaz. Son satırdan sonraki satırdan önce bir satır eklemek de mümkün değildir .

Bunun için en basit çözüm, özel bir "son" satır kullanmak, veri satırına bu satırı dahil etmek ve her zaman bu özel satırdan önce ekleyerek her zaman yeni satırlar eklemektir .

Genellikle satır yüksekliğini azaltır ve hücreleri uygun bir renkle doldururum:

Çalışma Sayfası Ekran Görüntüsü

Örneğin, tam "basit" formül bu şekilde olacaktır:

=SUMIF(JUN!$G$1:$G$501,"Utilities",JUN!$H$1:$H$501)


Aynı hedefe ulaşmak için başka bir yol, tablodaki veri miktarını otomatik ayarlayan dinamik bir formül kullanmaktır. Kesin koşullara ve kesin olarak masaya ne yapılması gerektiğine bağlı olarak, bunun birkaç farklı varyasyonu vardır.

Normalde olduğu gibi (örneğin, örneğin), tablo çalışma sayfasının en üstünde başlarsa, bir satır başlığına sahipse ve veriler boşluksuz olarak bitişikse, basit bir dinamik formül şöyle olacaktır:

=SUMIF(INDEX(JUN!$G:$G,2):INDEX(JUN!$G:$G,COUNTA(JUN!$G:$G)),"Utilities",INDEX(JUN!$H:$H,2):INDEX(JUN!$H:$H,COUNTA(JUN!$G:$G)))

Bu kullanarak daha iyi bir çözüm INDIRECT()olarak

  1. Uçucu değildir ve bu nedenle çalışma sayfası daha hızlı hesaplar ve
  2. Tablonun soluna sütun eklerseniz kırılmaz.

Dinamik formül tekniği, Adlandırılmış Formülde kullanılarak daha da geliştirilebilir .



Tabii ki, en iyi çözüm, masayı uygun bir masaya dönüştürmek ve yapılandırılmış referansları kullanmaktır .


2

Yani, yeni bir Satır 2 eklerseniz (şu andaki Satır 1 ile Satır 2 arasında), formülün yeni Satır 2'ye bakmasını mı istiyorsunuz? İşte birkaç varyasyon:

=SUMIF(INDIRECT("JUN!$G$2:$G$500"),"Utilities", INDIRECT("JUN!$D$2:$D$500"))

Ekler (veya silme) tarafından yeniden numaralandırılan satırlar dikkate alınmaksızın her zaman Satır 2'den 500'e bakacaktır. Bu, bir satır eklerseniz, orijinal Satır 500'ün 501 olarak yeniden numaralandırılacağı ve aralık dışına çıkarılacağı anlamına gelir. Geçerli Satır 2’ye orijinal Satır 500’le bakmak istiyorsanız,

=SUMIF(INDIRECT("JUN!$G$2"):JUN!$G$500,"Utilities", INDIRECT("JUN!$D$2"):JUN!$D$500)

Belli olmadığı durumda, INDIRECT()bir string (text) argümanı alır ve onu bir adres olarak yorumlar. Değişmez adresleme yapmanızı sağlar, çünkü diğer adresler satır / sütun ekleme / silme nedeniyle ayarlandığında dizeler (adreslere benzeyen) ayarlanmaz.

Not $adres dizeleri karakterler isteğe bağlıdır; hiçbir etkisi yoktur.

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.