n行增加2,一次增加4,并在将数据从一个工作表引用到另一个工作表时重复

时间:2017-04-24 13:10:53

标签: excel excel-vba excel-formula vba

谢谢你花时间看这个问题。

我正在寻找一个方程式,可以很容易地从Sheet 1(第一张图片)获取数值,其中两个值之间有2个空白单元格,然后是4个空白单元格,然后是其他4个值。我不确定我是否有意义,但希望我附上的图片有帮助。 注意前两行之间的 2个空白行值(行2-11),行16和25之间相同。 另请注意两组值之间的4个空行。

对我来说,这是重复700个值,同样设置4个值的2个空白行,然后是4个空白行,然后是4个具有2个空白行的值。我确信有一种更简单的方法可以做到这一点。

我尝试使用等式从Sheet 1重新创建Sheet 2。这可能吗?

提前道歉,英语不是我的第一语言。

Sheet 1 Sheet 2

3 个答案:

答案 0 :(得分:4)

如果数字将从B2开始并且间隔和偏移量交错是静态的,那么

=INDEX(B:B, 2+(ROW(1:1)-1)*3+INT((ROW(1:1)-1)/4)*2)

如果第一个号码在S6中,那么,

=INDEX(S:S, 6+(ROW(1:1)-1)*3+INT((ROW(1:1)-1)/4)*2)

enter image description here

答案 1 :(得分:2)

把它放在D2:

StatusComponent

然后抄下来直到你得到空白。

这将返回数字,以便它们出现在第1页上。

=IFERROR(INDEX(Sheet1!B:B,AGGREGATE(15,6,ROW(Sheet1!$B$2:INDEX(Sheet1!B:B,MATCH("ZZZ",Sheet1!A:A)))/(Sheet1!$B$2:INDEX(Sheet1!B:B,MATCH("ZZZ",Sheet1!A:A))<>""),ROW(1:1))),"") 设置数据集边界。这是一个数组类型公式,它需要引用尽可能小的数据集。此部分查找A列中的最后一个单元格,并将其设置为数据集的范围,以便我们不进行不必要的迭代。

MATCH部分将返回其中包含文本的最后一行,如果列A包含数字,则我们需要将Sheet1!$B$2:INDEX(Sheet1!B:B,MATCH("ZZZ",Sheet1!A:A))更改为"ZZZ"以获取A列中的最后一行,并带有数字

AGGREGATE工作得很小,因为它会创建一个行数和错误数组。它将返回1E+99返回true的ROW Numbers。并且返回FALSE的错误。

Aggregate中的第二个标准(Sheet1!$B$2:INDEX(Sheet1!B:B,MATCH("ZZZ",Sheet1!A:A))<>"")告诉它忽略错误,所以它只查看返回的行号。

6是一个反击。随着公式被拖下来,它将迭代到2然后3,依此类推。这告诉Aggregate你想要1st,然后是2nd,然后是3,依此类推。

然后将选定的行号传递给INDEX并返回正确的值。

enter image description here

如果您的数字是有序的(从您的示例中最小到最大)或者您想要按顺序输出(从最小到最大),那么您可以在D2中使用这个简单的等式:

ROW(1:1)

然后复制,直到你得到空白。

答案 2 :(得分:1)

这是您可能使用的另一个公式。

=INDIRECT(ADDRESS((INT((ROW()-ROW($A$2))/4)*14+ROW(A$2))+(MOD(ROW()-ROW($A$2),4)*3),COLUMN($A$2),1,1,"Sheet1"))

您可以将其粘贴到您想要结果的第一个单元格并复制下来。

请注意,$ A $ 2是所有计数开始的单元格。如果您的数据从A3开始,则可以相应地更改参考。请进一步注意ROW($A$2)2来说很长。我选择这种语法使您能够识别其含义。

另一方面,

COLUMN($A$2)只是将A列标识为要提升的数据的来源。该公式中的第2行无关紧要。这是重要的A.但是,COLUMN($A$2)仅适用于1,意思是第1列,意思是A.一旦您了解公式,就可以将COLUMN($A$2)替换为1。< / p>

相关问题