Koşullu biçimlendirmeyi, başka bir hücrenin değerine bağlı olan belirli bir hücreye nasıl ayarlayabilirim?


69

Benim örneğimde şartlı olarak B hücrelerini biçimlendirmek istiyorum. X ile işaretlenenler, A sütunundaki değere göre biçimlendirilmelidir (örnekte değer şudur 1):

A | B
1 | x
2 | 
3 | 
1 | x
1 | x
4 | 
8 |

// x can be any value and is here merely to mark the cell that should be formatted

ÖNEMLİ 2014 NOT : Google E-Tablolar’da başka hücreleri içerebilecek formüle dayalı koşullu biçimlendirme artık mümkündür ve Excel çalışma sayfalarının çalışma biçimine çok benzer şekilde çalışır. Bu cevap kullanımını açıklar.


3
Bu 2014 notunu eklediğinizden, lütfen onay işaretini modern yaklaşımı tanımlayan bir cevaba taşımayı da düşünün.

Yanıtlar:


50

Karmaşık koşullu biçimlendirme, Google Apps Komut Dosyası kullanılarak Google E-Tablolarda yapılabilir. Örneğin, tüm satırın arka plan rengini hücrelerinin birindeki değere göre değiştiren bir işlev yazabilirsiniz, "Kurallarla rengini değiştir" menüsüyle mümkün olmadığını düşündüğüm bir şey. Muhtemelen bu fonksiyon için "On Edit", "On Open" ve "On Form Submit" gibi tetikleyiciler ayarlamak istersiniz.

SetBackgroundRGB () işlevi için dokümantasyon

GÜNCELLEME: Burada, A sütunundaki değere göre tüm satırın arka plan rengini değiştirmeye yönelik bir Google Apps Komut Dosyası örneği verilmiştir . Değer pozitifse, yeşil kullanın. Boşsa, beyaz. Aksi takdirde, kırmızı Bu herkese açık Google E-Tablodaki sonuçlara bakın . (Komut dosyasının çalışması için oturum açmanız gerekir, ancak oturum açmadan sonuçları görebilirsiniz.)

function colorAll() {
  var sheet = SpreadsheetApp.getActiveSheet();
  var startRow = 2;
  var endRow = sheet.getLastRow();

  for (var r = startRow; r <= endRow; r++) {
    colorRow(r);
  }
}

function colorRow(r){
  var sheet = SpreadsheetApp.getActiveSheet();
  var dataRange = sheet.getRange(r, 1, 1, 3);

  var data = dataRange.getValues();
  var row = data[0];

  if(row[0] === ""){
    dataRange.setBackgroundRGB(255, 255, 255);
  }else if(row[0] > 0){
    dataRange.setBackgroundRGB(192, 255, 192);
  }else{
    dataRange.setBackgroundRGB(255, 192, 192);
  }

  SpreadsheetApp.flush(); 
}

function onEdit(event)
{
  var r = event.source.getActiveRange().getRowIndex();
  if (r >= 2) {
    colorRow(r);
  }
}

function onOpen(){
  colorAll();
}


13. satırda bir hata aldım: var dataRange = sheet.getRange (r, 1, 1, 3); Bu betiği, bir satırı belirli bir isme göre (örneğin, David) renklendirmek için kullanmak istersem, nasıl değiştiririm. Ve muhtemelen fontu arka plan yerine değiştirirdim: setFontColor Ayrıca, betiği elektronik tablomda nasıl çalıştırabilirim? Teşekkürler

2
Örneğe bağlantı artık geçerli değil. Bu betiği oluşturulduktan sonra nasıl kullanırsınız? Bu cevapta bu eksik.
Daniel Williams

3
Aşağıda, cevabımda açıklanan en yaygın kullanım durumları için daha basit bir seçenek var.
Sam Brightman

1
Google Elektronik Tablo bağlantısı ne yazık ki bozuldu. Komut dosyalarının nasıl kullanılacağı / etkinleştirileceği hakkında kısa bir açıklama olması güzel olurdu. Yine de sadece işe yarayan büyük cevap. :)
brimborium

19

