如何将拆分后的数组以4×4网格展示(优先按列填充)
解决Google Sheets中将逗号分隔文本转为4×4网格(支持图片数组)
问题背景
输入单元格(例:A1)内容:
ENG, DE, FRE, ESP, CHN, KO, PL, CZ, PRT, JA, RU
已通过以下公式生成单行一维数组:
=ArrayFormula(SPLIT(SUBSTITUTE(A1,", ",","),","))
需求:将数组转为4行4列的网格,优先填充列(第一列→第二列…),不足16个元素的位置留空;且支持后续用VLOOKUP()替换为图片数组。
解决方案
优先按列填充的4×4网格公式
=ArrayFormula(MAKEARRAY(4,4,LAMBDA(r,c, LET( source_arr, SPLIT(SUBSTITUTE(A1,", ",","),","), total_items, COUNTA(source_arr), item_index, (c-1)*4 + r, IF(item_index <= total_items, INDEX(source_arr, item_index), "") ) )))
公式说明
MAKEARRAY(4,4,LAMBDA(r,c,...)):创建4行4列的空网格框架source_arr:将输入单元格的逗号分隔文本拆分为一维数组item_index = (c-1)*4 + r:计算每个网格位置对应的源数组索引,实现先列后行的填充逻辑(第一列对应索引1-4,第二列5-8,以此类推)IF(...):当索引不超过元素总数时取对应值,否则留空
可选:优先按行填充的公式
若需要先填充行再填充列,只需修改item_index的计算方式:
=ArrayFormula(MAKEARRAY(4,4,LAMBDA(r,c, LET( source_arr, SPLIT(SUBSTITUTE(A1,", ",","),","), total_items, COUNTA(source_arr), item_index, (r-1)*4 + c, IF(item_index <= total_items, INDEX(source_arr, item_index), "") ) )))
支持图片数组的扩展用法
将公式中的INDEX(source_arr, item_index)替换为VLOOKUP()即可实现图片填充,假设图片映射表在D1:E11(D列为语言代码,E列为对应图片):
=ArrayFormula(MAKEARRAY(4,4,LAMBDA(r,c, LET( source_arr, SPLIT(SUBSTITUTE(A1,", ",","),","), total_items, COUNTA(source_arr), item_index, (c-1)*4 + r, IF(item_index <= total_items, VLOOKUP(INDEX(source_arr, item_index), $D$1:$E$11, 2, FALSE), "") ) )))
内容的提问来源于stack exchange,提问作者Orphal
相关产品推荐
相关产品推荐

