假设你的ip是在B列输入,那么按ALT+F11打开宏编辑器,双击左边sheet1(sheet1),把下面代码粘贴上,保存退出就可以了
Private Sub Worksheet_Change(ByVal Target As Range)
On Error Resume Next
If Target.Column = 2 Then
Target.Interior.ColorIndex = xlNone
Target.Font.Color = 0
Target.Offset(0, 1) = ""
If Not Target.Value Like "*.*.*.*" Then
Target.Interior.Color = vbRed
Target.Font.Color = vbYellow
Target.Offset(0, 1) = "错误IP,请检查后重输"
Exit Sub
End If
hh = Target.Row
h = InStrRev(Target.Value, ".")
For i = 1 To Cells(Rows.Count, 2).End(xlUp).Row
If i <> hh Then
If InStr(Cells(i, 2).Value, Left(Target.Value, h)) <> 0 Then
Target.Interior.Color = vbRed
Target.Font.Color = vbYellow
Target.Offset(0, 1) = "IP段重复,请检查后重输"
End If
End If
Next
End If
End Sub如果你输入的ip与上下已经有的ip前三段有重复,单元格就是自动变色,在C列提示你有重复,如果你改过后无重复,单元格就会恢复
Sub m()
Columns("A:A").Select
Selection.Sort Key1:=Range("A1"), Order1:=xlAscending, Header:=xlGuess, OrderCustom:=1
For r = 1 To Cells(1, 1).End(xlDown).Row
l = InStrRev(Cells(r, 1), ".")
If Left(Cells(r, 1), l) = Left(Cells(r + 1, 1), l) Then
Cells(r, 1).Font.ColorIndex = 3
Cells(r + 1, 1).Font.ColorIndex = 3
End If
Next
End Sub
假设你的IP全部在A列,B列输入公式
=LEFT(A1,SEARCH(".",A1,SEARCH(".",A1,SEARCH(".",A1)+1)+1))
C列输入公式=COUNTIF(B:B,B1)
然后可以C列中所有数字大于1的都是有前三段重复的,C列中的数字表示前三段重复的个数。
一般在一列中取值某一列的前几位数,然后在另一列再去比较重复,这样可以吗?
只是提供一个想法