Google apps script 不加限制地分裂和重复
在工作表中,我有以下输入数据: 如图所示,Google apps script 不加限制地分裂和重复,google-apps-script,google-sheets,Google Apps Script,Google Sheets,在工作表中,我有以下输入数据: 如图所示,课程由/ 我想在下面的格式中显示相同的内容,其中每行仅显示一门课程,并重复学生的数据: 我知道使用=split(C3,“/”,true,true)可以将课程拆分为同一行的两列,但我需要将它们放在同一列中,因此我尝试了=TRANSPOSE(split(C3,“/”,true,true))这只适用于第一行,但使用ARRAYFORMULA失败 有什么想法吗?我对任何可能的解决方案、公式或脚本或任何其他方案都持开放态度 更新 我尝试了这个技巧,创建了一个新的
课程
由/
我想在下面的格式中显示相同的内容,其中每行仅显示一门课程,并重复学生的数据:
我知道使用=split(C3,“/”,true,true)
可以将课程拆分为同一行的两列,但我需要将它们放在同一列中,因此我尝试了=TRANSPOSE(split(C3,“/”,true,true))
这只适用于第一行,但使用ARRAYFORMULA
失败
有什么想法吗?我对任何可能的解决方案、公式或脚本或任何其他方案都持开放态度
更新
我尝试了这个技巧,创建了一个新的列,显示每个学生的课程数为=ArrayFormula(LEN(REGEXREPLACE(C11:C13,“[^/]”,“)+1)
然后使用Rep
根据课程数重复每一行=arrayformula({transpose(split(concatenate)(rept(B11:B13&“,”,D11:D13)),“,”,false,true)),transpose(splite(concatenate)(rept(C11:C13&“,”,D11:D13)),“,,”,false,true))
最后得到:
但在这里,我的课程仍然在一起,我怎么能把它们分开呢 我已经在您的示例电子表格中添加了两张表格。“Sheet2”是对测试表“Sheet1”的清理。另一张表(“Erik帮助”)引用的是Sheet2,而不是Sheet1,在单元格A1中包含以下公式:
=ArrayFormula({“学生ID”、“学生姓名”、“课程”;替换(拆分)(查询(拆分(筛选(替换(“/”&Sheet2!C3:C,“/”,“/”&Sheet2!A3:A&“zzz~”&Sheet2!B3:B&“~”),Sheet2!A3:A“”,“/”),“选择*其中Col1不为空”),“~”,“zzz”,“)
这个数组公式生成所有标题和结果
在花括号{}之间形成一个虚拟数组。首先引入标题,后面是分号,表示“向下跳一行以继续”。标题可以随意更改
工作原理:
在第2页中,每个非空白条目的前面都连接了一个“/”!C2:C。然后,SUBSTITUTE
用A列数据、“zzz~”、B列数据和“~”替换这些正斜杠中的每一个。波浪线(~)稍后将由外部拆分使用。添加“zzz”是为了确保ID号转换为文本,以便它们在整个处理过程中保持格式,并且不会变成实数;稍后,外部的替换将替换为null(即去掉'zzz')
初始连接完成后,将以正斜杠将其拆分,然后将其展平为一列<代码>查询
删除此虚拟阵列中迄今为止的所有空行。剩余的结果再次在波浪形图上进行分割。最后,该外部替换删除“zzz”的临时实例
我还为交替行上的交替色带添加了自定义CF公式。我已向您的示例电子表格添加了两张表格。“Sheet2”是对测试表“Sheet1”的清理。另一张表(“Erik帮助”)引用的是Sheet2,而不是Sheet1,在单元格A1中包含以下公式:
=ArrayFormula({“学生ID”、“学生姓名”、“课程”;替换(拆分)(查询(拆分(筛选(替换(“/”&Sheet2!C3:C,“/”,“/”&Sheet2!A3:A&“zzz~”&Sheet2!B3:B&“~”),Sheet2!A3:A“”,“/”),“选择*其中Col1不为空”),“~”,“zzz”,“)
这个数组公式生成所有标题和结果
在花括号{}之间形成一个虚拟数组。首先引入标题,后面是分号,表示“向下跳一行以继续”。标题可以随意更改
工作原理:
在第2页中,每个非空白条目的前面都连接了一个“/”!C2:C。然后,SUBSTITUTE
用A列数据、“zzz~”、B列数据和“~”替换这些正斜杠中的每一个。波浪线(~)稍后将由外部拆分使用。添加“zzz”是为了确保ID号转换为文本,以便它们在整个处理过程中保持格式,并且不会变成实数;稍后,外部的替换将替换为null(即去掉'zzz')
初始连接完成后,将以正斜杠将其拆分,然后将其展平为一列<代码>查询
删除此虚拟阵列中迄今为止的所有空行。剩余的结果再次在波浪形图上进行分割。最后,该外部替换删除“zzz”的临时实例
我还为交替行上的交替色带添加了自定义CF公式。您可以尝试以下公式:
公式:
输出:
参考:
你可以试试这个:
公式:
输出:
参考:
非常感谢您的详细解释。不客气,哈桑。很高兴能帮上忙。非常感谢你的详细解释。不客气,哈桑。很高兴能帮忙。
=ARRAYFORMULA(TRIM(QUERY(SPLIT(FLATTEN(IF(IFERROR(SPLIT(C3:C5, "/"))="",,
A3:A5&"×"&B3:B5&"×"&SPLIT(C3:C5, "/"))), "×"),
"where Col3 is not null")))