表1列A具有以下值(它有大约3000条记录。我已经给出了以下样本值)。我需要找到特定文本的最后一个值。
RVT-01
RVT-02
RVT-03
RVT-04
RVT-05
RVT-06
RHT-01
RHT-02
RHT-03
RHT-04
RHT-05
ROI-01
ROI-02
ROI-03
SWO-01
SWO-02
SWO-03
SOR-01
SOR-02
SOR-03
SOR-04
SOR-05
SOR-06
SOR-07
如果在sheet1.cells(2,2) = SWO
中输入短文,我需要sheet1.cells(2,4)=SWO-03
中的最后一个值
如果我输入sheet1.cells(2,2) = RHT
,我需要sheet1.cells(2,4)=RHT-05
中的最后一个值
如果我输入sheet1.cells(2,2) = RVT
,我需要sheet1.cells(2,4)=RVT-06
中的最后一个值
如果我输入sheet1.cells(2,2) = SOR
,我需要sheet1.cells(2,4)=SOR-07
上述过程的VBA代码是什么?
答案 0 :(得分:1)
建议跳过简介,不需要VBA :在B栏中,添加如下公式:
=IF(IF(LEFT(A1,3)=LEFT(A2,3),1,0)=0,RIGHT(TRIM(A:A),2),"")
(获取最大数量):或
=IF(IF(LEFT(A1,3)=LEFT(A2,3),1,0)=0,A:A,"")
(获取单元格的完整内容)两者都会显示最高值。然后你可以自动过滤该列,隐藏空白并瞧瞧:)。
或者
=IF(IF(LEFT($A1,3)=LEFT($A2,3),1,0)=0,NA(),"")
将使您能够在VBA中使用SpecialCells来获取可以查询每个组中最大值的范围,如下所示:
Sub test()
Dim rng As Range
Dim cell
Range("B1:B" & Range("A65536").End(xlUp).Row).Formula = "=IF(IF(LEFT($A1,3)=LEFT($A2,3),1,0)=0,NA(),"""")"
Set rng = Range(Range("B1:B" & Range("A65536").End(xlUp).Row).SpecialCells(xlCellTypeFormulas, xlErrors).Offset(0, -1).Address)
For Each cell In rng
Debug.Print cell.Address & " =" & cell.Value
MsgBox cell.Address & " =" & cell.Value
Next
End Sub
有关SpecialCells魔术技巧的更多信息,请参阅How to delete multiple rows without a loop in Excel VBA。