我有一张电子表格,其中 A 列列出了日期。B 列的每个单元格可能有数据,也可能没有数据。
我的问题是,当我抓取 B 列中包含数据的最后一个单元格时,如何才能抓取 A 列中的相应数据?
在单独的工作表上,我希望有 3 个包含数据的单元格:
单元格 1 = 包含 B 列数据的最后一个单元格中的数据
单元格 2 = A 列中的相应日期
单元格 3 = B 列的标题(每次的标题都会不同)
我用来 =LOOKUP(9.99E+307,B:B)
获取 B 列中包含数据的最后一个单元格
然后,我将对最后一个单元格重复上述操作,其中 C 列、D 列等中的数据...
答案1
因此这将查找最后一个非空白的值
=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)
答案2
使用 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
工作表 1:
运行宏后的工作表 2
答案3
如果你使用LOOKUP
这样的方法来获取 B 列中的最后一个值
=LOOKUP(9.99E+307,B:B)
....然后您可以简单地添加另一列作为第三个参数来返回该列中的相应单元格,即
=LOOKUP(9.99E+307,B:B,A:A)
答案4
以上都是非常有创意的解决方案,但您实际上不需要做任何花哨的事情。 Match 支持“*”语法。 所以=INDEX(A:A,MATCH("*",B:B,-1))
会帮到您:)