
Каждую неделю я загружаю отчет с 8 столбцами данных в таблицу. Количество данных меняется каждую неделю по строкам (одна неделя может иметь 40 строк, следующая может иметь 100, но не более 150). Заголовки данных останутся прежними.
Мне нужно иметь возможность автоматически отображать/анализировать все данные в строке, где "HOT: Must Cover" появляется в столбце B, в идентичной таблице на другом листе. Могу ли я как-то использовать VLOOKUP вместе с =IF?
Пример таблицы на листе 1:
решение1
Один из вариантов — использовать опцию фильтра в Excel, а затем отсортировать их в алфавитном порядке по столбцу B. Если они вам действительно нужны на отдельном листе, вы можете скопировать и вставить их на следующий лист (так как все они будут сгруппированы в результате сортировки).
В качестве альтернативы вам нужно будет написать макрос, который считывает столбец B в каждой строке и копирует строку, если ее содержимое равно «Hot: Must Cover».
Что-то вроде этого:
Dim i as Integer
Dim j as Integer
i = 0
j = 0
Do While Cells(i, 2).value != ""
if Cells(i, 2).Value == "Hot: Must Cover" Then
Worksheets("Sheet1").Range(Cells(j, 0), Cells(j, 7).Value = Worksheets("Sheet1").Range(Cells(i, 0), Cells(i, 7).Value
j = j + 1
End if
i=i+1
loop
решение2
Я думаю, что это будет трудно сделать с помощью VLOOKUP
(или любого другого поиска). Рассмотрим это решение VBA:
Sub test
Dim ws1 As Worksheet, ws2 As Worksheet
Dim j As Integer
Set ws1 = Worksheets(1)
Set ws2 = Worksheets(2)
j = 1
For i = 2 To (ws1.Range("A1").ListObject.DataBodyRange.Count + 1)
If ws1.Range("B" & i).Value = "HOT: Must Cover" Then
ws1.Range("A" & i & ", G" & i).Copy
ws2.Range("A" & j).PasteSpecial xlPasteValues
j = j + 1
End If
Next i
End Sub