Google sheets 将A3:A9-E3:A9列复制到另一页中的A、C、E、G、I

Google sheets 将A3:A9-E3:A9列复制到另一页中的A、C、E、G、I,google-sheets,google-sheets-formula,transpose,array-formulas,google-sheets-query,Google Sheets,Google Sheets Formula,Transpose,Array Formulas,Google Sheets Query,是否可以从A3:A9-E3:A9列复制,然后将它们定向到另一张表中的A、C、E、G、I 使用以下公式: =ARRAYFORMULA(SPLIT(TRANSPOSE(QUERY(TRANSPOSE("♦"&A3:E9&"♦");;999^99)); "♦")) 然后用CTRL+C复制,然后用CTRL+SHIFT+scripteditor打开绑定脚本,并将以下功能复制到脚本: 函数copyRange(){ //检索原始范围: var inputRange=“'Ark1'!A3:E9

是否可以从A3:A9-E3:A9列复制,然后将它们定向到另一张表中的A、C、E、G、I

使用以下公式:

=ARRAYFORMULA(SPLIT(TRANSPOSE(QUERY(TRANSPOSE("♦"&A3:E9&"♦");;999^99)); "♦"))
然后用
CTRL
+
C
复制,然后用
CTRL
+
SHIFT
+


如果您想使用中间的列,我认为您最好的选择是使用。我不认为这是可能做到这一点与一个内置功能,甚至与应用程序脚本

首先,通过选择
Tools>scripteditor
打开绑定脚本,并将以下功能复制到脚本:

函数copyRange(){
//检索原始范围:
var inputRange=“'Ark1'!A3:E9”//原始列的范围(请根据您的首选项更改此范围)
var inputValues=SpreadsheetApp.getActive().getRange(inputRange.getValues();
//转置数组,使外部数组对应于列:
var transposedValues=inputValues[0]。映射(函数(列,i){
返回inputValues.map(函数(行){
返回行[i];
});
});
//获取所选范围(这将是目标范围):
var outputRange=SpreadsheetApp.getActiveRange();
var targetSheet=outputRange.getSheet();
var row=outputRange.getRow();
var col=outputRange.getColumn();
//将源范围复制到目标(忽略第二列):
transposedValues.forEach(函数(第j列){
对于(变量i=0;i
此脚本执行以下操作:

  • 通过和检索此示例第一行中定义的特定范围内的值
  • “转置”检索到的2D数组对应于源范围的值,以便外部数组中的每个元素对应于一列,这将使写入过程更容易,如中所述
  • 通过以下方式检索当前选定的范围:
  • 使用将源范围复制到当前选定范围
当然,这种方法的问题是,运行这种函数比运行内置函数或自定义函数更不舒服。您可以附加此功能或使工作流更轻松。但我想不出更好的解决办法

至关重要的是,您必须更改输入范围的引用(在本示例中,
'Ark1'!A3:E9

参考:
  • )

我希望这能有所帮助。

完全符合预期。我永远也猜不到♦ 或者数组公式,加上拆分转置x2和一个查询。刚发现当我开始填写B或D或F og H时它不起作用。当然,当你填写B,D。。。这就是为什么我在回答中包含了CTRL+C>CTRL+SHIFT+V要求对不起。我不是故意在这里踩脚趾头的。我希望它能在同事更新工作表时自动完成。我想做的是将周工作表和姓名表结合起来。谢谢你的长期努力和深入解释,但一路上我意识到我问错了问题。