У меня есть таблица, в которой в столбце А перечислены даты. Столбец B может содержать или не содержать данные в каждой ячейке.

У меня возникает вопрос: когда я беру последнюю ячейку с данными в столбце B, как я могу также получить соответствующие данные в столбце A?

На отдельном листе я хотел бы иметь 3 ячейки с данными:

Ячейка 1 = данные в последней ячейке, содержащей данные в столбце B

Ячейка 2 = соответствующая дата в столбце A

Ячейка 3 = заголовок столбца B (заголовок будет отличаться каждый раз)

Я использую =LOOKUP(9.99E+307,B:B) чтобы получить последнюю ячейку с данными в столбце B

Затем я повторю последнюю ячейку с данными в столбцах C, D и т.д.

4 ответа4

2

Так что это ищет значение последнего непустого

=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)
0

С 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 после запуска макроса

0

Выше приведены очень креативные решения, но вам не нужно делать что-то необычное. Match поддерживает синтаксис "*". Так что =INDEX(A:A,MATCH("*",B:B,-1)) приведет вас туда :)

0

Если вы используете LOOKUP как это, чтобы получить последнее значение в столбце B

=LOOKUP(9.99E+307,B:B)

.... тогда вы можете просто добавить другой столбец в качестве 3-го аргумента, чтобы вернуть соответствующую ячейку из этого столбца, т.е.

=LOOKUP(9.99E+307,B:B,A:A)

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