首页
学习
活动
专区
工具
TVP
发布
精选内容/技术社群/优惠产品,尽在小程序
立即前往

VBA从Sheet1 +中的唯一列值创建新工作表,并显示相邻行信息

VBA是Visual Basic for Applications的缩写,是一种用于Microsoft Office应用程序的编程语言。它可以通过编写宏来自动化和定制化Office应用程序的功能。

在Excel中,可以使用VBA从Sheet1中的唯一列值创建新工作表,并显示相邻行的信息。下面是一个示例代码:

代码语言:vba
复制
Sub CreateNewSheet()
    Dim sourceSheet As Worksheet
    Dim newSheet As Worksheet
    Dim lastRow As Long
    Dim uniqueValues As Collection
    Dim cellValue As Variant
    
    ' 获取源工作表
    Set sourceSheet = ThisWorkbook.Sheets("Sheet1")
    
    ' 获取源工作表中唯一列的最后一行
    lastRow = sourceSheet.Cells(sourceSheet.Rows.Count, "A").End(xlUp).Row
    
    ' 创建一个集合用于存储唯一值
    Set uniqueValues = New Collection
    
    ' 遍历唯一列的值,并将唯一值添加到集合中
    For i = 2 To lastRow
        cellValue = sourceSheet.Cells(i, "A").Value
        On Error Resume Next
        uniqueValues.Add cellValue, CStr(cellValue)
        On Error GoTo 0
    Next i
    
    ' 根据唯一值创建新工作表,并显示相邻行的信息
    For Each cellValue In uniqueValues
        ' 创建新工作表
        Set newSheet = ThisWorkbook.Sheets.Add(After:=ThisWorkbook.Sheets(ThisWorkbook.Sheets.Count))
        newSheet.Name = "Sheet_" & cellValue
        
        ' 在新工作表中显示相邻行的信息
        For i = 2 To lastRow
            If sourceSheet.Cells(i, "A").Value = cellValue Then
                ' 复制相邻行的信息到新工作表
                sourceSheet.Rows(i).Copy newSheet.Cells(newSheet.Cells(newSheet.Rows.Count, "A").End(xlUp).Row + 1, "A")
            End If
        Next i
    Next cellValue
End Sub

上述代码首先获取名为"Sheet1"的源工作表,然后遍历唯一列的值,并将唯一值添加到集合中。接下来,根据唯一值创建新的工作表,并在新工作表中显示相邻行的信息。最后,将新工作表命名为"Sheet_唯一值",并将相邻行的信息复制到新工作表中。

这是一个简单的示例,可以根据实际需求进行修改和扩展。在实际应用中,可以根据需要对新工作表的格式、样式等进行进一步的定制。

腾讯云提供了一系列云计算相关的产品和服务,例如云服务器、云数据库、云存储等。具体推荐的产品和产品介绍链接地址可以根据实际需求和使用场景进行选择。

页面内容是否对你有帮助?
有帮助
没帮助

相关·内容

VBA高级筛选应用:拆分或更新子工作表

这里已经突出标示了Dept A(橙色),因为这是我们可能希望为这个部门创建新工作表,然而,如果已经有一个标题为“A”的工作表,那么就不会创建新工作表,只会将数据添加到现有工作表中。...其中心思想是创建一个唯一的工作表,其中包含与部门相关的数据。因此,这里会为A、B和C分别创建一个工作表。如果添加了任何新的部门,则也为这些部门创建新的工作表。...图1 这将有效地使代码更长一些,因为需要对此进行测试,但它工作得很好。 下面的VBA代码有两个作用,它首先创建一个唯一列表,然后基于该唯一列表使用高级筛选。...[M1], , 1 这里只是选择了前3000行,而不是创建一个动态列表。高级筛选将列出唯一值项,并将其放在M列中。...接下来,代码需要循环遍历该唯一列表,这里使用了一个简单的For循环,从第2行循环到M列中最后使用的行。

1.6K20

VBA自动筛选完全指南(下)

