• DİKKAT

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

Google Sheet dikey tabloyu yatay hale getirme

  • Konbuyu başlatan Konbuyu başlatan tamer42
  • Başlangıç tarihi Başlangıç tarihi

tamer42

Destek Ekibi
Destek Ekibi
Katılım
11 Mart 2005
Mesajlar
3,201
Excel Vers. ve Dili
Office 2013 İngilizce
Merhabalar,

Google Sheet tablosunda;

Ekte,
- "Kaynak" olarak belirtilmiş formatta ekran görüntüsü: Kaynak adındaki sayfa bulunmakta;
- "Hedef" olarak belirtilmiş formatta ekran görüntüsü: Hedef adındaki sayfa bulunmakta;

Kaynak sayfasında "A" sütunu: Birleştirilmiş hücrede Test adları, "B" sütunu Kontrol No, "C" sütunu ise Kontrolden geçti yada kaldı olarak onay kutusu bulunmakta;

yapmak istediğim; Kaynak sayfasındaki verilere göre; Hedef sayfasına özet bilgi aktarmak,

bunun için aşağıdaki gibi bir bir script kodu hazırlamaya başladım, fakat devamını getirmedim,

yardımcı olursanız sevinirim.

iyi akşamlar.

Kod:
function myFunction() {
  var ss = SpreadsheetApp.getActive();
  var sourceSheet = ss.getSheetByName('Kaynak');
  var targetSheet = ss.getSheetByName('Hedef');

  const arrData = sourceSheet.getRange('B:B').getValues();
  var lastA = arrData.map(x => x[0]).indexOf('') + 1;
  var lastB = sourceSheet.getLastRow() + 1;
  var data = sourceSheet.getRange('A2:C' + lastB).getValues()
  var number = 0
  //
  for (var i = 0; i < data.length; i++) {
    if (data[i][0] && data[i][1].toString().trim() != '') {
      if (data[i][2] = true) {
         number = data[i][1] 

         
      }
    }
  }

}
 

Ekli dosyalar

  • Kaynak.jpg
    Kaynak.jpg
    46 KB · Görüntüleme: 6
  • Hedef.jpg
    Hedef.jpg
    47.3 KB · Görüntüleme: 6
Kod:
function myFunction() {
  var ss = SpreadsheetApp.getActive();
  var sourceSheet = ss.getSheetByName('Kaynak');
  var targetSheet = ss.getSheetByName('Hedef');  
 
  const arrData = sourceSheet.getRange('A2:C' + sourceSheet.getLastRow()).getValues();   

  targetSheet.clear();  
  
  targetSheet.getRange('A1').setValue('Test Adı');
  targetSheet.getRange('B1').setValue('Kontrol No');
  targetSheet.getRange('C1').setValue('Sonuç');
  
  var targetRow = 2; 
  
  for (var i = 0; i < arrData.length; i++) {
    var testName = arrData[i][0];
    var controlNumber = arrData[i][1];
    var passed = arrData[i][2];
    
    if (testName && controlNumber !== null && controlNumber !== '') {
      var result = passed ? 'Geçti' : 'Kaldı';
      
      targetSheet.getRange(targetRow, 1).setValue(testName);
      targetSheet.getRange(targetRow, 2).setValue(controlNumber);
      targetSheet.getRange(targetRow, 3).setValue(result);
      targetRow++;
    }
  }  
  
  var dataRange = targetSheet.getRange(2, 1, targetRow - 2, 3);
  var transposedData = transposeArray(dataRange.getValues());
  targetSheet.getRange(1, 4, transposedData.length, transposedData[0].length).setValues(transposedData);
}

function transposeArray(array) {
  var transposedArray = [];
  for (var i = 0; i < array[0].length; i++) {
    transposedArray.push([]);
  }
  for (var i = 0; i < array.length; i++) {
    for (var j = 0; j < array[i].length; j++) {
      transposedArray[j].push(array[i][j]);
    }
  }
  return transposedArray;
}

Google Sheets'deki "Kaynak" sayfasındaki verileri "Hedef" sayfasına özet olarak aktarmak ve dikey tabloyu yatay hale getirmek istiyorsunuz. Belirttiğiniz gibi, "Kaynak" sayfasında, Test adları, Kontrol No ve sonuçlar var. Onay kutusu ise Kontrol No'nun geçip geçmediğini belirtiyor.

Bu kod, verileri "Kaynak" sayfasından alarak "Hedef" sayfasına aktarır ve ardından bu verileri yatay hale getirir. transposeArray fonksiyonu, verileri dikeyden yataya çevirmek için kullanılır. Hedef sayfanın D sütunundan itibaren verileri yatay olarak görebilmelisiniz.
 
Son düzenleme:
Kod:
function myFunction() {
  var ss = SpreadsheetApp.getActive();
  var sourceSheet = ss.getSheetByName('Kaynak');
  var targetSheet = ss.getSheetByName('Hedef');

  const arrData = sourceSheet.getRange('A2:C' + sourceSheet.getLastRow()).getValues();

  targetSheet.clear();

  targetSheet.getRange('A1').setValue('Test Adı');
  targetSheet.getRange('B1').setValue('Kontrol No');
  targetSheet.getRange('C1').setValue('Sonuç');

  var targetRow = 2;

  for (var i = 0; i < arrData.length; i++) {
    var testName = arrData[i][0];
    var controlNumber = arrData[i][1];
    var passed = arrData[i][2];

    if (testName && controlNumber !== null && controlNumber !== '') {
      var result = passed ? 'Geçti' : 'Kaldı';

      targetSheet.getRange(targetRow, 1).setValue(testName);
      targetSheet.getRange(targetRow, 2).setValue(controlNumber);
      targetSheet.getRange(targetRow, 3).setValue(result);
      targetRow++;
    }
  }
}

Hocam denermisiniz
Hocam öncelikle ilginize teşekkürler,
Ekli görsedeki gibi sonuç verdi,
Benim ekli Hedef adındaki ekran görüntüsünde olduğu biçimdeki gibi,
1,2,3,4,5,6 nolu testlerin hepsinin sonuçlarını "geçti", "kaldı" şeklinde yazması
 

Ekli dosyalar

  • 345.jpg
    345.jpg
    21.4 KB · Görüntüleme: 2
  • Hedef.jpg
    Hedef.jpg
    47.3 KB · Görüntüleme: 2
Kodu güncelledim bakabilirmisiniz.
 
Geri
Üst