Передать несколько значений и получить выбранные результаты в ячейке - PullRequest
0 голосов
/ 09 февраля 2019

Я новичок с Excel VBA и пытаюсь использовать его для сценария в Excel рабочей книге.Я пытаюсь сделать поиск нескольких значений в ячейке, и это должно быть выделено.Скажем, у меня есть эти идентификаторы - 1001, 1002, поэтому в конкретной ячейке эти значения должны быть выделены или обысканы.Я не уверен, как я могу использовать List<> в VBA, но в C# я могу сделать следующее:

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

Так что со списком я могу перебрать идентификаторы и получить результатысоответствует.Я искал следующий 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 голосов
/ 09 февраля 2019

Так что скопируйте эту функцию в новый модуль.

Затем вы можете получить доступ через другую функцию или процедуру или через формулу Excel в такой ячейке, как = MultiCellExtract (A2: A3; A2: B3; 2)

' 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

Дайте мне знать, если это поможет, или мы можем отрегулировать его.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...