поиск Excel и показать ценность / данные с другого листа

0
задан Jin Asterich 5 March 2019 в 15:08
поделиться

2 ответа

Если ваши результаты не должны быть на другом листе, вы можете просто преобразовать свои данные в таблицу. Выберите Ячейки A1: D8 и нажмите Вставить -> Таблица. Убедитесь, что «Моя таблица имеет заголовки», и вуаля!

После форматирования в виде таблицы вы можете отфильтровать идентификатор продукта, как вам нужно.

Если вам нужно показать эти результаты на другом листе, VBA станет для меня подходящим решением. Может быть что-то вроде этого:

Public Sub FilterResults()
    Dim findText As String
    Dim lastRow As Long
    Dim foundRow As Long
    Dim i As Long

    'If there's nothing to search for, then just stop the sub
    findText = LCase(Worksheets("Sheet2").Range("D4"))
    If findText = "" Then Exit Sub

    'Clear any old search results
    lastRow = Worksheets("Sheet2").Cells(Rows.Count, 4).End(xlUp).Row
    If lastRow > 5 Then
        For i = 6 To lastRow
            Worksheets("Sheet2").Range("C" & i).ClearContents
            Worksheets("Sheet2").Range("D" & i).ClearContents
            Worksheets("Sheet2").Range("E" & i).ClearContents
            Worksheets("Sheet2").Range("F" & i).ClearContents
        Next i
    End If

    'Start looking for new results
    lastRow = Worksheets("Sheet1").Cells(Rows.Count, 1).End(xlUp).Row
    foundRow = 6

    For i = 2 To lastRow
        If InStr(1, LCase(Worksheets("Sheet1").Range("B" & i)), findText) <> 0 Then
            Worksheets("Sheet2").Range("C" & foundRow) = Worksheets("Sheet1").Range("A" & i)
            Worksheets("Sheet2").Range("D" & foundRow) = Worksheets("Sheet1").Range("B" & i)
            Worksheets("Sheet2").Range("E" & foundRow) = Worksheets("Sheet1").Range("C" & i)
            Worksheets("Sheet2").Range("F" & foundRow) = Worksheets("Sheet1").Range("D" & i)
            foundRow = foundRow + 1
        End If
    Next i

    'If no results were found, then open a pop-up that notifies the user
    If foundRow = 6 Then MsgBox "No Results Found", vbCritical + vbOKOnly
End Sub
0
ответ дан Steve 5 March 2019 в 15:08
поделиться

Я бы рекомендовал избегать VBA для этого процесса, поскольку это легко сделать с помощью функций Excel. Если вы хотите сделать это через VBA, можно просто просмотреть список продуктов и найти ключевое слово, добавив его в массив, если «Cheetos» содержится в определенном значении ячейки с использованием подстановочного знака, например, так:

Это может быть изменено, чтобы запускаться при смене ячейки D4, если это необходимо, и, конечно, могут быть сделаны некоторые модификации, чтобы гарантировать, что форматирование и т. Д. Может быть выполнено по вашему вкусу.

Sub test()
Dim wb As Workbook
Dim rng As Range, cell As Range
Dim s_key As String, s_find() As String
Dim i As Long

Set wb = Application.ThisWorkbook


Set rng = wb.Sheets("Sheet1").Range("B2:B8")
s_key = wb.Sheets("Sheet2").Range("D4").Value
wb.sheets("Sheet2").Range("C6:F9999").clearcontents
i = 0

For Each cell In rng
    If cell.Value Like "*" & s_key & "*" Then
        ReDim Preserve s_find(3, i)
        s_find(0, i) = cell.Offset(0, -1).Value
        s_find(1, i) = cell.Value
        s_find(2, i) = cell.Offset(0, 1).Value
        s_find(3, i) = cell.Offset(0, 2).Value
        i = i + 1

    End If

Next cell


wb.Sheets("Sheet2").Range("C6:F" & 5 + i).Value = Application.WorksheetFunction.Transpose(s_find)

End Sub
0
ответ дан SadMrFrown 5 March 2019 в 15:08
поделиться
Другие вопросы по тегам:

Похожие вопросы: