我有一个Google表单,要求人们输入他们的姓名并选择1
和10
之间的数字。该表单在表格中填充响应,如下所示:
Name1 3
Name2 5
Name3 7
Name4 1
ETC.
我需要编译这些名称的列表,其中包括重复的名称,与他们选择的数字一样多次。像这样:
Name1
Name1
Name1
Name2
Name2
Name2
Name2
Name2
ETC.
这可能吗?
我的一些列表变得非常长,并且手动将它们放入列表中非常耗时且容易出错。
答案 0 :(得分:2)
假设col A中的名称和B中的数字,另一种方法是使用此公式:
=ArrayFormula(transpose(split(Join(char(9), rept(A2:A&char(9), B2:B)), char(9))))
答案 1 :(得分:0)
这是一个应该有用的脚本。
修改强> 进行一些更改以控制列。
此版本指定列B(名称)和列D(数字)
function onOpen() {
SpreadsheetApp
.getUi()
.createMenu( 'Multiply Names' )
.addItem( 'Multiply names', 'multiplyNames' )
.addToUi();
} // onOpen
function multiplyNames() {
// get values from this sheet
var sheet = SpreadsheetApp.getActiveSheet();
var names = sheet.getRange('B:B').getValues();
var numbers = sheet.getRange('D:D').getValues();
// create new sheet
var newSheet = SpreadsheetApp.getActiveSpreadsheet().insertSheet();
// put names on new sheet
var totalNames = 0;
for ( var i=0; i<numbers.length; i++ ) {
if ( !isNaN( numbers[i][0] ) ) {
for ( var j=0; j<numbers[i][0]; j++ ) {
newSheet
.getRange( totalNames + 1, 1 )
.setValue( names[i][0] );
totalNames++;
}
}
}
}
您可以通过更改以下行中的B和D来更改列:
var names = sheet.getRange('B:B').getValues();
var numbers = sheet.getRange('D:D').getValues();
要将脚本添加到电子表格中:
将会有一个名为“Multiply Names”的新菜单项。在表单填充的工作表上使用它。它将创建一个名称相乘的新工作表。
如果您有任何疑问,请告诉我。
答案 2 :(得分:0)
首先,创建两个逗号分隔的列表(每个列表在一个单元格中)。一个用于名称,一个用于名称的出现。左边 和-2从列表中删除最后一个“,”。
= arrayformula(左(连接(过滤器(A2:A,A2:A&lt;&gt;“))&amp;”,“),len(连接(过滤器(A2:A,A2:A&lt;&gt;”) )&amp;“,”)) - 2))
= arrayformula(left(concatenate(filter(B2:B,B2:B&quot;“”)&amp;“,”),len(连接(过滤器(B2:B,B2:B&lt;&gt;“) )&amp;“,”)) - 2))
然后在您希望开始最终列表的位置添加以下公式。 D2引用逗号分隔名称列表 从上面的第一个公式。 D3参考上面第二个公式的出现列表。 SPLIT创建数组 和REPT重复创建的字符串。
= TRANSPOSE(SPLIT(JOIN(“,”,ARRAYFORMULA(REPT(SPLIT(D2,“,”)&amp;“,”,split(D3,“,”)))),“,”))< / p>
答案 3 :(得分:0)
为每一行创建一个分隔列表:
=分裂(REPT(A1&安培; “;”,B1), “;”)
=分裂(REPT(A2&安培; “;”,B2), “;”)
然后在一个单独的列中,您想要转置该数组,以便将它们列在一列中:
=转置(分裂(合并( “;”,C1:C2), “;”))