传递多个值并在单元格中获取选定的结果

时间:2019-02-09 05:32:51

标签: excel vba formula excel-2013

我是Excel VBA的新手,并试图将其用于Excel工作簿中的场景。我正在尝试在单元格中进行多值搜索,这应该突出显示。假设我有这些ID-1001、1002,因此在特定单元格中应突出显示或搜索这些值。我不确定如何在List<>中使用VBA,但是在C#中,我可以执行以下操作:

List<string> aLst = new List<string>();
aLst.Add("1001");
aLst.Add("1002");

因此,有了列表,我可以迭代id并获得匹配的结果。我正在研究以下VBA代码,它获取一个值作为参数。然后检查匹配的一个:

Function SingleCellExtract(Lookupvalue As String, LookupRange As Range, ColumnNumber As Integer)
Dim i As Long
Dim Result As String
For i = 1 To LookupRange.Columns(1).Cells.Count

If LookupRange.Cells(i, 1) = Lookupvalue Then
  Result = Result & " " & LookupRange.Cells(i, ColumnNumber) & ","
  End If
  Next i
  SingleCellExtract = Left(Result, Len(Result) – 1)
End Function 

这是我关注的链接:Excel VBA
因此,我可以使用List<>并搜索Excel工作表中突出显示的所需值的任何方式?

示例

Id   -   Name
1001     John
1002     Jack

1 个答案:

答案 0 :(得分:1)

因此,将此功能复制到新模块中。

然后,您可以通过其他函数或过程或通过= MultiCellExtract(A2:A3; A2:B3; 2)等单元格中的excel公式访问

' LookupValuesRange is an Excel Range of cells
Public Function MultiCellExtract(LookupValuesRange As Range, LookupRange As Range, ColumnNumber As Integer) As String

    Dim cellValue As Range

    Dim i As Long
    Dim Result As String

    For Each cellValue In LookupValuesRange

        For i = 1 To LookupRange.Columns(1).Cells.Count

            If LookupRange.Cells(i, 1) = cellValue.Value Then
                Result = Result & " " & LookupRange.Cells(i, ColumnNumber) & ","
            End If

        Next i

    Next cellValue

    MultiCellExtract = Left(Result, Len(Result) - 1)

End Function

让我知道是否有帮助,或者我们可以进行调整。