如何根据单元格值格式化多维数组?

时间:2015-04-14 14:04:26

标签: excel excel-formula excel-2010

我正在尝试在Excel工作表中格式化数组。 goel有点与SUMIF相反,对于我的表的每个元素,它的编号为x,我想在另一个表中创建此元素的x行。 由于屏幕截图比长对话框更明确,因此我想要实现:Excel table

如果果实出现0,则不应在GOAL表格中显示。

我的Excel工作表中写有BaseGoal表,并以此公式为例,Current Result表格使用以下公式编写:

法语版(我正在使用法语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。

1 个答案:

答案 0 :(得分:0)

我设法使用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

这是输出:

Result

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