Excel数组公式使用INDEX并且是variables相关的

我目前有一个工作表,其中的数据正在input到特定的列。 然后,在汇总表中,我使用一个带有索引的数组公式来生成匹配特定字段的原始工作表上的所有数据的列表。

汇总表上的每一列都有一个数组公式,连接回数据表上的等效列。 A-> A,B-> B,C-> C等

数组公式如下:

{=IFERROR(INDEX('data'!C$2:C$1168,SMALL(IF('data'!$S$2:$S$1168>='OUTPUT'!$A$2,ROW('data'!C$2:C$1168)-ROW('data'!C$2)+1),ROWS('data'!C$2:'data'!C2))),"")} 

这个公式可以很好地工作,并生成一个活动的更新列表,其中表格“data”中单元格列“S”的值为“OUTPUT”。

表“数据”:

 |Sample A|Result A|OUTPUT| |Sample B|Result B|0 | |Sample C|Result C|OUTPUT| 

“摘要”表中的结果:

 |Sample A|Result A| |Sample C|Result C| 

然而,在“数据”的表格中,现在也有一个数量的列,我想试图将其反映在“概要”表中。 如下:

表“数据”:

 |Sample A|Result A|OUTPUT| 2 | |Sample B|Result B|0 | 5 | |Sample C|Result C|OUTPUT| 3 | 

“摘要”表中的结果:

 |Sample A|Result A| |Sample A|Result A| |Sample C|Result C| |Sample C|Result C| |Sample C|Result C| 

任何意见或build议如何引起这个“循环”与数组将不胜感激。 我通常会编写一个macros来处理数据,并在需要时循环输出,但是我的目标是避免每次添加新数据时都要运行一个macros。

谢谢你,问候

Excel公式很好,但是我倾向于在这种情况下使用UDF和命名范围。

使用UDF返回一个所有需要输出string的数组,并放入命名范围。 然后在您命名的范围上调用INDEX。

UDF:

 Public Function getResultArray( _ sampleRange As Range, _ isOutputRange As Range, _ QuantityRange As Range, _ str as string) As String() 'error handling for inputs here Dim totalQuantity As Long totalQuantity = Application.WorksheetFunction.SumIf(isOutputRange, str, QuantityRange) Dim retArr() As String ReDim retArr(1 To totalQuantity) Dim ioArr As Variant, qArr As Variant, sampleArr As Variant ioArr = isOutputRange.Value qArr = QuantityRange.Value sampleArr = sampleRange.Value Dim i As Long, j As Long, counter as Long For i = LBound(ioArr) To UBound(ioArr) If ioArr(i, 1) = str Then For j = 1 To qArr(i, 1) counter = counter + 1 retArr(counter) = sampleArr(i, 1) Next j End If Next i getResultArray = retArr End Function 

命名范围:

ResultArray = getResultArray(data!$A$2:$A$4, data!$C$2:$C$4, data!$D$2:$D$4, OUTPUT!$A$2)

你想要“摘要”的地方:

=INDEX(ResultArray, ROWS('data'!C$2:'data'!C2))

这减less了工作簿计算,因为数组只计算一次,而不是每个工作表公式(数组公式)