Vba Excel矩阵获取(多个)值

Vba Excel矩阵获取(多个)值,vba,excel,matrix,excel-formula,Vba,Excel,Matrix,Excel Formula,正如你所看到的,我们有一个包含数据的矩阵。(我删除了行和列的标题,因为它是不应该传播的公司信息。) 链接: 这就是我需要的: 当矩阵中有一个“X”时,我需要它下面的列的值(从“黄色”范围:B1:W1)。如您所见,一行中可能有更多的“X”(“蓝色”范围:A3:A48) 因此,当选择A11时,我需要B11和M11的值) 我希望有人能够通过函数来实现这一点?我不确定如何获得B11和M11的值,但可以逐个单元格进行计算。只要这样做: =IF(A1 = "X", COLUMN(A1), "") 这将

正如你所看到的,我们有一个包含数据的矩阵。(我删除了行和列的标题,因为它是不应该传播的公司信息。)

链接:

这就是我需要的:

  • 当矩阵中有一个“X”时,我需要它下面的列的值(从“黄色”范围:B1:W1)。如您所见,一行中可能有更多的“X”(“蓝色”范围:A3:A48)
  • 因此,当选择A11时,我需要B11和M11的值)

我希望有人能够通过函数来实现这一点?

我不确定如何获得B11和M11的值,但可以逐个单元格进行计算。只要这样做:

=IF(A1 = "X", COLUMN(A1), "")
这将得到A1的列号,即“1”。使用VBA肯定有一种方法可以满足您的需求,但我目前还没有这方面的经验,因此我对您没有什么帮助。

VBA解决方案

如果我正确理解了你的问题,这应该会奏效,或者至少是一个很好的开始

Option Explicit

Function findvalues(rng As Range) As String

Dim cel As Range, str As String

For Each cel In rng
    If cel.Value = "X" Then str = str & "," & cel.Value
Next

findvalues = Mid(str, 2)

End Function
根据链接中的电子表格,像这样实现它


在单元格A3
=findvalues(B3:W3)
中,在单元格B2
=findvalues(B3:B48)

中,如果不使用VBA/用户定义函数,则无法将多个匹配返回到单个单元格。这样的自定义项是不存在的,但您可能需要进行一些修改。