Google Sheet dikey tabloyu yatay hale getirme

tamer42

Destek Ekibi
Destek Ekibi
Katılım
11 Mart 2005
Mesajlar
3,102
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

muhasebeciyiz

Altın Üye
Katılım
10 Şubat 2006
Mesajlar
687
Excel Vers. ve Dili
Office 2016
64 Bit
Altın Üyelik Bitiş Tarihi
21-12-2027
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:

tamer42

Destek Ekibi
Destek Ekibi
Katılım
11 Mart 2005
Mesajlar
3,102
Excel Vers. ve Dili
Office 2013 İngilizce
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

muhasebeciyiz

Altın Üye
Katılım
10 Şubat 2006
Mesajlar
687
Excel Vers. ve Dili
Office 2016
64 Bit
Altın Üyelik Bitiş Tarihi
21-12-2027
Kodu güncelledim bakabilirmisiniz.
 
Üst