Warning: file_get_contents(/data/phpspider/zhask/data//catemap/5/google-sheets/3.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Google apps script 不加限制地分裂和重复_Google Apps Script_Google Sheets - Fatal编程技术网

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")))