VBA Makronun Script karşılığı

Tevfik_Kursun

Altın Üye
Katılım
30 Temmuz 2012
Mesajlar
3,790
Excel Vers. ve Dili
Office 2016 Pro - Türkçe 64 Bit
Altın Üyelik Bitiş Tarihi
12-02-2029
Merhaba Arkadaşlar,
GoogleSheet te B20 den başlayan bir okul çalışması için ;
Kod:
Sub Boya()
    Dim x As Long, Son As Long, wf As WorksheetFunction
    Set wf = WorksheetFunction
    Son = Cells(Rows.Count, "C").End(3).Row
        For x = 20 To Son
            Cells(x, 2) = x - 19
        Next x

        For x = 20 To Son
            If Cells(x, 3) <> "" And Cells(x, 4) <> "" And Cells(x, 5) = "" Then
                Cells(x, 5).Interior.ColorIndex = 6
            End If
            If Cells(x, 3) <> "" And Cells(x, 4) <> "" And wf.CountIf(Range(Cells(20, 5), Cells(x, 5)), Cells(x, 5)) > 1 Then
                Cells(x, 5).Interior.ColorIndex = 3
            End If
            If Cells(x, 3) <> "" And Cells(x, 4) <> "" And Cells(x, 6) = "" Then
                Cells(x, 6).Interior.ColorIndex = 6
            End If
            If Cells(x, 3) <> "" And Cells(x, 4) <> "" And Cells(x, 9) = "" Then
                Cells(x, 9).Interior.ColorIndex = 6
            End If
            If Cells(x, 3) <> "" And Cells(x, 4) <> "" And Cells(x, 11) = "" Then
                Cells(x, 11).Interior.ColorIndex = 6
            End If
            If Cells(x, 3) <> "" And Cells(x, 4) <> "" And Cells(x, 12) = "" Then
                Cells(x, 12).Interior.ColorIndex = 6
            End If
        Next x
End Sub
bu makronun yerini tutacak scripte ihtiyacım var. Yardımcı olursanız sevinirim.
Saygılarımla
 
Katılım
20 Şubat 2012
Mesajlar
242
Excel Vers. ve Dili
office2007 Türkçe
Deneyin.

Kod:
function Boya() {
  var sheet = SpreadsheetApp.getActiveSpreadsheet().getActiveSheet(); // Aktif olan sayfada işlem
 // var sheet = SpreadsheetApp.getActive().getSheetByName('Sheet1') // Sayfa ismine göre
  var lastRow = sheet.getRange("C:C").getValues().flat().filter(String).length; // Dizindeki her bir satır için say (Son satır)
 
  console.log(sheet.getRange("C:C").getValues().flat().filter(String))

  for (var x = 20; x <= lastRow; x++) {
    sheet.getRange(x, 2).setValue(x - 19);

    if (sheet.getRange(x, 3).getValue() !== "" && sheet.getRange(x, 4).getValue() !== "" && sheet.getRange(x, 5).getValue() === "") {
      sheet.getRange(x, 5).setBackground("#FFFF00"); // Sarı
    }

    if (sheet.getRange(x, 3).getValue() !== "" && sheet.getRange(x, 4).getValue() !== "" && countIf(sheet.getRange(20, 5, x - 19, 1), sheet.getRange(x, 5).getValue()) > 1) {
      sheet.getRange(x, 5).setBackground("#FF0000"); // Kırmızı
    }

    if (sheet.getRange(x, 3).getValue() !== "" && sheet.getRange(x, 4).getValue() !== "" && sheet.getRange(x, 6).getValue() === "") {
      sheet.getRange(x, 6).setBackground("#FFFF00"); // Sarı
    }

    if (sheet.getRange(x, 3).getValue() !== "" && sheet.getRange(x, 4).getValue() !== "" && sheet.getRange(x, 9).getValue() === "") {
      sheet.getRange(x, 9).setBackground("#FFFF00"); // Sarı
    }

    if (sheet.getRange(x, 3).getValue() !== "" && sheet.getRange(x, 4).getValue() !== "" && sheet.getRange(x, 11).getValue() === "") {
      sheet.getRange(x, 11).setBackground("#FFFF00"); // Sarı
    }

    if (sheet.getRange(x, 3).getValue() !== "" && sheet.getRange(x, 4).getValue() !== "" && sheet.getRange(x, 12).getValue() === "") {
      sheet.getRange(x, 12).setBackground("#FFFF00"); // Sarı
    }
  }
}

