Google Sheet sütunda belirli renkleri sayma

Katılım
29 Ocak 2024
Mesajlar
133
Excel Vers. ve Dili
Office 2016
Kıymetli Hocalarım iyi akşamlar

Google Tabloda, A4 hücresinde yer alan rengin (Sarı) aynısından;
"E" sütununda kaç adet olduğunu saymak için aşağıdaki kodu oluşturdum ama; "0" sonucunu veriyor, yalnız "E" sütununda aynı renkten çok fazla mevcut

burada nasıl bir çözüm yolu önerirsiniz, yardımlarınız için şimdiden teşekkür ederim.
Kod:
function colorField() {
  var count = colorPerception('A4')
  Browser.msgBox(count, Browser.Buttons.OK);
}
function colorPerception(cell) {
  var ss = SpreadsheetApp.getActive();
  var sheet = ss.getSheetByName('saha durumu');
  var rng = sheet.getRange(cell)
  const colour = rng.getBackgrounds();
  var count = 0
  var lastD = sheet.getLastRow() + 1;
  for (var i = 10; i < lastD; i++) {
    var rng2 = sheet.getRange('E' + i)
    var shade = rng2.getBackgrounds();
    if (shade === colour) {
      count++;
    }
  }
  return count;
}
Selamlar, Saygılar.
 

tamer42

Destek Ekibi
Destek Ekibi
Katılım
11 Mart 2005
Mesajlar
3,102
Excel Vers. ve Dili
Office 2013 İngilizce
Kıymetli Hocalarım iyi akşamlar

Google Tabloda, A4 hücresinde yer alan rengin (Sarı) aynısından;
"E" sütununda kaç adet olduğunu saymak için aşağıdaki kodu oluşturdum ama; "0" sonucunu veriyor, yalnız "E" sütununda aynı renkten çok fazla mevcut

burada nasıl bir çözüm yolu önerirsiniz, yardımlarınız için şimdiden teşekkür ederim.
Kod:
function colorField() {
  var count = colorPerception('A4')
  Browser.msgBox(count, Browser.Buttons.OK);
}
function colorPerception(cell) {
  var ss = SpreadsheetApp.getActive();
  var sheet = ss.getSheetByName('saha durumu');
  var rng = sheet.getRange(cell)
  const colour = rng.getBackgrounds();
  var count = 0
  var lastD = sheet.getLastRow() + 1;
  for (var i = 10; i < lastD; i++) {
    var rng2 = sheet.getRange('E' + i)
    var shade = rng2.getBackgrounds();
    if (shade === colour) {
      count++;
    }
  }
  return count;
}
Selamlar, Saygılar.
bu şekilde dener misiniz.