Yeni Google E açıklandığı gibi, bunu yapmak için izin verir burada . Yeni e-tabloları önce makalede açıklandığı gibi Google Sürücü ayarlarınızda etkinleştirmeniz gerekir. Ardından koşullu biçimlendirme seçeneklerinden 'Özel formül' seçeneğini seçebilir ve herhangi bir formül girebilirsiniz ( =öneki eklemeyi unutmayın !). $Önekleri olmayan hücre başvuruları , beklediğiniz aralıklara uygulandığında otomatik olarak ayarlanır.

Eskiden yeniye göç için destek yok gibi görünüyor - sadece yeni sayfalar için geçerli ve sadece değerlerin birinden diğerine kopyalanabileceğini öğrendim. Bir sayfanın tamamını kopyalamak bir seçenek olabilir.


1
Bunu gösterdiğin için teşekkürler. Gerçekten istediğim gibi çalışıyor.
Robert Koritnik

Şu anda, eski e-tabloların çoğu yeni Google Sayfalarına taşınmıştır, bu nedenle geçiş desteği ile ilgili not eskidir.
Rubén

2

Temel koşullu biçimlendirme gereksinimlerinin çoğunu karşılamak için , bu web uygulamasını Color Code + 'u Apps-Script ile yazdım . Bazı kuralları attığınızda, AraçlarKomut Dosyası Düzenleyicisi ... altında e-tablonuza yapıştırabileceğiniz kodu dağıtır . ( İplik Yardım Google forumlarında.)


1

Google Hücrelerinin Koşullu biçim kuralları, iki hücrede toplamın 3. hücreden farklı olması durumunda koşullu olarak kırmızı arka planla biçimlendirmek istiyorsanız şöyle görünür:

Google Sheets koşullu biçim kurallarını tek renk ve özel formülle


0

Koşullu biçimlendirme - özel formül

range 2:227

= if($i:$i = "Duplicate",True,False)

satırın vurgulanmasını istediğiniz rengi seçin.


0

(Şubat 2017) Başka bir yanıtta belirtildiği gibi, Google Sayfalar artık ister masaüstü ister dizüstü bilgisayarda, Android veya iOS cihazlarında olsun, kullanıcıların Koşullu Biçimlendirme'yi doğrudan kullanıcı arayüzünden eklemelerine izin veriyor . Ancak, bu cevabın geri kalan kısmı öncelikle geliştiriciler içindir, çünkü uygulamaları "do" koşullu formatlama yazabilirsiniz.

Geliştiricilerin artık Google Sheets API v4 ile (ve daha yenisi), CRUD koşullu biçimlendirme kuralları olan uygulamaları yazmaları artık mümkün. Check out kılavuzu ve numuneler daha fazla ayrıntı için sayfaların yanı sıra referans dokümanlar (aramak {add,update,delete}ConditionalFormatRule). Kılavuz, bu Python kod parçasını içeriyor (bir dosya kimliğini varsayarak SHEET_IDve SHEETSAPI hizmeti bitiş noktası olarak kabul ediyor):

myRange = {
    'sheetId': 0,
    'startRowIndex': 1,
    'endRowIndex': 11,
    'startColumnIndex': 0,
    'endColumnIndex': 4,
}

reqs = [
    {'addConditionalFormatRule': {
        'index': 0,
        'rule': {
            'ranges': [ myRange ],
            'booleanRule': {
                'format': {'textFormat': {'foregroundColor': {'red': 0.8}}}
                'condition': {
                    'type': 'CUSTOM_FORMULA',
                    'values':
                        [{'userEnteredValue': '=GT($D2,median($D$2:$D$11))'}]
                },
            },
        },
    }},
    {'addConditionalFormatRule': {
        'index': 0,
        'rule': {
            'ranges': [ myRange ],
            'booleanRule': {
                'format': {
                    'backgroundColor': {'red': 1, 'green': 0.4, 'blue': 0.4}
                },
                'condition': {
                    'type': 'CUSTOM_FORMULA',
                    'values':
                        [{'userEnteredValue': '=LT($D2,median($D$2:$D$11))'}]
                },
            },
        },
    }},
]

SHEETS.spreadsheets().batchUpdate(spreadsheetId=SHEET_ID,
        body={'requests': reqs}).execute()

