vba - 根据单元格内容选择 Excel 中的单元格

标签 vba excel toad

我正在使用 Excel 尝试在 VB for Applications 中编写宏,需要您的帮助。

我的目标:

将 1000 条记录从 Toad 导出到 Excel,然后运行一个宏,根据单元格内容将某些记录放置在某些工作表上。

我的数据示例:

image

(抱歉,我会内联发布图像,但我没有足够的声誉)

数据说明:

权限 - 用户的不同角色
User_name - 每个用户的用户名
Sort_name - 每个用户的姓氏、名字

我希望宏执行的操作:

在权限列中,选择具有相同权限的所有记录及其相应的详细信息,剪切它们并将其粘贴到新工作表上。在数据末尾重复此操作以获得特权。

示例:

选择所有管理行以及 user_name 和 sort_name。剪切选定的行,粘贴到sheet2上。
选择所有主持人行以及 user_name 和 sort_name。剪切选定的行,粘贴到sheet3上。
选择所有 GeneralUser 行以及 user_name 和 sort_name。剪切选定的行,粘贴到sheet4上。

其他信息:

在我的实际数据中,有数千行,大约有 60 种不同的权限。因此,当我在真实数据上运行此操作时,将生成一个包含 60 个不同工作表的工作簿。

特权将按顺序排列。所有管理员都将聚集在一起。单元格 A2-A9 中不会有 10 个管理员,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

但这会选择通用单元格,而不是基于写入文本的单元格。这意味着它不是针对可变长度进行编码的。

非常感谢任何帮助!

最佳答案

尝试一下,下面假设:工作表不是为特权创建的,数据按 A 列排序,事件工作表是包含您的数据的工作表

Values_To_Find 需要更改为您拥有的所有权限,它只是一个逗号分隔的列表

它不会删除原始工作表

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

关于vba - 根据单元格内容选择 Excel 中的单元格,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/31588170/

相关文章:

excel - 删除单元格内的值

c# - 我们可以将自定义对象从 Excel 传递到 C# ExcelDNA 吗?

oracle10g - TOAD-修改物化 View 选择查询而不删除

mysql - 如何在 Toad for MySQL 中生成所有数据库对象的脚本

excel - 在Excel中将文本左右对齐?

vba - 如何使用 Excel VBA 自动从 Thunderbird 发送电子邮件?

excel - FOR EACH 带有单词的循环

java - 在 Java 中使用 Hibernate 插入 70000 条记录时出现网关超时错误

json - 如何在 Microsoft Excel 中解析 JSON 或 CSV 字符串中的单个值?还是谷歌表格?

database - 我想在我的 Windows 机器上安装一个免费的 Oracle 数据库,我想在 Toad for Oracle 上进行练习。我有哪些选择?