求14+种用不同内置函数重复含重复值区域的Google Sheets公式
以下所有方法均针对A1:B4(含重复值🤣Ah!和数值3)的小型区域实现重复,每种公式以不同内置函数开头,且尽可能简短:
ARRAYFORMULA:
=ARRAYFORMULA({A1:B4;A1:B4})
直接通过数组拼接语法重复原区域,是最直观的实现方式。QUERY:
=QUERY(A1:B4,"select * union all select *",1)
利用SQL的union all语法合并两次原数据查询结果。FILTER:
=FILTER({A1:B4;A1:B4},ROW(A1:B8)>0)
过滤重复后的区域(所有行均满足条件),返回完整重复结果。INDEX:
=INDEX({A1:B4;A1:B4},SEQUENCE(8),SEQUENCE(1,2))
通过索引定位重复区域的所有行和列,输出完整结果。SEQUENCE:
=INDEX(A1:B4,MOD(SEQUENCE(8)-1,4)+1,SEQUENCE(1,2))
生成循环行号序列,通过INDEX循环提取原区域内容实现重复。VLOOKUP:
=VLOOKUP(MOD(SEQUENCE(8)-1,4)+1,{ROW(A1:A4),A1:B4},{2,3},0)
用循环行号作为查找值,匹配原区域的行数据实现重复。HLOOKUP:
=HLOOKUP(MOD(SEQUENCE(2,8)-1,4)+1,{TRANSPOSE(A1:A4),TRANSPOSE(B1:B4)},SEQUENCE(2,1),0)
先转置原区域,再用HLOOKUP循环提取数据,最后自动转置回原结构。INDIRECT:
=INDIRECT({"A1:B4";"A1:B4"})
通过间接引用重复的区域地址字符串,返回拼接后的重复数据。OFFSET:
=OFFSET(A1:B4,0,0,8,2)
扩展原区域的高度至8行(原区域为4行),Google Sheets会自动重复原数据填充扩展部分。CHOOSE:
=CHOOSE({1;1},A1:B4)
利用数组索引参数,重复调用原区域实现数据复制。SUMIF:
=SUMIF({1;1},1,A1:B4)
通过SUMIF的数组广播特性,将原区域重复两次(匹配条件为1,对应两行参数)。MATCH:
=INDEX(A1:B4,MATCH(MOD(SEQUENCE(8)-1,4)+1,ROW(A1:A4),0),SEQUENCE(1,2))
用MATCH匹配循环行号,再通过INDEX提取对应行数据实现重复。TEXT:
=TEXT({A1:B4;A1:B4},"@")
将重复后的区域转换为文本格式,保留原内容的同时完成重复。COUNTA:
=COUNTA({1;1})*A1:B4
利用COUNTA返回的计数(2)与原区域进行数组相乘,实现数据重复广播。IF:
=IF(SEQUENCE(8)<=4,A1:B4,A1:B4)
无论行号是否满足条件,均返回原区域,从而实现两次重复。IFS:
=IFS(SEQUENCE(8)>0,A1:B4)
设定通用条件(所有行均有效),返回原区域完成重复。SWITCH:
=SWITCH(SEQUENCE(8)>0,TRUE,A1:B4)
通过SWITCH匹配通用真条件,重复返回原区域数据。MAX:
=MAX({A1:B4;A1:B4},A1:B4)
对重复区域和原区域取最大值(因内容一致,结果即为重复后的区域)。MIN:
=MIN({A1:B4;A1:B4},A1:B4)
与MAX逻辑一致,取最小值返回重复后的区域。PRODUCT:
=PRODUCT(ROW(A1:A8)^0)*A1:B4
所有行号的0次方乘积为1,与原区域相乘实现数据广播重复。
内容的提问来源于stack exchange,提问作者Max Makhrov