Python'a ek olarak, Google API'leri çeşitli dilleri desteklemektedir , bu nedenle seçenekleriniz vardır. Her neyse, bu kod örneği bir Sayfa formatlar (aşağıdaki resme bakın), ortanca yaştan daha genç olanların açık kırmızı renkle vurgulanırken, ortancadakilerin verileri kırmızı fontta renklidir.

Koşullu biçimlendirme örneği

NOT: Buradaki cevabım, bu soru için SO ile birebir aynıdır, ancak> 1 yerde yaşamak zorunda olmadığı için PSA'yı düşürdüm.


SO sorusunun cevabında da bu sorunun birkaç cevabı var. Bu cevapların kastettiği "Başka Cevap" nedir? (: Diğer taraftan, bu siteye gelen insanlar kod yazarken, çoğunun bunu özel işlevler / kullanıcı tanımlı işlevler gibi "son kullanıcı gelişimi" olarak yaptıklarını düşünüyorum. CRUDbirçoğu tarafından bilinir ve bu cevabın içerdiği tüm ek detayları yararlı bulabilirler
Rubén

0

Q'nun özelliklerini 'yeni' Sayfalarda ele almak için, koşullu biçimlendirmeyi B: B'den temizlemenizi, Sütun B'yi seçmenizi ve Özel bir formül uygulamanızı öneririm :

=A1=1

seçim biçimlendirme ile ve Done.


0

Koşullu biçimlendirmeyi düzenlerken, Özel formül'ü seçin ve aşağıdakileri kullanın ...

=if(A1 = 1 , true)

Renklerinizi seçin ve bitirdiniz.


-1

Sorunun açıklamasına yanıt olarak düzenleyin:

Google Elektronik Tablo pencerenizde, "Kurallarla rengini değiştir" seçeneğine sahip bir Biçim menüsü vardır. Bu, Google Spreadsheet’in koşullu biçimlendirmesi kadar teknik. Söyleyebileceğim kadarıyla, bir hücreyi diğerinin değerine göre renklendirmenin yolu yok - Google, diğer hücreler için formül girmenize izin vermiyor.

B sütununa başka veriler koymadığınız sürece, B sütununu her zaman A sütununa eşit hale getirebilir ve ardından tüm hücreleri benzer renklerle 1 değerine sahip renklendirmek için "kuralları olan rengi değiştir" seçeneğini kullanabilirsiniz. değer 1 olduğunda kırmızı arka plan ve kırmızı metin, olmadığında beyaz arka plan ve beyaz metin, B sütununda değeri etkin bir şekilde gizler. Bu size istediğiniz görünümü verir.

Excel'de ne istersen yapabilirsin . Verilerinizi örnek olarak kullanarak, bu formül doğru olduğunda B1'i koşullu olarak biçimlendirdim:

=IF(A1=1,true,false)

ve sonra yalnızca B'deki hücrelerin A değerinin 1'e eşit olduğu bir komşu olduğu bölgeleri vurgulayan formatı aşağı sürükleyin.

Excel yapabilir, ancak Google’ı yapamaz


Orijinal cevap

Bunu 2 sütunda yapıp yapamayacağınızdan emin değilim, ancak 3'te yapabileceğinizi biliyorum:

 A  |  B  |  C
----------------
 1  |  f  |  x

B sütununda, IFx'in uygun C sütununa yerleştirilip yerleştirilmediğini görmek için formülü kullanabilirsiniz :

=IF(C1="x",A1,"") 

IFTesti, - Formül 3 parçadan oluşmaktadır sonra değer ve başka bir değer. Yukarıdaki örnekte, formül xC sütununda bir var olup olmadığını kontrol eder . Varsa, A1'den bir değer girer, aksi takdirde boşluğa girer. Büyük xveya küçük harf olması önemli değil.

Bu formülü listenizin en üstüne girdiğinizde, formülü listenizin geri kalan kısmı için aşağı sürüklemek için sürükleme özelliğini kullanabilirsiniz. Hücre mavi renkle vurgulandığında, imleç artı işareti haline gelene kadar farenizi sağ alt köşedeki karenin üzerine getirin. Sonra formülü aşağıdaki hücrelere kopyalamak için aşağı sürüklerken tıklayıp basılı tutun.


1
Sanırım beni yanlış anladın. Soru, koşullu biçimlendirme ile hücrelere değer yerleştirilmemesidir.
Robert Koritnik

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.