我必须使用电子表格。我希望程序在电子表格Ind上查看行A并查看它是1还是0.如果它是活动工作表上的那个"返回"我希望它能从电子表格中的D行中获取日期" Ind"并将其发布到Spreadhseet"返回"。我无法解决这个问题,我让它在excel中使用VBA。
非常感谢任何帮助。
function myFunction() {
X = 5;
Y = 2;
Z = 1;
Count = 4560;
var ss = SpreadsheetApp.getActiveSpreadsheet();
var source_sheet = ss.getSheetByName("Ind");
var target_sheet = ss.getSheetByName("Returns");
while (Z < Count){
if (source_sheet.getRange("A" & X) = 1) {
var buydate = source_sheeet.getRange("D" & X).getValues()
target_sheet.getRange("A" & Y) = buydate
target_sheet.getRange("B" & Y) = "Buy"
Y = Y + 1
} else if (source_sheeet.Range("C" & X) = 2) {
var selldate = source_sheeet.Range("D" & X).getvalues()
target_sheet.getRange("A" & Y) = selldate
target_sheet.getRange("B" & Y) = "Sell"
Y = Y + 1
}
X = X + 1
Z = Z + 1
}}
答案 0 :(得分:1)
这一行:
if (source_sheet.getRange("A" & X) = 1) {
使用&符号,它应该是一个加号。要在JavaScript中连接字符串,请使用加号。
此外,source_sheet.getRange()
将返回范围,而不是值,因此它永远不会等于1.您需要使用以下内容:
if (source_sheet.getRange("A" + X.toString()).getValue() === 1) {
并使用三等号进行相等检查。 JavaScript一直试图将变量强制转换为看似正确的类型。因此,它可能会将变量“X”中的数字转换为字符串,但您也可以使用toString()
方法。
getValues()
返回一个二维数组。每个内部数组代表一行。内部数组中的每个元素代表一行中的一个单元格。
如果您只想获得一个值,请使用getValue()
(最后不是“s”)而不是getValues()
。
var buydate = source_sheet.getRange("D" + X.toString()).getValue();
您正尝试使用等号设置值。那不行。您需要使用setValue()
或setValues()
方法。
target_sheet.getRange("A" + Y.toString()).setValue(buydate);
通过在分配中不使用var
关键字,变量会自动变为“全局”变量。
X = 5;
Y = 2;
Z = 1;
在这种情况下,没有必要让它们成为全局变量,我不这么认为。
var X = 5,
Y = 2,
Z = 1;
您可以同时声明多个变量。