我在工作表中有一个标题,所有标题都在第1行中。我需要搜索每个特定标题的最后一个实例。请在下面查看我正在查看的基本概念的屏幕截图。我需要宏来标识从左向右读取的“ dog”的最后一个实例,或从右向左读取的“ dog”的第一个实例,以两种方式返回I1的地址。其余标头也是如此,但是一旦有了功能正常的模板,我就可以处理。
我已经在线检查了一下,但看不到任何有效的方法。
答案 0 :(得分:1)
在两种解决方案中,目标列都将存储为Range
,这将允许您访问诸如Range.Column
,Range.Row
,Range.Address
等属性。测试代码并正常工作
Option Explicit
Sub Test()
Dim ws As Worksheet: Set ws = ThisWorkbook.Sheets("Sheet1")
Dim LCol As Long, MyCell As Range, Found As Range
LCol = ws.Cells(1, ws.Columns.Count).End(xlToLeft).Column
For Each MyCell In ws.Range(ws.Cells(1, 1), ws.Cells(1, LCol))
If MyCell = "Dog" Then
Set Found = MyCell
End If
Next MyCell
If Not Found is Nothing Then MsgBox Found.Address(False, False)
End Sub
Range.Find
方法Option Explicit
Sub Test()
Dim ws As Worksheet: Set ws = ThisWorkbook.Sheets("Sheet1")
Dim LCol As Long, Found As Range
LCol = ws.Cells(1, ws.Columns.Count).End(xlToLeft).Column
Set Found = ws.Range(ws.Cells(1, 1), ws.Cells(1, LCol)).Find("Dog", SearchDirection:=xlPrevious)
If Not Found Is Nothing Then MsgBox Found.Address(False, False)
End Sub
答案 1 :(得分:1)
没有VBA的方法,使用数组公式返回
列号:
=MAX(IF(1:1="Dog",COLUMN(1:1)))
或地址:
=ADDRESS(1,MAX(IF(1:1="Dog",COLUMN(1:1))),4)
两者都需要通过 Ctrl + Shift + Enter 或( Cmd + Return确认(对于Mac)。