Есть ли способ создать функцию поиска в Excel, которая имеет 3-4 переменных в качестве входных данных и возвращает только один выход? - PullRequest
0 голосов
/ 15 января 2019

Я создаю инструмент оценки капитала проекта в Excel. В данных, которые у меня есть, мне нужно как минимум 3 переменные, чтобы определить конкретную часть оборудования, которая может понадобиться проекту. Например, название фитинга, его размер и жидкость, протекающая через него, и это будет возвращать себестоимость единицы продукции (которая у меня уже есть в моей базе данных). Просто нужно, чтобы это было в аккуратной функции поиска. Спасибо

1 Ответ

0 голосов
/ 15 января 2019

Если у вас есть ваши данные, и критерии поиска, и база данных в Excel, вы можете использовать это:

Option Explicit

Sub Test()

    Dim strType As String, Datasheet As String, Service As String, Supplier As String, SearchString As String
    Dim i As Long, Lastrow As Long
    Dim wsCriteria As Worksheet, wsDatabase As Worksheet

    Set wsCriteria = ThisWorkbook.Worksheets("Criteria")
    Set wsDatabase = ThisWorkbook.Worksheets("Database")

    With ThisWorkbook.Worksheets("Criteria")

        strType = .Range("B2").Value
        Datasheet = .Range("B3").Value
        Service = .Range("B4").Value
        Supplier = .Range("B5").Value

        SearchString = strType & "_" & Datasheet & "_" & Service & "_" & Supplier

    End With

    Lastrow = wsDatabase.Cells(wsDatabase.Rows.Count, "A").End(xlUp).Row

        For i = 2 To Lastrow

            If wsDatabase.Range("A" & i).Value & "_" & wsDatabase.Range("B" & i).Value & "_" & wsDatabase.Range("C" & i).Value & "_" & wsDatabase.Range("G" & i).Value = SearchString Then
                wsCriteria.Range("A7:J7").Clear
                wsCriteria.Range("A7").Value = wsDatabase.Range("A" & i).Value
                wsCriteria.Range("B7").Value = wsDatabase.Range("B" & i).Value
                wsCriteria.Range("C7").Value = wsDatabase.Range("C" & i).Value
                wsCriteria.Range("D7").Value = wsDatabase.Range("D" & i).Value
                wsCriteria.Range("E7").Value = wsDatabase.Range("E" & i).Value
                wsCriteria.Range("F7").Value = wsDatabase.Range("F" & i).Value
                wsCriteria.Range("G7").Value = wsDatabase.Range("G" & i).Value
                wsCriteria.Range("H7").Value = wsDatabase.Range("H" & i).Value
                wsCriteria.Range("I7").Value = wsDatabase.Range("I" & i).Value
                wsCriteria.Range("J7").Value = wsDatabase.Range("J" & i).Value
                Exit For
            End If

        Next i

End Sub

Лист с названием «Критерии» до и после:

enter image description here

enter image description here

Лист с именем «База данных»:

enter image description here

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