解释

解释

此应用程序用于列出机架物品将位于仓库中。

例如,如果某件物品存放在几个不同的架子上。我不需要知道该物品重复了多少次,只需要知道可以找到该物品的列标题(本例中为“架子号”)。

我创建了一个简单的示例,需要 B2 的代码。

我只需输入 B2 的值即可显示我想要的结果:

在此处输入图片描述

答案1

不使用 VBA 的巧妙解决方案

  • 插入=""到 G2:G6。
  • 插入=IF(NOT(ISNA(MATCH($A2,D$2:D$5,0))),CONCATENATE(G2,IF(G2="","",", "),D$1),G2)H2 并将其复制到 H2:J6
  • 插入=J2到B2并复制到B2:B6

问题解答

如果添加机架,则需要在 J 柱右侧添加列。

更多机架和机架中的更多内容

如果 Excel 中有一个好的字符串连接函数,我们就可以缩短它......

解释

我们需要放入=""G 列,因为我希望在 H 到 J 列中有相同的代码并且没有多余的 if 子句。

长命令解释道:

  • A2 位于 D2:D5 列的哪一行(如果不存在则为 #NA)=> MATCH(A2,D2:D5,0)
  • A2 不在 D2:D5 列中 => ISNA(MATCH(A2,D2:D5,0))
  • 反转“A2 是否不在 D2:D5 列中”=>NOT(ISNA(MATCH(A2,D2:D5,0)))
  • 如果发生上述情况则执行此操作,否则执行该操作 => IF(NOT(ISNA(MATCH(A2,D2:D5,0))),THIS,THAT)
  • 这个(A2 在列中 = 我们想要写下“Rack 1”)=> CONCATENATE(G2,IF(G2="","",", "),D1)
  • 那(我们没有新东西)=> G2

答案2

以下是使用 VBA/宏的操作:

Public Function racks(code As String, range As range) As String
    result = ""
    Separator = ","
    colRanges = range.Columns.Count
    rowRanges = range.Rows.Count
    For i = 1 To colRanges
        For j = 2 To rowRanges
            If code = range.Cells(j, i) Then
                If result <> "" Then
                    result = result & Separator & range.Cells(1, i)
                Else
                    result = range.Cells(1, i)
                End If
                j = rowRanges
            End If
        Next j
    Next i
    racks = result
End Function

使用 Alt+F11 打开 VBA/Macros,在下方插入一个新模块本工作簿,并将此代码粘贴到右侧。

该函数使用两个参数,代码范围它将在哪里进行搜索。

例如,对于细胞B2 根据您的示例,它将是=racks(A2,$D$1:$F$5)

相关内容