Excel:如果满足条件,则给出单元格名称

Excel:如果满足条件,则给出单元格名称,excel,Excel,假设Excel中有下表。如何获取一行中非空单元格的列表。 理想情况下,这将是一个给定的细胞名称,如这里的“蜂蜜”等。但我会满足于一个包含Excel单元格名称的列表,即B、D、G。 计算>0的单元格数相当容易,但是如何获得它们的标识呢 recipe No Honey Sugar Chocolate Berries Juice Milk Result 1 5 0 2 0 0 3

假设Excel中有下表。如何获取一行中非空单元格的列表。 理想情况下,这将是一个给定的细胞名称,如这里的“蜂蜜”等。但我会满足于一个包含Excel单元格名称的列表,即B、D、G。 计算>0的单元格数相当容易,但是如何获得它们的标识呢

recipe No   Honey   Sugar   Chocolate   Berries Juice   Milk     Result
        1       5       0           2         0     0      3     Honey,Chocolate,Milk

您可以使用此VBA函数。通过将标题成分作为第一个参数的行范围和数量作为第二个参数的行范围来调用它。将此函数放入VBA模块后,可以像本机Excel函数一样使用它。它不会在此处检查输入是否正确,因此范围标题和金额必须包含相等的单元格计数

Function Ingredients(headers As Range, counts As Range) As String
    Dim i As Integer
    Dim s As String
    Dim sp As String

    For i = 1 To headers.Cells.Count
        If counts(i) <> 0 Then
            s = s + sp + headers(i)
            sp = ", "
        End If
    Next
    Ingredients = s
End Function

将可变数量的字符串连接到单个字符串是一个常见的问题。使用“本机”Excel公式几乎是不可能的。你需要VBA。如果我知道怎么做,我会用perl来做。实际的语言或格式不是约束条件
=Ingredients(B1:G1;B2:G2)