Warning: file_get_contents(/data/phpspider/zhask/data//catemap/0/vba/16.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Excel 仅当列表没有零值时,才创建列表的波动副本_Excel_Vba_Formula - Fatal编程技术网

Excel 仅当列表没有零值时,才创建列表的波动副本

Excel 仅当列表没有零值时,才创建列表的波动副本,excel,vba,formula,Excel,Vba,Formula,我有一张excel表格,如下所示: Ingredient Amount Bananas 2 Apples 0 Eggs 10 Jelly 0 Pancake 0 Bread 1 Ingredient Amount Bananas 2 Eggs 10 Bread 1 我想在excel的另一张表

我有一张excel表格,如下所示:

 Ingredient      Amount
 Bananas         2
 Apples          0
 Eggs            10
 Jelly           0
 Pancake         0
 Bread           1
 Ingredient     Amount
 Bananas        2
 Eggs           10
 Bread          1
我想在excel的另一张表中列出相同的列表,但忽略所有数量为零的成分。所以它应该是这样的:

 Ingredient      Amount
 Bananas         2
 Apples          0
 Eggs            10
 Jelly           0
 Pancake         0
 Bread           1
 Ingredient     Amount
 Bananas        2
 Eggs           10
 Bread          1
我不知道如何编写一个公式,使列表能够转换,而不会在原始“零”项所在的位置留下巨大的空白。]

我不能只是复制和粘贴非零成分,因为我需要列表波动,因为成分及其数量将不断更新。有数百种成分


感谢您的帮助

现在,您必须弄清楚如何在工作表更改时触发代码

Private Sub grocerylist()
    Dim arr As Variant
    arr = ThisWorkbook.Sheets("Sheet3").UsedRange
    For i = LBound(arr, 1) To UBound(arr, 1)
        If arr(i, 2) <> 0 Then
            Debug.Print ; arr(i, 2)
            ThisWorkbook.Sheets("Sheet4").Cells(Sheet4.Rows.Count, 1).End(xlUp).Offset(1, 0).Value = arr(i, 1)
            ThisWorkbook.Sheets("Sheet4").Cells(Sheet4.Rows.Count, 1).End(xlUp).Offset(0, 1).Value = arr(i, 2)
        End If
    Next i
End Sub 
Private Sub grocerylist()
作为变体的Dim-arr
arr=此工作簿。工作表(“Sheet3”)。使用Drange
对于i=LBound(arr,1)到UBound(arr,1)
如果arr(i,2)0那么
调试、打印;arr(i,2)
ThisWorkbook.Sheets(“Sheet4”).单元格(Sheet4.Rows.Count,1).结束(xlUp).偏移量(1,0).值=arr(i,1)
ThisWorkbook.Sheets(“Sheet4”).单元格(Sheet4.Rows.Count,1).结束(xlUp).偏移量(0,1).值=arr(i,2)
如果结束
接下来我
端接头

您自己先尝试过什么吗?我有一个IF语句(IF cell=0,“,component),但这会在最后一页留下漏洞。也就是说,如果数量为0,则只有空单元格。我不知道如何更改该语句,以说明(单元格=0,搜索其他非零单元格,成分)是否按数量降序排列列表。然后隐藏所有零行