根据单元格内容,Excel 中的 Select 个单元格
Select cells in Excel based on cell content
我正在与 Excel 合作,尝试在 VB 中为应用程序编写一个宏,需要您的帮助。
我的目标:
将 1000 条记录从 Toad 导出到 Excel,然后 运行 一个宏,它会根据单元格内容将某些记录放在某些 sheet 上。
我的数据示例:
(抱歉,我会 post 图像内联,但我没有足够的声誉)
数据说明:
权限——用户的不同角色
User_name - 每个用户的用户名
每个用户 Sort_name - last_name、first_name
我希望宏做什么:
在权限栏中,select所有具有相同权限的记录及其对应的详细信息,将它们剪切并粘贴到新的sheet上。重复此操作以获得数据末尾的特权。
示例:
Select 所有管理行以及 user_name 和 sort_name。剪切 select 行,粘贴到 sheet2.
Select 所有版主行以及 user_name 和 sort_name。剪切 select 行,粘贴到 sheet3.
Select 所有 GeneralUser 行以及 user_name 和 sort_name。剪切 select 行,粘贴到 sheet4。
附加信息:
在我的实际数据中,有数千行,大约有 60 种不同的权限。因此,当我 运行 在我的真实数据上执行此操作时,它将生成一个包含 60 个不同 sheet 的工作簿。
特权将有序。所有管理员将在一起。单元格 A2-A9 中不会有 10 个管理员,A67-A100 中不会有更多。它们是连续的。
包含原始数据的第一个 sheet 将在此过程结束时删除,因此其格式无关紧要。
我试过了:
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 是通用单元格,而不是基于所写文本的单元格。这意味着它没有针对可变长度进行编码。
非常感谢任何帮助!
试试这个,下面假设:sheets 不是为 privs 创建的,数据按列 A 排序,activesheet 是 sheet 和你的数据[=11] =]
Values_To_Find 需要更改为您拥有的所有权限,它只是一个逗号分隔列表
不删除原来的sheet
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" 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
我正在与 Excel 合作,尝试在 VB 中为应用程序编写一个宏,需要您的帮助。
我的目标:
将 1000 条记录从 Toad 导出到 Excel,然后 运行 一个宏,它会根据单元格内容将某些记录放在某些 sheet 上。
我的数据示例:
(抱歉,我会 post 图像内联,但我没有足够的声誉)
数据说明:
权限——用户的不同角色
User_name - 每个用户的用户名
每个用户 Sort_name - last_name、first_name
我希望宏做什么:
在权限栏中,select所有具有相同权限的记录及其对应的详细信息,将它们剪切并粘贴到新的sheet上。重复此操作以获得数据末尾的特权。
示例:
Select 所有管理行以及 user_name 和 sort_name。剪切 select 行,粘贴到 sheet2.
Select 所有版主行以及 user_name 和 sort_name。剪切 select 行,粘贴到 sheet3.
Select 所有 GeneralUser 行以及 user_name 和 sort_name。剪切 select 行,粘贴到 sheet4。
附加信息:
在我的实际数据中,有数千行,大约有 60 种不同的权限。因此,当我 运行 在我的真实数据上执行此操作时,它将生成一个包含 60 个不同 sheet 的工作簿。
特权将有序。所有管理员将在一起。单元格 A2-A9 中不会有 10 个管理员,A67-A100 中不会有更多。它们是连续的。
包含原始数据的第一个 sheet 将在此过程结束时删除,因此其格式无关紧要。
我试过了:
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 是通用单元格,而不是基于所写文本的单元格。这意味着它没有针对可变长度进行编码。
非常感谢任何帮助!
试试这个,下面假设:sheets 不是为 privs 创建的,数据按列 A 排序,activesheet 是 sheet 和你的数据[=11] =]
Values_To_Find 需要更改为您拥有的所有权限,它只是一个逗号分隔列表
不删除原来的sheet
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" 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