根据单元格内容在Excel中select单元格

我正在使用Excel试图写一个macros的VB应用程序,可以使用你的帮助。

我的目标:

从蟾蜍导出1000年的logging到Excel,然后运行一个macros将根据单元格内容在某些工作表上放置某些logging。

我的数据示例:

图片

(对不起,我会在线发布图片,但我没有足够的声望)

数据解释:

特权 – 用户的不同angular色
User_name – 每个用户的用户名
Sort_name – last_name,每个用户的名字

我想让macros做什么:

在权限列中,select具有相同权限的所有logging及其相应的详细信息,剪切它们,并将其粘贴到新的工作表上。 通过数据结束重复这个权限。

例:

select所有Admin行以及user_name和sort_name。 剪切选定的行,粘贴在sheet2上。
select所有主持人行以及user_name和sort_name。 剪切选定的行,粘贴在sheet3上。
select所有GeneralUser行以及user_name和sort_name。 剪切选定的行,粘贴在工作表4上。

附加信息:

在我的实际数据中,有成千上万行约60个不同的特权。 所以,当我在真实数据上运行这个function时,将会产生一张包含60张不同工作表的工作簿。

特权将按顺序。 所有pipe理员将在一起。 单元格A2-A9不会有10个pipe理员,然后更多的是A67-A100。 他们是顺序的。

第一张包含原始数据的工作表将在此过程结束时被删除,因此格式化并不重要。

我试过了:

Sub Test() ' ' Test Macro ' ' Range("A2:C9").Select Selection.Cut Sheets("Sheet2").Select ActiveSheet.Paste Sheets("Sheet1").Select Range("A10:C14").Select Selection.Cut Sheets("Sheet3").Select ActiveSheet.Paste Sheets("Sheet1").Select Range("A15:C25").Select Selection.Cut Sheets("Sheet3").Select Sheets.Add After:=Sheets(Sheets.Count) ActiveSheet.Paste End Sub 

但是,select通用单元格,而不是基于写入文本的单元格。 这意味着它不是可变长度的编码。

任何帮助是极大的赞赏!

试试这个,下面假设:sheet不是为priv创build的,数据是按列Asorting的,activesheet是包含数据的表单

Values_To_Find将需要更改为您拥有的所有priv,这只是一个逗号分隔列表

它不会删除原始表单

 Sub t() Dim start_rng As Range Values_To_Find = "Admin,Moderator,GeneralUser" sp = Split(Values_To_Find, ",") With ActiveSheet For i = 0 To UBound(sp) Found = 0 Set start_rng = .Range("A1") For Each cell In .Range("A2:" & .Range("A2").End(xlDown).Offset(1, 0).Address) If Found = 1 And cell.Value <> sp(i) Then 'find end Set end_rng = cell Exit For End If If cell.Value = sp(i) And start_rng.Address = "$A$1" Then 'find start Set start_rng = cell Found = 1 End If Next Set ws = Sheets.Add ws.Name = sp(i) .Range(start_rng.Address & ":" & Range(end_rng.Address).Offset(-1, 3).Address).Copy ws.Range("A1").PasteSpecial Next End With End Sub