Excel 如何根据多维数组设置其格式';s细胞值?

Excel 如何根据多维数组设置其格式';s细胞值?,excel,excel-formula,excel-2010,Excel,Excel Formula,Excel 2010,我正在尝试格式化Excel工作表中的数组。goel的作用与SUMIF的作用相反,对于我表格中的每个元素及其编号x,我想在另一个表格中创建该元素的x行。 由于屏幕截图比长对话更清晰,因此我希望实现以下目标: 如果水果出现0,则不应在GOAL表中显示 Base和Goal表格是在我的excel表格中硬写的,作为示例,当前结果表格使用以下公式制作: 法文版(我使用的是法文Excel): {=SIERREUR( INDEX( B$5:B$100; PETITE.VALEUR( SI(

我正在尝试格式化Excel工作表中的数组。goel的作用与SUMIF的作用相反,对于我表格中的每个元素及其编号
x
,我想在另一个表格中创建该元素的
x
行。 由于屏幕截图比长对话更清晰,因此我希望实现以下目标:

如果水果出现
0
,则不应在
GOAL
表中显示

Base
Goal
表格是在我的excel表格中硬写的,作为示例,
当前结果
表格使用以下公式制作:

法文版(我使用的是法文Excel):

{=SIERREUR(
 INDEX(
  B$5:B$100;
  PETITE.VALEUR(
   SI(
    SI(
     ($C$5:$C$100>0);
     VRAI;
      FAUX
    );
    LIGNE(B$5:B$100)-LIGNE(B$5)+1
   );
   LIGNES(B$5:B5)
  )
 );
 ""
)} 
英文版(未测试):

{=IFERROR(
 INDEX(
  B$5:B$100;
  SMALL(
   IF(
    IF(
     ($C$5:$C$100>0);
     TRUE;
      FALSE
    );
    ROW(B$5:B$100)-ROW(B$5)+1
   );
   ROWS(B$5:B5)
  )
 );
 ""
)}
你能给我一些关于如何实现这一目标的提示吗?我想知道有没有办法不用VBA,只使用公式

注意:
我在工作中被要求这样做,我一生中从未使用过Excel,对VBA一无所知。这就是为什么我对这个任务有点迷茫。我通常用Python或C++来编码。我正在使用Excel 2010。

我使用VBA实现了我的目标,下面是我使用的代码:

Public Sub GenerateTable()
    ' This routing will copy rows based on the quantity to a new sheet.
    Dim rngSinglecell As Range
    Dim rngQuantityCells As Range
    Dim intCount As Integer
    Dim countCell As Integer

    ' Set this for the range where the Quantity column exists. This works only if there are no empty cells
    Set rngQuantityCells = Sheets("Feuil3").Range("C5", Sheets("Feuil3").Range("C5").End(xlDown))

    countCell = 4
    For Each rngSinglecell In rngQuantityCells
        ' Check if this cell actually contains a number
        If IsNumeric(rngSinglecell.Value) Then
            ' Check if the number is greater than 0
            If rngSinglecell.Value > 0 Then
                ' Copy this row as many times as .value
                For intCount = 1 To rngSinglecell.Value
                    ' Copy the row into the next emtpy row in sheet2
                    countCell = countCell + 1
                    Intersect(Range(rngSinglecell.Address).EntireRow, Columns("B:D")).Copy Destination:=Sheets("Feuil3").Range("G" & CStr(countCell))
                Next
            End If
        End If
    Next
End Sub
以下是输出:


基于Matt在中的回答的解决方案。

看起来我在提出这个问题之前所做的研究还不够好,这里有一个可能的解决方案。我会在这个基础上找到我自己的解决方案。如果你在读了那篇文章后仍然决定要一个纯基于公式的解决方案,请告诉我。我使用VBA实现了我想要的,谢谢你的时间。好的,谢谢你回复我,很高兴你得到了一个解决方案。