Как я могу выбрать и вывести первую и последнюю строку листа или отфильтрованного списка?

0

Я новичок в VBA, и я понятия не имею, с чего начать.

У меня есть два столбца данных:

Team Member Time
A             1
A             2
A             3
A             4

Меня интересует только первый и последний ряд этой таблицы, и мой ожидаемый результат такой:

Team Member Time
A             1
A             4

Общее количество строк в моей электронной таблице постоянно меняется, поэтому нет последней фиксированной последней строки.

Существуют ли простые функции Excel, которые могут помочь мне в этом, которые я могу записать с помощью макроса, или я должен создать функцию, используя для этого VBA?

Вот макрос, который просто выбирает 2-й и 3-й ряд, чтобы удалить его:

Sub Del()
Rows("3:4").Select
    Selection.Delete Shift:=xlUp
    Range("A1").Select
End Sub

Но это, очевидно, не работает, когда количество строк варьируется.

Ачьюта Мохан
источник
Здесь не хватает некоторых деталей. В списке больше чем член команды А? Вы хотите первый и последний ряд независимо от члена команды? Что вы пытались до сих пор?
CharlieRB
@CharlieRB В списке только один член команды. Мне нужны только первый и последний ряды этого одного члена команды. До сих пор я вручную удалял все промежуточные строки. Затем я записал макрос, который удаляет средние строки только тогда, когда общее количество строк равно 100. Однако теперь, поскольку количество строк меняется, я больше не могу использовать этот макрос.
Ачьюта Мохан
Поскольку вы уже выполнили работу, возможно, лучше задать вопрос, как заставить ваш макрос делать то, что вы хотите. Почему бы не опубликовать это здесь, чтобы мы могли посмотреть, можем ли мы помочь вам настроить его так, как вы хотите; удалить все строки, кроме первой и последней. Это кажется лучше, чем начинать с нуля.
CharlieRB
@CharlieRB: В этом не было ничего значительного, поэтому я не предоставил это. Я включил это в вопрос сейчас.
Ачьюта Мохан
Есть ли пустые строки в данных? Похоже, что первая строка всегда находится в известном месте, так что это тривиально, чтобы получить (просто ссылку на него). Если пустых строк нет, подсчитайте количество записей и смещение для первой строки, чтобы получить последнюю строку. Это просто требует функции, а не VBA.
fixer1234

Ответы:

0

Учитывая, что вы пытаетесь использовать VBA для упрощения своих задач, это здорово! Ваш макрос мог быть простым, но это было хорошее начало.

Ниже приведен макрос, который можно вставить ThisWorkbookв проводник VBA. При запуске он найдет последнюю строку, выберите диапазон между первой и последней строкой (при условии, что A1 всегда является первой), затем удалите диапазон, оставив вас с первой и последней строкой.

Sub Del()

Dim sht As Worksheet
Dim LastRow As Long
Dim DataRange As Range

Set sht = ThisWorkbook.ActiveSheet

LastRow = sht.Cells(sht.Rows.Count, "A").End(xlUp).Row
LastRow = LastRow - 1
Set DataRange = Range("A2:B" & LastRow)

DataRange.Delete

End Sub

Примечание. Этот макрос удаляет данные! Используйте на свой риск.

CharlieRB
источник
Работал как шарм! Я должен попытаться понять код, хотя. Я просто изменил "A2:B"на "A3:B"так, чтобы выходные данные включали заголовки столбцов и первую и последнюю строки под ним.
Ачьюта Мохан
0

С такими данными, как:

введите описание изображения здесь

В C2 введите:

=IF(ROW()=2,"alpha",IF(B3="","omega",""))

и скопировать вниз. Затем автофильтр столбец C для отображения альфа и омега .

введите описание изображения здесь

Ученик Гэри
источник