1

Я загружаю отчет с 8 столбцами данных в таблицу каждую неделю. Количество данных меняется каждую неделю за строкой (одна неделя может иметь 40 строк, следующая - 100, но не более 150). Заголовки данных останутся прежними.

Мне нужно, чтобы все данные в строке, где в столбце B отображалось «HOT: Must Cover», автоматически появлялись / анализировались в идентичной таблице на другом листе. Буду ли я каким-то образом использовать VLOOKUP вместе с = IF?

Пример таблицы в листе 1:

2 ответа2

0

Я думаю, что было бы трудно сделать это с помощью 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
0

Один из вариантов, который у вас есть, - это использовать параметр фильтра в 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

Всё ещё ищете ответ? Посмотрите другие вопросы с метками .