Excel – 需要函数重复列表(复杂公式)

我正在尝试为我的公司设置一个“自动生成”工作表,但是难以使这个function正常工作。

我需要的是在另一个列表中重新填充一个SKU列表,但是一旦列表结束,就能够重新开始采用相同的值。 这将被转换为CSV并用于在我们的网站上导入数据。

例:

原始列表

  • 苹果
  • 香蕉
  • 橙子
  • 桃子

我需要这个列表来填充另一个列表中的单元格,但是重复相同的值。 见下文。

新列表

  • 苹果
  • 香蕉
  • 橙子
  • 桃子
  • 苹果
  • 香蕉
  • 橙子
  • 桃子

然后一旦列表重复一次就停止。 如果列表中有5个项目,则应该在10个项目之后停止。 如果列表中有8个项目,则应该在16之后停止。只要列表重复,顺序无关紧要。

我试过IFVLOOKUPHLOOKUPCOUNTIFMATCHINDEX ,但是没有那些或者我能想到的任何组合都已经完成了。 一旦列表结束,我只想从列表的开头开始取值。

感谢您的任何帮助!

该公式为“原始列表”“新列表”范围的位置提供了灵活性。

试试这个公式:

 =T(INDEX(SrcCol, -1+SrcRow+ROWS($TrgRow:TrgRow) -IF(ROUNDUP(ROWS($TrgRow:TrgRow)/COUNTA(SrcCol),0)=2,COUNTA(SrcCol),0))) 

哪里:

SrcCol“原始列表”所在的列

SrcRow“原始列表”开始的行

TrgRow“结果”列表的起始行

该公式假定原始列表之间没有空白单元格。

让我们尝试原始列表B6开始的公式,我们希望新列表D3开始。 然后在D3input这个公式,并拷贝到最后一行(即第10行):

在上面的公式中replace如下:

SrcCol = $B:$B ; SrcRow = 6TrgRow = 3

 =T(INDEX($B:$B, -1+6+ROWS($3:3) -IF(ROUNDUP(ROWS($3:3)/COUNTA($B:$B),0)=2,COUNTA($B:$B),0))) 

在这里输入图像说明

编辑:

如果原始列表是一个公式的结果,并有单元格返回一个空白值(ie =“”),那么我们有两个select:

  1. 用这个SUMPRODUCT(--($B:$B<>"")*COLUMN($A:$A))replace原始公式中的COUNTA($B:$B) SUMPRODUCT(--($B:$B<>"")*COLUMN($A:$A))并在D3input结果公式:

     =T(INDEX($B:$B, -1+6+ROWS($3:3) -IF(ROUNDUP(ROWS($3:3)/ SUMPRODUCT(--($B:$B<>"")*COLUMN($A:$A)),0)=2, SUMPRODUCT(--($B:$B<>"")*COLUMN($A:$A)),0)))` 
  2. 用这个SUM(--($B:$B<>""))replace原公式中的COUNTA($B:$B) ,并在D3input结果公式为FormulaArray

     =T(INDEX($B:$B, -1+6+ROWS($3:3) -IF(ROUNDUP(ROWS($3:3)/ SUM(--($B:$B<>"")),0)=2, SUM(--($B:$B<>"")),0))) 

inputFormulaArrays同时按下 CTRL + SHIFT + ENTER 如果input正确 ,您将 在公式周围 看到 { }

这是一个有趣的问题,我有一个解决scheme,但可能有一个更优雅的方式来做到这一点:

 =IF(ROW()-1<=COUNTA($A$2:$A$5),INDEX($A$2:$A$5,ROW()-1),IF(ROW()-1<=(COUNTA($A$2:$A$5)*2),INDEX($A$2:$A$5,ROW()-1-COUNTA($A$2:$A$5)),"")) 

笔记:

  • 这假设你想要复制的列表是在A2:A5
  • 它也假设你想复制的范围从第2行开始(因此ROW()-1)
  • 这个论坛会留下一个“”(单元格中的空引号,其行数大于要复制的列表数量的两倍),我不认为如果你想使用VBA

截图 在这里输入图像说明

我build议你可以'使用一个命名的范围或类似'参数化'-1,如果你移动的东西,你不必改变-1。