它复制筛选的行,添加新工作表,然后将这些复制的行粘贴到新工作表中。...如果没有筛选行,显示一条消息并退出程序。如果有筛选行,则复制筛选的数据,插入新工作表,然后粘贴这些数据到新插入的工作表中。...如果为TRUE,则表示已应用筛选,并使用ShowAllData方法显示所有数据。注意,这不会删除筛选,筛选图标仍然可用。 在受保护的工作表中使用自动筛选 默认情况下,当工作表受保护时,不能应用筛选。...因此,需要使用代码来保护工作表,并确保在其中启用了自动筛选。这在创建动态筛选时是有用的。 下面的代码保护工作表,同时允许在其中使用筛选和VBA宏。...然而,为什么需要使用VBA代码来执行此操作?因为将其与其它代码结合起来,可以创建更加强大的自动化工作。 注:本文学习整理自trumpexcel.com,略有修改。

3.8K30
  • Excel数据表分割(实战记录)

    End Sub 请按照以下步骤操作(Sheet): 打开Excel,按下ALT + F11打开VBA编辑器。 在左侧的“项目资源管理器”窗格中,找到你的工作簿,并双击打开。...如果每10行数据创建一个新的工作簿而不是新的工作表(Sheet),可以使用以下VBA代码: 复制代码 Sub 分割数据() Dim 原始表 As Worksheet Dim 新表 As...End Sub 请注意,此代码将创建新的工作簿,并在每个新工作簿中复制相应的数据。你可以根据需求修改代码中的保存路径和文件名。运行代码后,将显示一个弹出窗口,指示成功分割为多少个新表。...如果你想在每个新表中包含标题行并分割数据,可以使用以下修订版的 VBA 代码: 复制代码 Sub 分割数据() Dim 原始表 As Worksheet Dim 新表 As Workbook...End Sub 这段代码在每个新表中通过将标题行和对应的数据行复制到新工作簿来实现分割。新工作簿中的第一行是标题行,接下来的行是对应的数据行。

    39720

    Excel宏教程 (宏的介绍与基本使用)

    AutoCAD2000)等对VBA的支持,这些软件也已进入到了VBA的控制范 围;2、可以将用VBA编写的程序复制到Visual Basic中调试并运行,从而实现用Visual Basic来控制有关的应用程序...需要注意的是:在使用过程中excel会自动重排工作表索引号,保持按照其在工作表标签中的从左至右排列,工作表的索引号递增。因此,由于可能进行的工作表添加或删除,工作表索引号不一定始终保持不变。...5、 行与列:Rows、Columns、Row、Column Rows、Columns分别代表活动工作表、单元格区域范围Range、指定工作表中的所有行数、列数。...利用Rows、Column可以获得区域中第一块的第一行行号、第一列列号,所得值均以十进制数表示。...如下例将工作表”Sheet1″A1单元格的值赋给Integer变量I,并将I+1的值赋给当前工作表中的B1单元格: Dim I As Integer I=Worksheets(“Sheet1”).Cells

    6.5K10

    Python自动化:Python操作Excel的多种方式Pandas+openpyxl+xlrd

    sheet_name: 指定要读取的工作表名称或索引。可以是字符串、整数、字符串列表或None。如果是None,则返回字典,其中包含所有工作表。 header: 指定作为列名的行,默认为0(第一行)。...data_only: 是否只读取单元格的值,忽略公式(默认为 False)。 keep_vba: 是否保留 VBA 内容(默认为 True)。...from openpyxl.styles import Font, Color, Alignment, Border, Side # 创建一个新的工作簿和工作表 wb = Workbook...('Sheet1') 读取数据 使用行号(从0开始)和列号(也从0开始)或单元格名称(如 'A1')来读取数据。...sheet = workbook.sheet_by_name('Sheet1') # 读取并打印第一行和第一列的数据 print(sheet.cell_value(0, 0))

    45910

    用 Python 帮运营妹纸快速搞定 Excel 文档

    您将了解以下内容: Python 读写 Excel 的第三方库 从工作簿中获取工作表 读取单元格数据 遍历行和列 写入 Excel 电子表格 添加和删除工作表 添加和删除行和列 大多数公司和大学都使用...您将使用单元格对象的行和列属性来获取行和列信息。...第二个示例显示了如何设置工作表的标题以及在哪个索引处插入工作表。参数index = 1表示该工作表将在第一个现有工作表之后添加,因为它们的索引从0开始。...列的索引从1开始,而工作表的索引从0开始。这有效地将A列中的所有单元格移到B列。然后从第2行开始插入两个新行。 现在您知道了如何插入列和行,是时候来了解如何删除它们了。...在本文中,您掌握了以下内容: Python 处理 Excel 的第三方软件包 从工作簿中获取工作表 读取单元格数据 遍历行和列 写入 Excel 电子表格 添加和删除工作表 添加、删除行和列 OpenPyXL

    4.5K20

    Excel VBA编程教程(基础一)

    编写第一个VBA宏 「宏」:简单的说,宏是一段可以运行的 VBA 代码片段。 step one 创建启用宏的工作簿 首先新建一个工作簿,并将工作簿保存为「启用宏的工作簿」类型。...step three Excel 工作簿中的 VBA 代码通常保存在工作表对象或模块中。本例中,我们用模块保存 VBA 代码。...首先选中左侧工程列表中的工作簿,后右键,在弹出的选项列表中,选择「插入」。二级菜单中,选择「模块」,完成插入新模块。 插入完成后,在工程列表对应工作簿内,在模块文件夹下,显示新插入的模块。...VBA 工程:显示当前 VBA 工程包含的所有对象。通常,一个工作簿就是一个 VBA 工程,其中包括 Excel 对象、工作表对象、模块等。 属性窗口:查看和设置选中对象的属性的窗口。...With 结构实例 现在看一个实际的例子,需要将工作簿中 Sheet1 工作表设置新名称,然后设置标签颜色为黑色,最后隐藏工作表。

    12.5K22

    啰哩啰嗦地讲透VBA中引用单元格区域的18个有用方法--Cell属性和Offset属性

    VBA对象可以是工作表(在Worksheet.Cells属性的情形)或可以是单元格区域(Range.Cells属性的情形)。 行号和列号是行和列的编号,通常使用数字。...下面的屏幕截图让你更好了解数字编号分配的过程: 例如,如果想使用该语法引用单元格A2,则合适的引用是: Cells(16385) 对工作簿Book.xlsm的工作表Sheet1中单元格A2的完全限定引用是...这种情况下,引用是: Range(“A1:B10”).Cells(9) 下面的屏幕截图显示了将单元格索引编号分配给相关区域内单元格的方式: 如果处理工作簿Book1.xlsm的工作表Sheet1的单元格区域...使用Worksheet.Cells属性引用工作表中的所有单元格 这可能是实现Cells属性的最简单但也是最受限制的方法。语句: 表达式.Cells 返回相关Excel工作表中的所有单元格。...例如,下面的语句返回Book1.xlsm的工作表Sheet1中的所有单元格: Application.Workbooks("Book1.xlsm").Worksheets("Sheet1").Cells

    4.1K40

    啰哩啰嗦地讲透VBA中引用单元格区域的18个有用方法--Range属性

    VBA允许用户以多种不同的方式引用单元格区域。 什么是Range对象 Range对象代表工作表中的单元格区域,这意味着可以使用Range对象来引用: 单个单元格 一行或一列单元格。...特别是,这里并没有指定所引用的特定Excel工作簿或工作表。为此,必须理解下面的内容。 从集合中引用对象 在VBA中,对象集合是一组相关的对象。...这种简化比前一种更复杂,因为它依赖于正确识别活动工作簿和工作表,这比识别Excel应用程序本身稍微困难一些。 然而,也可以使用这两个默认对象创建更简单的VBA对象引用。...可以按如下方式引用整行或整列: 行:Range(“行号:行号”) 列:Range(“列字母:列字母”) 例如,如果要引用特定工作表的第一行,其语法为: Range(“1:1”) 如果要引用第一列(列A)...[A1] 快捷方式2:引用整行或整列 应用方括号的快捷方式是: 行:[行号:行号] 列:[列字母:列字母] 例如,如果引用工作表第1行或第1列,其语法为: 行:[1:1] 列:[A:A] 假设在Book1

    6.7K20

    VBA自动筛选完全指南(上)

    图1 如果只需要筛选数据并执行一些基本操作,建议直接使用Excel工作界面提供的内置筛选功能。而当希望将筛选数据作为自动化的一部分时,应使用VBA的Autofilter方法。...例如,假设希望基于下拉选择快速筛选数据,然后将筛选的数据复制到新工作表中。虽然这可以使用内置筛选功能和一些复制粘贴来完成,但手动完成这项工作可能需要花费大量时间。...Field:可选参数,这是要筛选的列号,从数据集的左侧开始计算。因此,如果要根据第二列筛选数据,则该值应为2。 Criteria1:可选参数,这是筛选数据集所基于的条件。...Sub 上面的代码引用了工作表Sheet1,同时引用了单元格A1(数据集中的一个单元格)。...注意,这里使用了Field:=2,因为“项目”列是数据集中从左起的第二列。 示例:同一列中多个条件(AND/OR) 仍然使用上图2所示的数据集,这次筛选“项目”列中“打印机”或者“空调”的所有数据。

    4.9K10

    Excel编程周末速成班第3课:Excel对象模型

    例如,你的程序打开一个工作簿并需要使用其现有的一个工作表。在其他时候,该对象不存在,并且你的程序必须创建该对象并获得引用(例如,当向工作簿中添加新工作表时)。...这是因为Excel具有两类工作表,其中包含数据的行和列以及嵌入式图表的工作表和图表工作表(仅包含一个图表)。因此,Sheets集合包含Sheet对象,有两种类型:工作表和图表工作表。...一种是通过其在集合中的数字位置;另一种是通过对象的唯一键。集合的键取决于它包含的对象,通常是标识对象的信息。...此名称显示在Excel屏幕上的工作表标签上,也可以用于从Worksheets或Sheets集合中获取引用。...引用工作表 你已经看到了使用创建工作表时返回的引用或从Worksheets集合中获取引用来引用工作簿中特定工作表的几种方法。

    5.1K30

    VBA代码:将水平单元格区域转换成垂直单元格区域

    标签:VBA 下图1所示是一个常见的需求,在多个列中放置着每个月份的数据,需要将月份移到单个列中,同时保留报表中的所有描述性信息。...图1 数据显示了有关部门、账户和成本中心的描述性信息,而月度数据显示在许多列中。现在希望看到的是,左侧3列上的数据重复,而财务数据则逐行重复。数据输出如下图2所示。...图2 这可以使用一个简单的VBA程序来实现。首先,需要两个数组,一个将保存原始数据,另一个将新格式化的数据放在其中。...For i=2 To UBound(ar,1) 原始循环从第2行开始,因为忽略了标题,这5列的标题位于Output工作表的第1行。...[A2].Resize(n, 5) = WorksheetFunction.Transpose(var) 上面的代码是从第2行开始,并将区域调整为n所在的任何值,因此可能是108行,共有5列。

    1.4K30

    数据分析必备技能:数据透视表使用教程

    2 创建数据透视表 此处将工作表重命名为sheet1 首先确保表格第一行是表头 点击表中任意位置 选中 Ribbon 中的“插入” 点击第一个图标“数据透视表”,出现“创建数据透视表”对话框 ?...注意观察对话框中的各种选项,这里我们都采用默认值 点击“确定”后,一个空的数据透视表出现在了新工作表中: ?...将“平”拖放至“行”列表中的“球队”上方;表示在“平局”的维度上,嵌套(nesting)的归纳了“球队”的维度 将“更新日期”拖放至“筛选器”列表中;表示可以根据更新日期来筛选显示表格数据 ?...以上就是创建数据透视表的基本过程。 7 自动化创建 基本的数据透视表的创建和调整并不复杂,但如果有很多类似的重复性工作的话,使用一些简单的 VBA 来自动化这一过程,将极大提升工作的效率。...8 总结 本文简单的展示了在 Excel 中创建透视表的过程,以及其筛选、展示数据的方式 通过 VBA 可以完成和手动创建一样甚至更多的功能,并大大提高工作效率

    4.7K20

    示例工作簿分享:筛选数据

    标签:VBA,用户窗体 这是一个很好的示例,充分展示了VBA和用户窗体控件编程技术。 示例中有一个数据工作表Sheet1,包含有一个列表,每一行的单元格中都有很多用逗号分隔的数据,如下图1所示。...图1 工作表Sheet2中列出了数据中的唯一值,如下图2所示,可以根据工作表Sheet1数据添加而更新。 图2 创建了一个用户窗体,用来进行数据筛选,如下图3所示。...图3 这个示例工作簿有以下功能: 1.按F3会运行更新代码更新工作表Sheet2中的唯一项,并以红色标注出新添加的项。 2.按F4键将调出图3所示的用户窗体。...3.在用户窗体中: (1)左侧列表框列出了工作表Sheet2中的所有唯一项。 (2)在搜索框中输入内容时,会随着输入自动缩减左侧列表框中的内容。...(3)选择左侧列表框中的项后,单击“添加”按钮,将其移至右侧列表框。 (4)单击“执行”会进行筛选操作,并在工作表Sheet1中显示结果。

    16110

    Power Query-汇总文件夹中多工作簿多工作表到一个文件

    Power Query-汇总文件夹中多工作簿多工作表到一个文件 我们在常感叹“不懂office Excel的是电子表格,懂的就是Excel”!! 为什么呢!...当我们在学习VBA编程汇总多工作簿多工作表到一个文件时,微软在新的Office版本中有开发出个神器Power BI, 这个组件在office2013和office2016是整合在一起的,office2010...今天来体验一下Power Query的强大功能 【问题】:上一次学习VBA的一个例子:下发给下面各单位的表格收集信息资料,上交上来后有很多个文件,文件的内容格式是一样,我想把这些资料汇总在一起, 1.上交文件很多...和Name两列,删除其他列 第五步,点击双箭头的地方出现合并文件窗口,选中Sheet1,(这是说每个文件有三个工作表,我只要所有的Sheet1合并就可以啦) 第六步:选中sheet1—确定...第八步,删除行---删除重复行 最后关闭并上载---就可以啦,再整理一下 有一个好处就是当文件中的内容修改、添加、减小等操作后只要刷新一下就可啦期。 ======今天就学习到此=====

    2.1K50

    Excel公式技巧14: 在主工作表中汇总多个工作表中满足条件的值

    在《Excel公式练习32:将包含空单元格的多行多列单元格区域转换成单独的列并去掉空单元格》中,我们讲述了一种方法,给定由多个列组成的单元格区域,从该区域返回由所有非空单元格组成的单个列。...本文提供了一种方法,在给定一个或多个相同布局的工作表的情况下,可以创建另一个“主”工作表,该工作表仅由满足特定条件的所有工作表中的数据组成。并且,这里不使用VBA,仅使用公式。...图3 想要创建一个主工作表Master,其数据来源于上面三个工作表中列D中的值为“Y”的数据: ?...1、3和4对应于工作表Sheet1列D中为“Y”的相对行号。...k的值,即在工作表Sheet1中匹配第1、第2和第3小的行,在工作表Sheet2中匹配第1和第2小的行,在工作表Sheet3中匹配第1小的行。

    9.1K21

    VBA专题10-25:使用VBA操控Excel界面之一个示例程序

    当打开工作簿时, 1.1 激活特定的工作表(名为Sample)。 1.2 开始的3行被冻洁。 1.3一个特定的行(行50)向上滚动并成为解冻窗格的顶部行。...2.3 如果选择了指定的项目(例如Group2),那么激活指定的工作表(名为Sheet2),并对其外观作出下面的改变: 2.3.1 在页面布局视图中显示工作表 2.3.2 隐藏行和列标题 2.3.3 删除工作表中的网格线...如果激活的工作表(名为Sheet1)具有指定的工作表级命名区域(例如,名为MyRange的单元格区域),那么启用Custom选项卡中不同组中的一组控件按钮。...能够从单元格上下文菜单中访问自定义控件(名为Remove USD)。 要创建这个程序,执行下列步骤: 1. 创建一个新工作簿,将其保存为启用宏的工作簿。 2....右击工作表选项卡,选择插入来添加一个图表工作表。 3. 重命名工作表为Sample、Sheet1和Sheet2。 4. 激活工作表Sheet1,选择一个单元格区域,在“名称”框中输入“Sheet1!

    2.4K10

    EXCEL VBA语句集300

     工作簿 (8) Workbooks.Add() ‘创建一个新的工作簿 (9) Workbooks(“book1.xls”).Activate ‘激活名为book1的工作簿 (10...‘当前工作表中已使用的行数 (19) Rows.Count ‘获取工作表的行数(注:考虑向前兼容性) (20) Sheets(Sheet1).Name= “Sum” ‘将Sheet1命名为Sum...(i).Name ‘获取工作表i的名称 (26) ActiveWindow.DisplayGridlines=Not ActiveWindow.DisplayGridlines ‘切换工作表中的网格线显示...) cells.count ‘返回当前工作表的单元格数 (45) Selection.Range(“E4”).Select ‘激活当前活动单元格下方3行,向右4列的单元格 (46) Cells.Item...‘添加新的图表工作表 (76) ActiveChart.SetSourceData Source:=Sheets(“Sheet1”).Range(“A1:D5”), _ PlotBy:=xlColumns

    2K41
    领券