Получение последней ячейки в строке с данными и соответствующими данными в столбце A в Excel
У меня есть таблица, в которой в столбце А перечислены даты. Столбец B может содержать или не содержать данные в каждой ячейке.
У меня вопрос, когда я беру последнюю ячейку с данными в столбце B, как я могу также получить соответствующие данные в столбце A?
На отдельном листе я хочу иметь 3 ячейки с данными:
Ячейка 1 = данные в последней ячейке, содержащей данные в столбце B
Ячейка 2 = соответствующая дата в столбце A
Ячейка 3 = заголовок столбца B (заголовок будет отличаться каждый раз)
я использую =LOOKUP(9.99E+307,B:B)
чтобы получить последнюю ячейку с данными в столбце B
Затем я повторю последнюю ячейку с данными в столбцах C, D и т. Д.
4 ответа
Так что это ищет значение последнего непустого
=LOOKUP(9.99E+307,B:B)
Итак, это будет искать строку последнего непустого
=MATCH(9E+99+307,B:B,1)
Если вы хотите знать, что рядом с ним, вы можете использовать косвенный -
=INDIRECT("A"&MATCH(9E+99+307,B:B,1))
Или вы можете использовать индекс / совпадение (возможно, лучший выбор)
=INDEX(A:B,MATCH(9E+307,B:B,1),1)
Выше приведены очень креативные решения, но вам не нужно делать что-то необычное. Match поддерживает синтаксис "*". Так =INDEX(A:A,MATCH("*",B:B,-1))
доставит вас туда:)
Если вы используете LOOKUP
как это, чтобы получить последнее значение в столбце B
=LOOKUP(9.99E+307,B:B)
.... тогда вы можете просто добавить другой столбец в качестве 3-го аргумента, чтобы вернуть соответствующую ячейку из этого столбца, т.е.
=LOOKUP(9.99E+307,B:B,A:A)
С VBa сначала возьмите копию файла (нет возможности отменить)
Попробуй это
Option Explicit
Sub DoTheThingy()
Dim row As Integer
row = 2 'start at 2 because we have headers
Dim myDate As String
Dim myValue As String
Do While (Worksheets("Sheet1").Range("A" & row).Value <> "")
If Worksheets("Sheet1").Range("B" & row).Value <> "" Then
myDate = Worksheets("Sheet1").Range("A" & row).Value
myValue = Worksheets("Sheet1").Range("B" & row).Value
End If
row = row + 1
Loop
Worksheets("Sheet2").Range("A1").Value = myDate
Worksheets("Sheet2").Range("B1").Value = myValue
Worksheets("Sheet2").Range("C1").Value = Worksheets("Sheet1").Range("B1").Value
End Sub
Также см. Как добавить VBA в MS Office?
Рабочий лист 1:
Рабочий лист 2 после запуска макроса