EXCEL下使用MATCH函数碰到的问题

王朝other·作者佚名  2006-01-09
宽屏版  字体: |||超大  

Sub USEMATCH()

Dim s_p As String, e_p As String

Dim num As Integer

num = 0

For Each M In Range("a:a")

If M.Value <> "" Then

num = num + 1

Else

Exit For

End If

Next M

erange = "b" & num

erange = "b2:" & erange

N = 1

a = 2

currange = "b" & a

Cells.Select

Selection.Sort Key1:=Range("A2"), Order1:=xlAscending, Key2:=Range("B2") _

, Order2:=xlAscending, Header:=xlGuess, OrderCustom:=1, MatchCase:= _

False, Orientation:=xlTopToBottom, SortMethod:=xlPinYin, DataOption1:= _

xlSortNormal, DataOption2:=xlSortNormal

Columns("A:A").Select

Selection.Insert Shift:=xlToRight '最左插入一列

Set curCell = Worksheets(Sheets(1).Name).Range(currange)

For Each M In Range(erange)

On Error GoTo ErrorHandler

If M.Offset(0, -1).Value <> "" Then GoTo mynext

If M.Offset(0, 1).Value = "" Then GoTo mynext '当前单元格左不为空/右单元格内容为空则转

s_p = M.Value: e_p = M.Offset(0, 1).Value

pos = Application.WorksheetFunction.Match(e_p, Worksheets(1).Range(erange), 0) '查找终点在起点列出现的行数

If pos = "" Then

curCell.Offset(0, -1).Value = "NO"

GoTo mynext '若没有找到则设为"no"

End If

thenext:

Position = "B" & Trim(Str(pos)) '定位到所在单元格

If Range(Position).Offset(0, 1).Value = s_p Then

If Range(Position).Offset(0, -1) = "" Then '若符合条件则在对应记录前标记

curCell.Offset(0, -1).Value = N & ".A"

Range(Position).Offset(0, -1).Value = N & ".B"

N = N + 1

Else

curCell.Offset(0, -1).Value = "NO"

End If

Else

If Range(Position).Offset(1, 0).Value = e_p Then

pos = pos + 1

GoTo thenext

Else

curCell.Offset(0, -1).Value = "NO"

End If

End If

myVar = 0

mynext:

a = a + 1

currange = "b" & a

Set curCell = Worksheets(Sheets(1).Name).Range(currange)

Next

ErrorHandler:

curCell.Offset(0, -1).Value = "NO"

Resume Next

End Sub

表格形式为:A列 和B列. 匹配条件是:按行查询,若第一行的A列单元格内容等于另一行B列单元格内容,就检查第一行B列单元格内容是否等于另一行A列单元格内容,若相等就在这两行前做标记.否则标记为NO

 
 
 
免责声明:本文为网络用户发布,其观点仅代表作者个人观点,与本站无关,本站仅提供信息存储服务。文中陈述内容未经本站证实,其真实性、完整性、及时性本站不作任何保证或承诺,请读者仅作参考,并请自行核实相关内容。
© 2005- 王朝网络 版权所有