Obtendo a última célula na linha com dados e dados correspondentes na coluna A no Excel

0

Eu tenho uma planilha que na coluna A lista as datas. A coluna B pode ou não ter dados em cada célula.

A pergunta que tenho é quando eu pego a última célula com dados na coluna B, como eu também posso pegar os dados correspondentes na coluna A?

Em uma folha separada, desejo ter 3 células com dados:

Célula 1 = os dados na última célula que contém dados na coluna B

Célula 2 = a data correspondente na coluna A

Célula 3 = o cabeçalho da coluna B (o cabeçalho será diferente a cada vez)

Estou usando =LOOKUP(9.99E+307,B:B) para obter a última célula com dados na coluna B

Vou então repetir para a última célula com dados nas colunas C, D, etc…

    
por Eric 27.02.2015 / 12:30

4 respostas

2

Isso procura o valor do último não-branco

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

Então, isso procuraria a linha do último não-branco

=MATCH(9E+99+307,B:B,1)

Se você quiser saber o que há a seguir, use indiretamente -

=INDIRECT("A"&MATCH(9E+99+307,B:B,1))

Ou você pode usar um índice / correspondência (provavelmente uma melhor escolha )

=INDEX(A:B,MATCH(9E+307,B:B,1),1)
    
por 27.02.2015 / 14:15
0

Com o VBa, copie primeiro o arquivo (não há opção para desfazer)

Tente isso

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

Veja também Como adiciono o VBA no MS Office?

Planilha 1:

Planilha2depoisdeexecutaramacro

    
por 27.02.2015 / 13:30
0

Se você está usando LOOKUP assim para obter o último valor na coluna B

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

.... então você pode simplesmente adicionar outra coluna como terceiro argumento para retornar a célula correspondente daquela coluna, ou seja,

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

    
por 01.03.2015 / 03:16
0

As soluções acima são muito criativas, mas você não precisa fazer nada extravagante. Match suporta a sintaxe "*". Então =INDEX(A:A,MATCH("*",B:B,-1)) vai te levar lá:)

    
por 01.03.2015 / 18:05