अंतिम पंक्ति से स्वचालित रूप से एक नई पंक्ति कैसे डालें और फ़ंक्शन / फ़ार्मुलों को कैसे बनाए रखें?


24

मेरे पास एक तालिका है जिसमें ऐसे कार्य / सूत्र हैं, जैसे यह:

यहां छवि विवरण दर्ज करें

मुझे एक स्क्रिप्ट की आवश्यकता है जो एक नई पंक्ति बनाता है, इसके साथ अंतिम उपयोग की गई पंक्ति के कार्य / सूत्र की नकल करता है। मुझे यह स्क्रिप्ट मिली जो एक नई पंक्ति बनाती है लेकिन यह फ़ंक्शन / फ़ार्मुलों की प्रतिलिपि नहीं बनाती है । मैं मैन्युअल रूप से चयन और कॉपी किए बिना Google Apps स्क्रिप्ट में इस स्वरूपण प्रतिलिपि कार्य को कैसे लागू कर सकता हूं?


अगर मेरी पिछली पंक्ति का फॉर्मूला = HTTPResponse (C4) है तो मैं उसी सूत्र को कैसे कॉपी कर सकता हूं लेकिन नई पंक्ति के लिए नया सेल नंबर?
user1788736 28

जवाबों:


20

सामान्य मानों के सूत्र की प्रतिलिपि बनाने के लिए नीचे दिए गए कोड का उपयोग करें। स्प्रैडशीट मेनू से टूल का चयन करके कोड जोड़ें। फिर स्क्रिप्ट एडिटर चुनें और कोड जोड़ें। "बग" बटन दबाएं और स्क्रिप्ट को प्रमाणित करें।

कोड

// global 
var ss = SpreadsheetApp.getActive();

function onOpen() {
  var menu = [{name:"Add New Last Row", functionName:"addRow"}];
  ss.addMenu("Extra", menu);
}

function addRow() {
  var sh = ss.getActiveSheet(), lRow = sh.getLastRow(); 
  var lCol = sh.getLastColumn(), range = sh.getRange(lRow,1,1,lCol);
  sh.insertRowsAfter(lRow, 1);
  range.copyTo(sh.getRange(lRow+1, 1, 1, lCol), {contentsOnly:false});
}

टिप्पणी

सामग्री को सेट करने falseसे मानक प्रति प्राप्त होगी। इसे सेट करना true, केवल मूल्यों को चिपकाएगा। आपके द्वारा पाया गया उदाहरण स्क्रिप्ट, मानों को चिपकाने का अधिक तरीका है .....

उदाहरण

मैंने आपके लिए एक उदाहरण फ़ाइल बनाई है: फॉर्मूला के साथ पंक्ति जोड़ें


3

यह ArrayFormula केवल एक स्क्रिप्ट को शामिल किए बिना ही कर सकता है। इसे डी 4 में दर्ज करें, और इसे नीचे की खाली कोशिकाओं की किसी भी मात्रा में स्वचालित रूप से ले जाया जाएगा।

ArrayFormula(vlookup(B4:B:tax_table!$A$2:$G$8;3;true))

नोट: "बी 4: बी" का अर्थ है, कॉलम के अंत तक बी 4 से शुरू होने वाली सभी कोशिकाओं को देखें।

जबकि, ArrayFormula इसके नीचे की कोशिकाओं में खुद को कॉपी करने का ध्यान रखता है। बस यह सुनिश्चित करें कि इसके नीचे की कोशिकाएँ खाली हैं।


3

यदि आपको शीर्ष (पहली पंक्ति) पर एक नई पंक्ति जोड़ने और पहली शीर्ष पंक्ति से सूत्र को कॉपी करने की आवश्यकता है तो आपको उपयोग करने getFormulas()और setFormulas()कार्यों के लिए सूत्रों की प्रतिलिपि बनाने की आवश्यकता होगी । firstRowयदि आपकी स्प्रेडशीट में उदाहरण के लिए हेडर हैं तो आप 2 का मान बदल सकते हैं ।

function addFirstRow() {
    var firstRow = 1;
    var sh = ss.getActiveSheet();
    var lCol = sh.getLastColumn();
    var range = sh.getRange(firstRow, 1, 1, lCol);
    var formulas = range.getFormulas();
    sh.insertRowsAfter(1, 1);
    newRange = sh.getRange(firstRow, 1, 1, lCol);
    newRange.setFormulas(formulas);
}

1
हाय डेनिस, क्या आप मेरे द्वारा बनाए गए पद की बात कर रहे हैं? मैं अभी स्क्रिप्ट की जांच करता हूं और यह अभी भी काम कर रहा है। सादर जैकब जान
जैकब जान टुंस्ट्रा

हाय @JacobJanTuinstra, हाँ आप सही हैं। मैं वास्तव में शीर्ष पर नई पंक्ति जोड़ने और उसी पंक्ति से सूत्र को बनाए रखने की कोशिश कर रहा था और यह काम नहीं कर रहा था क्योंकि स्क्रिप्ट नए बनाए गए खाली पंक्ति से डेटा को कॉपी करने की कोशिश कर रहा था। मैं इसे दर्शाने के लिए अपने उत्तर को अपडेट करूंगा। धन्यवाद
dgpro

हाय @DenGordo! इसके लिए धन्यवाद। यदि मेरे पास स्थानांतरित करने के लिए मूल्य हैं, तो मैं इसे कैसे संशोधित करूंगा, और सूत्र भी नहीं? धन्यवाद!
ड्रयूडविड

ओह पीएस - मैं किस टैब का संदर्भ लेता हूं जिससे मैं निपट रहा हूं? एक बार फिर धन्यवाद।
ड्रयूडविद

-2

setFormula(range)उदाहरण के लिए, मैंने इस समस्या को हल करने के लिए:

var ss = SpreadsheetApp.getActiveSpreadsheet();
var sheet = ss.getSheets()[0];

var cell = sheet.getRange("B5");
 cell.setFormula("=SUM(B3:B4)");

आपके सूत्र पंक्ति अनुक्रमणिका के अनुसार स्वचालित होंगे।

अन्त में आप एक onUpdate या onEdit ट्रिगर जोड़ सकते हैं।


-1; कोड को कैसे विकसित किया जाता है? आप एक राशि जोड़ रहे हैं, लेकिन आपको शारीरिक रूप से एक पंक्ति जोड़ने की आवश्यकता है। onUpdateट्रिगर मौजूद नहीं है।
जैकब जान तुइस्ट्रा
हमारी साइट का प्रयोग करके, आप स्वीकार करते हैं कि आपने हमारी Cookie Policy और निजता नीति को पढ़ और समझा लिया है।
Licensed under cc by-sa 3.0 with attribution required.