我正在尝试提出一个可以在不同工作表中运行并引用以下数据的公式。
基本上对于 D 中的每个单元格,我想向上检查,当我找到字符串“发票”时,我选择上面的下一行和 B 列。基本上我每次都会找到公司名称。如您所见,每家公司的记录行数可能会有所不同。
更简单地说,该公式可以只对 B 列起作用,并直接返回字符串“Status”第一次出现的上方的字符串。
我不喜欢这有多复杂,但我无法控制我收到的数据格式,而且来源拒绝更改它。
原始数据
A B C D
1 ABC Widgets, Inc.
2 Account Status Date Invoice
3 1423 Open 4/25/2011 123748
4 1423 Closed 5/1/2011 432741
5 1423 Open 5/2/2011 522211
6
7 XYZ Sprockets, Inc.
8 Account Status Date Invoice
9 3222 Open 5/3/2011 529999
10
完成数据
A B C D E
2 Account Status Date Invoice Client
3 1423 Open 4/25/2011 123748 ABC Widgets, Inc.
4 1423 Closed 5/1/2011 432741 ABC Widgets, Inc.
5 1423 Open 5/2/2011 522211 ABC Widgets, Inc.
9 3222 Open 5/3/2011 529999 XYZ Sprockets, Inc.
纳奇,
虽然我无法让您的 VBA 代码正常工作(见评论),但它确实让我想出了这个代码,它找到了第一次出现的“状态”,然后偏移了上面的 1 个单元格。这本质上是我正在尝试的,但采用公式格式。
Sub findFirstStringAbove()
'
Cells.Find(What:="Status", After:=ActiveCell, LookIn:=xlFormulas, LookAt _
:=xlPart, SearchOrder:=xlByRows, SearchDirection:=xlPrevious, MatchCase _
:=False).Offset(-1, 0).Select
End Sub