日安,请我需要帮助,我有数据分散在谷歌表不同的单元格,单元格1包含一个名称,单元格2包含许多行的数据,单元格3包含一个名称,我需要将单元格2中的数据分为不同的垂直单元格与复制单元格1和3中的数据,如所附图片[]
我试过转置但失败了
5hcedyr01#
对于Google Apps脚本,请尝试:
const Sheet = SpreadsheetApp.getActiveSpreadsheet().getSheetByName(`YourSheetName`) function dataHandler() { const dataRange = Sheet.getDataRange() .offset(1, 0) const data = dataRange.getValues() const newValues = data.flatMap(([ name, location, addresses, phone]) => { const addressList = addresses.split(`\n`) return location.split(`\n`) .map((item, index) => { return [ name, (addressList[index]) ? addressList[index] : ``, item, phone ] }) }) dataRange.clearContent() Sheet.getRange(2, 1, newValues.length, newValues[0].length) .setValues(newValues) }
会评论这一点,但目前电话张贴。
8yparm6h2#
如果您拆分,则转置适用于我:=TRANSPOSE(SPLIT(B2, CHAR(10)))假设在第二个单元格中只有四行,您可以直接引用这些结果周围的名称单元格;那就最简单了。编辑:由于行数未知,您可以执行以下操作来复制名称:=TRANSPOSE(SPLIT(REPT(";"&A2,COUNTIF(SPLIT(B2, CHAR(10)),"<>")), ";", TRUE, TRUE))这个snippit所做的是计算B2中的行数,用一些分隔符重复A2的行数,然后拆分(删除空行)并像我们对B2所做的那样转置它。
=TRANSPOSE(SPLIT(B2, CHAR(10)))
=TRANSPOSE(SPLIT(REPT(";"&A2,COUNTIF(SPLIT(B2, CHAR(10)),"<>")), ";", TRUE, TRUE))
2条答案
按热度按时间5hcedyr01#
对于Google Apps脚本,请尝试:
会评论这一点,但目前电话张贴。
8yparm6h2#
如果您拆分,则转置适用于我:
=TRANSPOSE(SPLIT(B2, CHAR(10)))
假设在第二个单元格中只有四行,您可以直接引用这些结果周围的名称单元格;那就最简单了。
编辑:由于行数未知,您可以执行以下操作来复制名称:
=TRANSPOSE(SPLIT(REPT(";"&A2,COUNTIF(SPLIT(B2, CHAR(10)),"<>")), ";", TRUE, TRUE))
这个snippit所做的是计算B2中的行数,用一些分隔符重复A2的行数,然后拆分(删除空行)并像我们对B2所做的那样转置它。