我是google表格和excel的非常初级的初学者,并且拥有带有定价信息的google表格,并且需要从多种货币自动转换,因此我需要从第15行开始在整列中输入。
我一直在尝试在脚本中使用if函数,但似乎我正在为工作使用错误的函数,或者我的代码需要一些重大调整。
function KWDBuyingPrice() {
var KWDBuyingTotal = SpreadsheetApp.getActiveSpreadsheet().getActiveSheet();
var WorkingCell = KWDBuyingTotal.getRange("G15").getValue();
if(WorkingCell="kwd"){
KWDBuyingTotal.getRange(15,4).setValue("=H15*$I$7");
}
if(WorkingCell="usd"){
KWDBuyingTotal.getRange(15,4).setValue("=H15*$I$8");
}
if(WorkingCell="eur"){
KWDBuyingTotal.getRange(15,4).setValue("=H15*$I$9");
}
if(WorkingCell="gpd"){
KWDBuyingTotal.getRange(15,4).setValue("=H15*$I$10");
}
var LastRow = KWDBuyingTotal.getLastRow();
var FillDownRange = KWDBuyingTotal.getRange(15,4,LastRow-4);
KWDBuyingTotal.getRange("D15").copyTo(FillDownRange);
}
基于我的代码,我希望它可以在另一个单元格中为我提供从货币到KWD的转换,但是发生的是,即使所有行不匹配“ gpd”,它也可以为我提供第一个if函数的输出
答案 0 :(得分:1)
您犯了一个简单的错误。在javascript中,单个等号'='表示赋值,并且if语句的答案将始终为true。相反,您需要使用'==='。
var KWDBuyingTotal = SpreadsheetApp.getActiveSpreadsheet().getActiveSheet();
var WorkingCell = KWDBuyingTotal.getRange("G15").getValue();
if(WorkingCell === "kwd"){
KWDBuyingTotal.getRange(15,4).setValue("=H15*$I$7");
} else if(WorkingCell === "usd"){
KWDBuyingTotal.getRange(15,4).setValue("=H15*$I$8");
} else if(WorkingCell === "eur"){
KWDBuyingTotal.getRange(15,4).setValue("=H15*$I$9");
} else if(WorkingCell === "gpd"){
KWDBuyingTotal.getRange(15,4).setValue("=H15*$I$10");
}
var LastRow = KWDBuyingTotal.getLastRow();
var FillDownRange = KWDBuyingTotal.getRange(15,4,LastRow-4);
KWDBuyingTotal.getRange("D15").copyTo(FillDownRange);
答案 1 :(得分:1)
D15:
=ARRAYFORMULA(H15:INDEX(H15:H,COUNTA(H15:H))*SWITCH(G15:INDEX(G15:G,COUNTA(H15:H)),"kwd",$I$7,"usd",$I$8))
SWITCH
来根据货币在Col G中切换值。 INDEX/COUNTA
到工作表上的getLastRow。 ARRAYFORMULA
可以使用数组而不是使用excel的旧的拖动填充方法将整个工作表填充到最后一行。 答案 2 :(得分:0)
根据另一个单元格中的值将公式向下复制到列中。
代替使用gremlin> g.V(1).project('name','age').by('name').by('age').select(values)
==>[marko,29]
gremlin> g.V(1).project('age','name').by('age').by('name').select(values)
==>[29,marko]
,而是通过range.copyTo()
循环运行此操作,并在我们浏览工作表时基于for
更改单元格值。
i
此脚本根据您已经在函数中定义的function kwdBuyingPrice() {
var sh = SpreadsheetApp.getActiveSpreadsheet().getActiveSheet();
var lastRow = sh.getLastRow();
var dataRange = sh.getDataRange();
var data = dataRange.getValues();
for (var i = 14; i < lastRow - 4; i++) {
var currency = data[i][6];
var setRange = sh.getRange(i+1, 4);
if(currency === 'kwd') {
setRange.setFormula('=H'+(i)+'*$I$7');
} else if(currency === 'usd') {
setRange.setFormula('=H'+(i)+'*$I$8');
} else if(currency === 'eur') {
setRange.setFormula('=H'+(i)+'*$I$9');
} else if(currency === 'gpd') {
setRange.setFormula('=H'+(i)+'*$I$10');
}
}
}
语句的结果,在工作表的每一行上使用for
循环在D列中填充公式。 if
从0开始,每次for循环运行时都递增1,这就是为什么我在i
中为每一行使用它。我将您的setFormula()
合并到了lastRow - 4
循环中,以确保它仅针对您已经传递给它的参数运行。
注意:就像已经提到的@CampaignCloner一样,for
用于分配,=
语句应使用===
来比较值。