// Eğersay fonksiyonu
function countIf(range, value) {
  var count = 0;
  var values = range.getValues().flat();
  for (var i = 0; i < values.length; i++) {
    if (values[i] === value) {
      count++;
    }
  }
  return count;
}
 

Tevfik_Kursun

Altın Üye
Katılım
30 Temmuz 2012
Mesajlar
3,790
Excel Vers. ve Dili
Office 2016 Pro - Türkçe 64 Bit
Altın Üyelik Bitiş Tarihi
12-02-2029
Sayın excelokyanus500 Hocam,
İlginize çok teşekkür ederim, dışarıdaydım, geç cevap verdiğim için özür dilerim. Scripti yerleştirmem gereken yere koydum ama bir türlü çalıştıramadım. Sebebini arıyorum. Çalışmamı yaparken kullandığım başka script çalışıyor. Nerede hata yaptım henüz anlayamadım.
Saygılarımla
 

veyselemre

Özel Üye
Katılım
9 Mart 2005
Mesajlar
3,646
Excel Vers. ve Dili
Pro Plus 2021
JavaScript:
function bosHucreleriRenklendir() {
  var sApp = SpreadsheetApp.getActive();
  var sheet = sApp.getSheetByName("Sheet1");
  var lastRow = sheet.getLastRow();
  var range = sheet.getRange("C" + lastRow);
  if (range.getValue() == "") {
    lastRow = range.getNextDataCell(SpreadsheetApp.Direction.UP).getRow();
  }
  const numbers = [5, 6, 9, 11, 12];
  for (var i = 20; i <= lastRow; i++) {
    sheet.getRange(i, 2).setValue(i - 19);
    if (sheet.getRange(i, 3).getValue() !== "" && sheet.getRange(i, 4).getValue() !== "") {
      numbers.forEach(elem => {
        if (!sheet.getRange(i, elem).getValue()) {
          sheet.getRange(i, elem).setBackground("#FFFF00")
        };
      })
      if (sheet.getRange(i, 5).getValue()) {
        var d = sheet.getRange(i, 5).getValue();
        if (i < lastRow) {
          for (var ii = i + 1; ii <= lastRow; ii++) {
            if ((sheet.getRange(ii, 3).getValue()  && sheet.getRange(ii, 4).getValue() ) && sheet.getRange(ii, 5).getValue()) {
              if (sheet.getRange(ii, 5).getBackground() == "#FF0000") { break; }
              if (sheet.getRange(ii, 5).getValue() == d) { sheet.getRange(ii, 5).setBackground("#FF0000") }
            }
          }
        }
      };
    }
  }
}
 
Son düzenleme:

Tevfik_Kursun

Altın Üye
Katılım
30 Temmuz 2012
Mesajlar
3,790
Excel Vers. ve Dili
Office 2016 Pro - Türkçe 64 Bit
Altın Üyelik Bitiş Tarihi
12-02-2029
Sayın Veysel Emre Hocam,
İlginize teşekkür ederim. resimdeki hata mesajı geldi
Saygılarımla
 

Ekli dosyalar

Tevfik_Kursun

Altın Üye
Katılım
30 Temmuz 2012
Mesajlar
3,790
Excel Vers. ve Dili
Office 2016 Pro - Türkçe 64 Bit
Altın Üyelik Bitiş Tarihi
12-02-2029
Şu anda devamlı çalışıyor, siz tetikliyorsunuz sanırım.
Çok teşekkür ederim Veysel Emre Hocam
Saygılarımla
 
Üst