我如何 return 内置 Google 电子表格函数可以使用的字符串
How do I return a string that the built in Google Spreadsheet function can us
我有一个函数 returns 一个字符串,它是我需要使用 UNIQUE() 内置函数扫描的单元格,但它不处理返回值。
试过用引号引起来,但没有用。
function GetRange(sheet, ColumnLetter , Offset)
{
var startColumn = letterToColumn(ColumnLetter);
var string = "";
for(var i=startColumn; i <= Offset; i++)
{
string += sheet + "!" + columnToLetter(i) +":"+columnToLetter(i)+";";
}
string = string.substring(0, string.length-1);
return string+"";
}
在 Sheet 这边,我在一个单元格中有这个
=UNIQUE({GetRange("Raid","C", 30)})
我希望将返回的字符串放入内置 UNIQUE()
函数中,并像我手动输入它时那样执行代码。
相反,它只是像这样将返回的字符串输出到单元格中
Raid!C:C;Raid!D:D;Raid!E:E;Raid!F:F;Raid!G:G;Raid!H:H;Raid!I:I;Raid!J:J;Raid!K:K;Raid!L:L;Raid!M:M;Raid!N:N;Raid!O:O;Raid!P:P;Raid!Q:Q;Raid!R:R;Raid!S:S;Raid!T:T;Raid!U:U;Raid!V:V;Raid!W:W;Raid!X:X;Raid!Y:Y;Raid!Z:Z;Raid!AA:AA;Raid!AB:AB;Raid!AC:AC;Raid!AD:AD
试试这样:
=ARRAYFORMULA(SORT(UNIQUE(TRANSPOSE(SPLIT(TRIM(QUERY(TRANSPOSE(QUERY(TRANSPOSE(
IF(LEN(Raid!A1:A), IF(Raid!C1:AL<>"", "♦"&Raid!C1:AL, ), )),,999^99)),,999^99)), "♦")))))
问题:
您正在从函数返回一个字符串。它不能被电子表格评估为电子表格数组文字。
解决方案:
Return 数组。
片段:
/**
* @param {Raid!C:AD} range - Range to stack as a array
* @return The provided 2D array stacked up vertically
* @customfunction
*/
function stackUp(range) {
return Array.prototype.concat.apply(
[],
range[0].map(function(col, i) {
//for each column
return range
.map(function(row) {
return [row[i]];
}) //get each row in this column
.filter(String); //ignore empty rows
})
);
}
我有一个函数 returns 一个字符串,它是我需要使用 UNIQUE() 内置函数扫描的单元格,但它不处理返回值。
试过用引号引起来,但没有用。
function GetRange(sheet, ColumnLetter , Offset)
{
var startColumn = letterToColumn(ColumnLetter);
var string = "";
for(var i=startColumn; i <= Offset; i++)
{
string += sheet + "!" + columnToLetter(i) +":"+columnToLetter(i)+";";
}
string = string.substring(0, string.length-1);
return string+"";
}
在 Sheet 这边,我在一个单元格中有这个
=UNIQUE({GetRange("Raid","C", 30)})
我希望将返回的字符串放入内置 UNIQUE()
函数中,并像我手动输入它时那样执行代码。
相反,它只是像这样将返回的字符串输出到单元格中
Raid!C:C;Raid!D:D;Raid!E:E;Raid!F:F;Raid!G:G;Raid!H:H;Raid!I:I;Raid!J:J;Raid!K:K;Raid!L:L;Raid!M:M;Raid!N:N;Raid!O:O;Raid!P:P;Raid!Q:Q;Raid!R:R;Raid!S:S;Raid!T:T;Raid!U:U;Raid!V:V;Raid!W:W;Raid!X:X;Raid!Y:Y;Raid!Z:Z;Raid!AA:AA;Raid!AB:AB;Raid!AC:AC;Raid!AD:AD
试试这样:
=ARRAYFORMULA(SORT(UNIQUE(TRANSPOSE(SPLIT(TRIM(QUERY(TRANSPOSE(QUERY(TRANSPOSE(
IF(LEN(Raid!A1:A), IF(Raid!C1:AL<>"", "♦"&Raid!C1:AL, ), )),,999^99)),,999^99)), "♦")))))
问题:
您正在从函数返回一个字符串。它不能被电子表格评估为电子表格数组文字。
解决方案:
Return 数组。
片段:
/**
* @param {Raid!C:AD} range - Range to stack as a array
* @return The provided 2D array stacked up vertically
* @customfunction
*/
function stackUp(range) {
return Array.prototype.concat.apply(
[],
range[0].map(function(col, i) {
//for each column
return range
.map(function(row) {
return [row[i]];
}) //get each row in this column
.filter(String); //ignore empty rows
})
);
}