• DİKKAT

    DOSYA İndirmek/Yüklemek için ÜCRETLİ ALTIN ÜYELİK Gereklidir!
    Altın Üyelik Hakkında Bilgi

VBA Makronun Script karşılığı

Tevfik_Kursun

Altın Üye
Katılım
30 Temmuz 2012
Mesajlar
3,902
Excel Vers. ve Dili
Office 2016 Pro - Türkçe 64 Bit
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
 
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;
}
 
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
 
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:
Sayın Veysel Emre Hocam,
İlginize teşekkür ederim. resimdeki hata mesajı geldi
Saygılarımla
 

Ekli dosyalar

  • Kontrol_01.png
    Kontrol_01.png
    46.4 KB · Görüntüleme: 7
Şu anda devamlı çalışıyor, siz tetikliyorsunuz sanırım.
Çok teşekkür ederim Veysel Emre Hocam
Saygılarımla
 
Geri
Üst