我想多次重复项目范围(提供值)。
例如
我有这个在sheet1!A
Detroit
Texas
Utah
California
现在我想重复它们 3 次以获得 Sheet2!A 处的输出,例如:
Detroit
Texas
Utah
California
Detroit
Texas
Utah
California
Detroit
Texas
Utah
California
公式应该是什么?
我得到了这个公式:
https://www.excel-bytes.com/how-to-repeat-a-range-of-items-multiple-times-in-excel/
但它在 Google 表格中不起作用
仅当您将其粘贴到同一张纸的A5并将其向下拖动时才有效:
=IF(ISBLANK(INDIRECT(ROW(A1))),INDIRECT((ROWS($A$1:A4)-(COUNTA(A:A)-2))),A1)
否则,您可以使用:
=QUERY({Sheet1!A1:A4;Sheet1!A1:A4;Sheet1!A1:A4},"select *",0)
或:
=TRANSPOSE(SPLIT(REPT(JOIN(",",Sheet1!A1,Sheet1!A2,Sheet1!A3,Sheet1!A4&","),3),",",1))
或:
=TRANSPOSE(SPLIT(REPT(Sheet1!A1&","&Sheet1!A2&","&Sheet1!A3&","&Sheet1!A4&",",3),",",1))
或:
function REPEAT(range,amount,header) {
var output = [];
// check if range is cell
if(typeof range == 'string') {
for(var i=0; i<amount; i++) {
output.push([range]);
}
return output;
} else {
// check if header is wanted
var value;
if(header == 1) {
output.push(range[0]);
value=header;
} else if(header == "") {
value=0;
} else {
value=0;
}
for(var i=0; i<amount; i++) {
for(var j=value, jLen=range.length; j<jLen; j++) {
output.push(range[j]);
}
}
return output;
}
}
=REPEAT(Sheet1!A1:A4,3,0)
您可以使用数组文字创建垂直数组
{;}
。您可以通过使用 REDUCE
创建循环来自动化此过程。
=LAMBDA(rg_to_repeat,times,
REDUCE(
rg_to_repeat,
SEQUENCE(times-1),
LAMBDA(a,c,{a;rg_to_repeat})
)
)(A1:A4,4)
times-1
。SEQUENCE
创建一个从 1 到 3 的数字数组序列(如果 times
是 4)REDUCE
,首先使用 LAMBDA
调用提供的 initial value
函数,然后使用前一个 a
累加器和 c
当前值,即数字 1(2 和 3)在接下来的迭代中)a
累加器与 r
ang
e to
repeat
: {a;rg_to_repeat}
我不妨添加这个作为答案:
=IF(ISBLANK(INDIRECT("Cities!A"&ROW(A2))),INDIRECT("Repeat!A"&(ROWS($A$2:A2)-(COUNTA(Cities!A:A)-2))),Cities!A2)
在 Google 表格和 Excel 中运行良好。
这也有效,并且在 Excel 中可能更可取,以避免使用间接:
=IF(ISBLANK(INDEX(Cities!A:A,ROW(A2))),INDEX(Repeat!A:A,ROWS($A$2:A2)-(COUNTA(Cities!A:A)-2)),Cities!A2)
您可以从 Row1 向下复制:
=offset(Sheet1!A$1,mod(row()-1,4),)
适合您的数量,每组四件。
Google 表格不断发展...
以下公式可堆叠/重复 4 行 x 3 列的单元格数组,以创建 48 行 x 3 列的数组。
KPI_LEVELS 是一个命名范围,引用另一张工作表中 4 行 x 3 列数据表的左上角。 OFFSET / MOD 4 使数组重复 4 行源数组以达到所需的行数,在本例中为 48:
=MAKEARRAY(48,3, LAMBDA (r,c, OFFSET(KPI_LEVELS, MOD(r-1,4), c)))