if (shade + '' === colour + '' ) {
 

veyselemre

Özel Üye
Katılım
9 Mart 2005
Mesajlar
3,652
Excel Vers. ve Dili
Pro Plus 2021
JavaScript:
function colorField() {
  var count = colorPerception('A4')
  Browser.msgBox(count, Browser.Buttons.OK);
}
function colorPerception(cell) {
  var ss = SpreadsheetApp.getActive();
  var sheet = ss.getSheetByName('saha durumu');
  var rng = sheet.getRange('A4')
  var targetColor = rng.getBackground();
  var colors = sheet.getRange('E10:E').getBackgrounds();
  var colorFiltered = colors.flat().filter(function (color) {
    return color == targetColor;
  });
  return colorFiltered.length;
}
 
Katılım
29 Ocak 2024
Mesajlar
133
Excel Vers. ve Dili
Office 2016
JavaScript:
function colorField() {
  var count = colorPerception('A4')
  Browser.msgBox(count, Browser.Buttons.OK);
}
function colorPerception(cell) {
  var ss = SpreadsheetApp.getActive();
  var sheet = ss.getSheetByName('saha durumu');
  var rng = sheet.getRange('A4')
  var targetColor = rng.getBackground();
  var colors = sheet.getRange('E10:E').getBackgrounds();
  var colorFiltered = colors.flat().filter(function (color) {
    return color == targetColor;
  });
  return colorFiltered.length;
}
Veysel Hocam öncelike yardımlarınız için teşekkürler,
colorPerception fonksiyonun sonucunu doğrudan sayfada bir hücreye sayım sonucunu almak için;
hedef hücreye = colorPerception("A4") şeklinde formül yazınca sayım sonucunu getirmekte, bir sıkıtı bulunmuyor..
öğrenmek istediğim bu formül içeriğinde "A4" yazmak yerine normal formüllerde oduğu gibi referans hücre' yi seçince formül çalışsın isteyince;
= colorPerception(A4) şeklinde oluşuyor ve sonuç olarak hata veriyor.

özetle kod içinde Rng tanımlayı; doğrudan sayfa üzerinden belirtilebilir miyiz? bu durum olmazsa cell değişkenini sayfa üzerinden hücre seçmekle yapılamaz mı?

Kod:
 var rng = sheet.getRange('A4')

derdimi sanırım anlatabilmişimdir.
Selamlar, Saygılar.
 

veyselemre

Özel Üye
Katılım
9 Mart 2005
Mesajlar
3,652
Excel Vers. ve Dili
Pro Plus 2021
chatGPT >
Doğrudan Hücre Başvurusu İle İlgili Kısıtlama:
Google Sheets'te doğrudan hücre objesi geçmek mümkün değildir çünkü özel fonksiyonlar Google Apps Script ile yazıldığında, bu fonksiyonlar doğrudan hücrelere değil, hücre adreslerine başvurur.

Sonuç:
Google Sheets'teki özel fonksiyonlarla, hücreyi doğrudan parametre olarak geçmek mümkün değildir, ancak hücrenin adresini string olarak geçerek fonksiyonu çalıştırabilirsiniz. Yani, hücreyi metin olarak "A4" şeklinde geçirmeniz gerekecektir.


Ayrıca üstteki fonksiyonda cell refaransı hiç kullanılmamış, kodda string olarak başvuru yapılmış.

var rng = sheet.getRange('A4') //hatalı
var rng = sheet.getRange(cell); //doğrusu

JavaScript:
function colorPerception(cell) {
  var ss = SpreadsheetApp.getActive();
  var sheet = ss.getSheetByName('saha durumu');
  var rng = sheet.getRange(cell);
  var targetColor = rng.getBackground();
  var colors = sheet.getRange('E10:E').getBackgrounds();
  var colorFiltered = colors.flat().filter(function (color) {
    return color == targetColor;
  });
  return colorFiltered.length;
}
 
Katılım
29 Ocak 2024
Mesajlar
133
Excel Vers. ve Dili
Office 2016
chatGPT >
Doğrudan Hücre Başvurusu İle İlgili Kısıtlama:
Google Sheets'te doğrudan hücre objesi geçmek mümkün değildir çünkü özel fonksiyonlar Google Apps Script ile yazıldığında, bu fonksiyonlar doğrudan hücrelere değil, hücre adreslerine başvurur.

Sonuç:
Google Sheets'teki özel fonksiyonlarla, hücreyi doğrudan parametre olarak geçmek mümkün değildir, ancak hücrenin adresini string olarak geçerek fonksiyonu çalıştırabilirsiniz. Yani, hücreyi metin olarak "A4" şeklinde geçirmeniz gerekecektir.


Ayrıca üstteki fonksiyonda cell refaransı hiç kullanılmamış, kodda string olarak başvuru yapılmış.

var rng = sheet.getRange('A4') //hatalı
var rng = sheet.getRange(cell); //doğrusu

JavaScript:
function colorPerception(cell) {
  var ss = SpreadsheetApp.getActive();
  var sheet = ss.getSheetByName('saha durumu');
  var rng = sheet.getRange(cell);
  var targetColor = rng.getBackground();
  var colors = sheet.getRange('E10:E').getBackgrounds();
  var colorFiltered = colors.flat().filter(function (color) {
    return color == targetColor;
  });
  return colorFiltered.length;
}
Bilgilendirme için çok teşekkür ederim Veysel Hocam
 
Üst