• DİKKAT

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

Soru Google e-tablo ya makro ekleme

Katılım
19 Ekim 2022
Mesajlar
33
Excel Vers. ve Dili
vba
merhaba
işyeri için hazırladığımız bir e tablo da makro kullanmak istiyoruz makro şu şekilde çalışacak
sheet1 de 7. satırdan aşağıya dolu olan satırları SAVE butonu sayesinde sheet2 sayfasına çekebilicez mümkün mü acaba
 
Bunun için script hazırlamaya gerek yok, formülle yapılır.

.
 
Destek alabilir miyim peki nasıl yapabiliriz örnek doya eklesem yardım olabilir misiniz ?
 
Google tabloyu paylasima acip, linki buraya yazin.

Musait bir zamanda bakarim, su anda disaridayim.

.
 

Bu datanın bir kopyası biraz denedim ama malesef başaramadım destek olursanız çok sevinirim.
 
Aşağıdaki script işinizi görür;

JavaScript:
function transferData() {
  var ss       = SpreadsheetApp.getActive();
  var sourceSh = ss.getSheetByName('Tablo');
  var targetSh = ss.getSheetByName('Operasyon Data');
 
  var data     = sourceSh.getRange("A7:R").getValues().filter(array => array[0] != ''); 
  var dataRow  = data.length ;
  var lastRow  = targetSh.getLastRow() + 1;
  targetSh.getRange('A'+ lastRow + ':R' + (lastRow + dataRow - 1)).setValues(data);
  sourceSh.getRange("A7:K").setValue('');
};


.
 
Son düzenleme:
Selamlar script çalışıyor fakat tablo sayfasından satırları kopyalarken formülleri de kopyalayıp siliyor taşıma işlemi tamamlandıktan sonra sayfadaki formüllerde silinmiş oluyor bunu engelleyebilir miyiz ?
tablo sayfasında L ile R sutünları arasında formül bulunmakta bu formülleri silmemesi gerekiyor
 
6. mesajdaki script'i revize ettim. Onu kullanabilirsiniz....

.
 
Son düzenleme:
Haluk selam çok teşekkür ederim desteğin için son bir sorum olucak kopyalamayı yaptığımız operasyon data sayfasında s sütununda formül var script en alta atmaya komutlandığı için s sütununda ki formülün bittiği satıra taşıyor verileri s sütununu devre dışı bırakma şansımız var mı ?
kopyalama işlemini A dan R sütununa 7. satırdan başlayarak alt alta sıralaması mümkün mü ?
 
Hmmmm..... o zaman aşağıdaki revize edilmiş script'i deneyin, sonuçtan haber verirsiniz....

JavaScript:
function transferData() {
  var ss       = SpreadsheetApp.getActive();
  var sourceSh = ss.getSheetByName('Tablo');
  var targetSh = ss.getSheetByName('Operasyon Data');
 
  var dataRange     = sourceSh.getRange('A7:R').getValues()
  var data          = dataRange.filter(array1 => array1[0] != ''); 
  var dataRow       = data.length;
 
  arrTargetData     = targetSh.getRange('A7:A').getValues(); 
  var targetLastRow = arrTargetData.map(array2 => array2[0]).indexOf('') + 7;
  targetSh.getRange('A'+ targetLastRow + ':R' + (targetLastRow + dataRow - 1)).setValues(data);

  sourceSh.getRange('A7:K').setValue('');
}


.
 
Son düzenleme:
Efsanesin dostum komut güzel çalıştı ben komuta buton ekledim ekstra olarak ama bu butonu kullanabilecek kişileri filtre atabilirmiyim bir nevi hücre koruma mantığı
 
O tür işler Google Sheets'de çok kolay değil...... Zaten, sonuçta bir başkası açıp script'i incelerse kendine göre korumayı kaldırabilir. Gerçi script'i dosyaya yazmayıp, "remote" bilgisayardan script file ile çalıştırarak ona da çözüm bulunur ama siz şimdilik böyle idare edersiniz....

.
 
Tamamdır çok teşekkür ederim tekrar desteğin için fazlasıyla yardımcı oldun..)
 
Haluk bir sorum daha olucak;
biz tablo kısmını komple kopyalamasını istiyoruz ya bunu sadece çıkış saati(F Sütunu) dolu olan satırları kopyalayacak şekilde revize edebilir miyiz ?
15 satır doludur ama sadece 8 tane satırda Çıkış Saati yazıyodur ben bu 8 satırı kopyalamak istesem
 
Script'te aşağıdaki satırı;

JavaScript:
 var data          = dataRange.filter(array1 => array1[0] != '');


bununla değiştirin;
JavaScript:
 var data          = dataRange.filter(array1 => array1[5] != '');


.
 
Bunu denedim F sütunu dolu olanları aktarıyor fakat kopyaladığı sayfadan Tüm sayfayı temizliyor sadece f sütunu dolu olanları kopyalayıp onları silmesi gerekiyor
 
Bunu soracağınızı tahmin etmiştim..... Aşağıdaki revize edilmiş script'i deneyin.

"Tablo" sayfasında "F" sütunu dolu olan satırları diğer sayfaya alır, boş olan satırlar ise arada boşluk olmayacak şekilde "Tablo" sayfasında tekrar listelenir.

JavaScript:
function transferData() {
  var ss       = SpreadsheetApp.getActive();
  var sourceSh = ss.getSheetByName('Tablo');
  var targetSh = ss.getSheetByName('Operasyon Data');

  var dataRange     = sourceSh.getRange('A7:R').getValues();
  var data          = dataRange.filter(array1 => array1[5] != '');
  var dataRow       = data.length;

  arrTargetData     = targetSh.getRange('A7:A').getValues();
  var targetLastRow = arrTargetData.map(array2 => array2[0]).indexOf('') + 7;
  targetSh.getRange('A'+ targetLastRow + ':R' + (targetLastRow + dataRow - 1)).setValues(data);

  var newData    = sourceSh.getRange('A7:K').getValues();
  var colNum     = 5;
  var targetData = new Array();

  for(n=0; n<newData.length; ++n) {
    if(newData[n][colNum] == ''){
      targetData.push(newData[n])
      }
  }
  sourceSh.getRange('A7:K').setValue('');
  sourceSh.getRange(7,1,targetData.length,targetData[0].length).setValues(targetData);
}

.
 
Son düzenleme:
17 No'lu mesajdaki script'i revize ettim, tekrar deneyin....

.
 
Arda Bey;

Sorun çözüldü mü, bir haber verseydiniz...

.
 
Geri
Üst