用宏来解决比较容易,制成模板可以以后用。下列代码可供参考。
Sub tmtx()
Sheets("同名学生").[a1] = "班级"
Sheets("同名学生").[b1] = "学籍号"
Sheets("同名学生").[c1] = "姓名"
a = Sheets("基础数据").[a1].CurrentRegion.Rows.Count '判断学生名单的行数。
For I = 2 To a
k = Sheets("同名学生").[a1].CurrentRegion.Rows.Count + 1
If Application.WorksheetFunction.CountIf([c1:c65530], Cells(I, 3)) > 1 Then
Sheets("同名学生").Cells(k, 3) = Sheets("基础数据").Cells(I, 3)
Sheets("同名学生").Cells(k, 2) = Sheets("基础数据").Cells(I, 2)
Sheets("同名学生").Cells(k, 1) = Sheets("基础数据").Cells(I, 1)
End If
'使用CountIf()函数对每个学生名字进行判断,如果CountIf()值大于1,则将其复制到同名学生。
Next
Sheets("同名学生").[a1].CurrentRegion.Sort Key1:=Sheets("同名学生").[c1], Order1:=xlAscending + 1, Header:=xlGuess + 1
'对复制到同名学生的内容以"姓名"作为关键字排序,从而实现同名同姓学生的姓名排在一起,以方便查阅。
If Sheets("同名学生").[a2] = "" Then
MsgBox "无同名同姓学生!"
End If
'如果没有同名同姓的学生,则跳出报告信息窗口。
Sheets("同名学生").Select
End Sub
Sub Macro2()
'
' Macro2 Macro
Sheets("同名学生").Select
ActiveWindow.SmallScroll Down:=-12
Cells.Select
Selection.ClearContents
Range("A1").Select
Sheets("基础数据").Select
End Sub
Sub Macro1()
Sheets("基础数据").Select
Range("A2").Select
End Sub
思路:在 for next里面用工作表函数countif判断当前单元格在第一单元至上一单元格这个区间的个数。如果为一,写入。不为一next...就这样。。。
表达不清 你是要把F列相同的数据 比如 3,5和7行相同 那么把3 5 7行的数据复制到新表 还有当3 5 7 这三行相同 8 和10这两行又另外相同 要把 这五行复制到新表中吗?