Отредактированный ответ: (согласно комментарию)
У нас есть следующий макет продуктов
Private Sub CommandButton1_Click()
'first we check the user input
Dim u_input As String
Dim ws As Worksheet: Set ws = Sheets("Sheet1")
u_input = LCase(Trim(ws.Range("A1").Value2))
'now we need to determine how many columns there are so we know when to stop looping
Dim lc As Long, lr As Long
lc = ws.Cells(1, ws.Columns.Count).End(xlToLeft).Column
' loops through all the products
For Each cell In Range(Cells(1, "F"), Cells(1, lc))
' if the product matches the input
If LCase(Trim(cell)) = u_input Then
lr = ws.Cells(ws.Rows.Count, cell.Column).End(xlUp).Row
' copy and paste the active data range to A37
ws.Range(Cells(1, cell.Column), Cells(lr, cell.Column)).Copy
Sheets("Sheet2").Range("A37").PasteSpecial
End If
Next cell
End Sub
Итак, после ввода огурца и нажатия кнопки:
Мы бы получили следующий результат:
Вы можете добавить туда любое количество товаров, если первый товар начинается в столбце F. (хотя это также можно изменить в коде).
PS: Однако это приведет к перезаписи ваших данных и к тому, что данные будут перекрываться, если диапазоны данных не совпадают. Возможно, было бы разумнее вставить данные в следующую пустую строку в sheet2, а не напрямую в A37
Это может быть достигнуто путем изменения строки
Sheets("Sheet2").Range("A37").PasteSpecial
до Sheets("Sheet2").Range(Cells((Rows.Count, "A").End(xlUp).Row, "A")).PasteSpecial