分离数据并放入单独的工作表 Excel VBA [关闭]

2023-12-13

我有一个包含超过 80K 条目的大型数据集,其形式如下:

        Name                        Date           Value
        1T17_4H19_3T19_3T21_2_a_2   09-Aug-11   -9.3159
        1T17_4H19_3T19_3T21_2_a_2   10-Aug-11   -6.9662
        1T17_4H19_3T19_3T21_2_a_2   11-Aug-11   -3.4886
        1T17_4H19_3T19_3T21_2_a_2   12-Aug-11   -1.2357
        1T17_4H19_3T19_3T21_2_a_2   15-Aug-11   0.1172
        5 25_4Q27_4T30_4H34_3_3_3   19-Jun-12   -2.0805
        5 25_4Q27_4T30_4H34_3_3_3   20-Jun-12   -1.9802
        5 25_4Q27_4T30_4H34_3_3_3   21-Jun-12   -2.8344
        5 25_4Q27_4T30_4Q32_a_a_a   25-Sep-07   -0.5779
        5 25_4Q27_4T30_4Q32_a_a_a   26-Sep-07   -0.8214
        5 25_4Q27_4T30_4Q32_a_a_a   27-Sep-07   -1.4061

这些数据全部包含在一个工作表中。我希望 Excel 根据名称分隔数据,然后将每个时间序列放在同一工作簿的单独工作表中。这可以用VBA实现吗?


如果您想录制宏来看看会发生什么,请按照下列步骤操作:

  1. 打开宏录制器
  2. 按名称对数据进行排序
  3. 从名字复制数据
  4. 将其粘贴到另一张纸上(如果需要另一张纸,请添加一张纸)
  5. 为工作表命名
  6. 重复下一个名称

我还编写了一些您可以用来入门的代码。为了使其工作,您需要将数据选项卡命名为“MasterList”。该代码按名称对 MasterList 上的行进行排序,然后对于列表中的每个唯一名称,创建一个新工作表并将适当的数据复制到新工作表,重复该过程,直到所有名称都复制到新工作表。

将此代码添加到模块并运行DispatchTimeSeriesToSheets程序。

Sub DispatchTimeSeriesToSheets()
    Dim ws As Worksheet
    Set ws = Sheets("MasterList")
    Dim LastRow As Long

    LastRow = Range("A" & ws.Rows.Count).End(xlUp).Row

    ' stop processing if we don't have any data
    If LastRow < 2 Then Exit Sub

    Application.ScreenUpdating = False
    SortMasterList LastRow, ws
    CopyDataToSheets LastRow, ws
    ws.Select
    Application.ScreenUpdating = True
End Sub

Sub SortMasterList(LastRow As Long, ws As Worksheet)
    ws.Range("A2:C" & LastRow).Sort Key1:=ws.Range("A1"), Key2:=ws.Range("B1")
End Sub

Sub CopyDataToSheets(LastRow As Long, src As Worksheet)
    Dim rng As Range
    Dim cell As Range
    Dim Series As String
    Dim SeriesStart As Long
    Dim SeriesLast As Long

    Set rng = Range("A2:A" & LastRow)
    SeriesStart = 2
    Series = Range("A" & SeriesStart).Value
    For Each cell In rng
        If cell.Value <> Series Then
            SeriesLast = cell.Row - 1
            CopySeriesToNewSheet src, SeriesStart, SeriesLast, Series
            Series = cell.Value
            SeriesStart = cell.Row
        End If
    Next
    ' copy the last series
    SeriesLast = LastRow
    CopySeriesToNewSheet src, SeriesStart, SeriesLast, Series

End Sub

Sub CopySeriesToNewSheet(src As Worksheet, Start As Long, Last As Long, _
                                                        name As String)
    Dim tgt As Worksheet

    If (SheetExists(name)) Then
        MsgBox "Sheet " & name & " already exists. " _
        & "Please delete or move existing sheets before" _
        & " copying data from the Master List.", vbCritical, _
        "Time Series Parser"
        End
    End If

    Worksheets.Add(After:=Worksheets(Worksheets.Count)).name = name
    Set tgt = Sheets(name)

    ' copy header row from src to tgt
    tgt.Range("A1:C1").Value = src.Range("A1:C1").Value

    ' copy data from src to tgt
    tgt.Range("A2:C" & Last - Start + 2).Value = _
        src.Range("A" & Start & ":C" & Last).Value
End Sub

Function SheetExists(name As String) As Boolean
    Dim ws As Worksheet

    SheetExists = True
    On Error Resume Next
    Set ws = Sheets(name)
    If ws Is Nothing Then
       SheetExists = False
    End If
End Function
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

分离数据并放入单独的工作表 Excel VBA [关闭] 的相关文章

  • 当存储在集合中时,如何更改类属性的值

    我想将一个类存储在集合中 并且能够更改该类的属性 而不必删除集合项并再次将其添加回来 我的研究表明 如果不进行删除 替换操作 则无法更改项目本身 但是项目的属性又如何呢 下面的代码展示了如何执行此操作 当您运行宏时 调试窗口将显示存储对象的
  • 如何从 Outlook 的“收件人”字段中提取电子邮件地址?

    我在某种程度上一直在使用 VBA 使用以下代码 Sub ExtractEmail Dim OlApp As Outlook Application Dim Mailobject As Object Dim Email As String D
  • 如何在Excel中创建关系矩阵

    给定一个三元组列表 我想得到一个关系矩阵 如下所示 1 A X 1 A Y 1 B X A B C 1 B Z 1 X Y X Z 2 A Z gt 2 Z X Y 2 B X 3 Y Z 3 A Y 3 A Z 2 C Y 如何 可以在
  • 如何获取 Word 应用程序的 Hwnd/进程 ID,并将其设置为前台窗口

    我希望我的 Word 应用程序在自动化完成后进入前台 Excel 中的等效项很简单 Excel Application 对象有一个 Hwnd 属性 您可以将其与 Windows API 结合使用 SetForegroundWindow In
  • 在 Python 中绘制 Excel 中的数据

    我必须从 Excel 文件中读取和绘制数据的代码是这样的 import pandas as pd import matplotlib pyplot as plt excel file file1 xlsx file1 pd read exc
  • Excel ISNUMBER 函数与 IF 语句

    我有一个正在使用的 Excel 文件 有一个列包含数字和文本 有时只是其中之一 我正在尝试编写一个函数来扫描单元格的最左侧部分以查看它是否以数字开头 我以为我拥有它 但显然没有 这就是我所拥有的 IF ISNUMBER LEFT E8 1
  • 从单元格中具有多种颜色的单元格中提取字体颜色

    我有一个 Excel 工作表 我正在尝试将其存入 MySQL 数据库 我使用 VBA 将数据作为文本写入文件 然后将其上传到数据库 在工作表的单元格中 有一些已用颜色编码的字符串 颜色具有一定的含义 因此当我将值移入数据库时 我想保留它们
  • 以独立于区域设置的方式读取 Excel 文件

    我使用以下代码从各种 Excel 文件读取数据 IMEX 1 to force strings on mixed data HDR NO to process all the available data Locale 1033 is en
  • 将 CSV 导入 Excel - 自动“文本到列”和“插入表格”

    我想在 Excel 2010 上打开 CSV 逗号分隔 文件并自动将文本转换为列 然后选择所有活动单元格并插入带标题的表格 是否可以在我的功能区中添加一个按钮来为我完成这一切 我经常使用不同大小的 CSV 文件 我发现每次手动执行此操作有点
  • VBA删除列中的单元格并根据单元格的值左移?

    如果单元格为空 如何删除 B 列 和左移 中的单元格 下面是我所拥有的 但它给出了 应用程序定义或对象定义的错误 Sub DeleteCellShiftLeft For i 1000 To 1 Step 1 If Cells i B Val
  • Excel:查找和替换宏 - 仅一列

    我编写了一些宏来将大量数据格式化为相同的可接受格式 我们从中提取的程序拒绝按照我们想要的方式提取数据 但理论上在 Excel 中更改并不难 它设置运行的方式是为修饰符使用单独的宏 然后使用 全部运行 宏来调用所有修饰符 目前我有 Sub R
  • 如果单元格 = 0,则将范围复制到主表并从主表中删除范围

    有 10 个工作表 工作表 1 工作表 10 其表处于相同范围 C25 G34 和 C42 N51 如果 总重量 列的值 gt 0 则必须复制这些行 复制的行将转到两个汇总表 前往 Westrock 表 gt Westrock 汇总表 前往
  • 在 VBA 中从范围创建数组

    我遇到了一个看似基本的问题 但找不到任何资源来解决它 简而言之 我只想将一系列单元格 所有一列 的内容加载到数组中 我能够通过以下方式完成此任务 DirArray Array Range A1 Range A2 但由于某种原因 我无法以这种
  • 如何通过VBA宏遍历Word文档中的文本

    我想通过宏来计算 Word 文档中的字符 我不知道如何获取 Visual Basic 宏中文本的两个参考并浏览它 我想计算文档中每个字符的数量 例如文档中 ABZBB A x 1 B x 3 Z x 1 Sub Macro1 Dim Box
  • 在 Excel VBA 中,如何访问存储在已安装的加载项中的子项?

    我已经创建了一个 Excel 加载项 该加载项中有一些模块 假设 module1 是其中之一 在 module1 中 我有一个 sub 声明为 public sub abc end sub 在我的工作簿中 我希望能够使用外接程序中定义的函数
  • 检查工作表是否存在,如果不存在则创建-VBA [重复]

    这个问题在这里已经有答案了 我已经测试了许多代码 这些代码检查工作表是否存在 基于名称 如果不存在则创建一个 其中一些循环所有工作表 一些引用工作表 如果创建错误则意味着该工作表不存在 哪一种是最合适的 正统的 更快的方式来完成这个任务 目
  • 使用 Powershell SQL 将数据提取到 Excel

    我想使用 powershell 将数据从 SQL Server 提取到新的 excel 文件 对于小型数据集 我的代码可以工作 但某些表的行数超过 100 000 行 这将需要很长时间 我不在 SQl 服务器中使用该实用程序的原因是因为我想
  • openpyxl 2.4.2:保存后公式生成的单元格值为空

    我使用 openpyxl 打开文件 编辑一些单元格并保存更改 这是一个例子 import openpyxl book openpyxl load workbook sheet path sheet book active for row i
  • 使用 python 制作本地服务器应用程序的最佳方法

    我想要简单轻松地集成 python 和 vba 人们 如果他们在阅读本文后亲自见到我 阅读本文可能会杀了我 但我正在使用 django 开发服务器来实现此目的 有没有什么简单又好的方法 仅举个例子 我想使用 python 模块 openpy
  • 从新的 xlsx 文件中删除宏

    功能部分 下面的代码将 xlsm 文件中的 2 个选项卡保存到新的 xlsx 文件中 文件保持打开状态以进行编辑 错误 xlsm 选项卡在工作表代码中有触发器 该触发器无效 一旦在 xlsx 工作表中输入任何内容 就会导致错误 所需输出 编

随机推荐

  • 如何获取成员变量的注解?

    我想知道一个类的一些成员变量的注释 我使用BeanInfo beanInfo Introspector getBeanInfo User class 反思一个类 并使用BeanInfo getPropertyDescriptors 查找特定
  • 如何从一个元组到一个元组引用元组中的元素?

    我有一个 C 11 元组 我想要一个元组std reference wrappers 到元组的相同元素 有没有简单的方法可以做到这一点 映射一个元组很容易一组索引 e g include
  • 在代码中处理语音命令以执行命令的智能方法

    我想知道是否可以寻求更好的方法来处理和处理命令 而不是使用可能变得非常长且非常乏味的 Switch Case 或 IF 布尔检查 E G if settings getName Command Speak I am here if Get
  • 如何用 Python 可视化回归树

    我正在寻找可视化回归使用 scikit learn 中的任何集成方法构建的树 梯度增强回归器 随机森林回归器 装袋回归器 我看过这个问题很接近 并且这个问题它处理分类树 但这些问题需要 树 方法 而该方法不适用于 SKLearn 中的回归模
  • 在 Spring Integration 中,RequestHandlerRetryAdvice 无法与 Ftp.outboundGateway 一起使用

    我的情况与描述的类似这个问题 区别在于我不使用WebFlux outboundGateway but an Ftp outboundGateway我称之为AbstractRemoteFileOutboundGateway Command G
  • phpmyadmin 中的自动增量

    我有一个使用 PHP MySQL 和 phpMyAdmin 的现有数据库 当用户成为我网站的会员时 我需要系统使用五位数字为他们创建一个唯一的会员号码 例如 83773 我想这就像生成一个随机密码 只不过我只想要我的会员的数字 该 ID 号
  • urllib2 HTTPPasswordMgr 不起作用 - 凭据未发送错误

    以下 python curl 调用具有以下成功结果 gt gt gt import subprocess gt gt gt args curl H X Requested With Demo https username email pro
  • Jenkinsfile主动选择参数

    如何在多分支管道 Jenkinsfile 声明性 中使用此 dsl 脚本 parameters activeChoiceParam States description Select a state option filterable ch
  • Ajax 如何与 PHP 配合使用?

    我在使用 ajax 和 php 时遇到问题 我想做的是调用一个 ajax 函数 该函数从表单的输入中获取一个值 并检查该电子邮件是否存在于数据库中 这是我当前的 JavaScript Checks for Existing Email fu
  • 如何同步调用ajax而不冻结网页

    我有一些 javascript 可以触发大约 100 个对 php 脚本的调用 php 脚本占用大量内存并需要几秒钟才能完成 然后返回通过或失败的 json 响应 我不希望 ajax 调用是异步的 因为服务器会在运行 100 个自身实例时突
  • 彼得森算法

    在经典的 Peterson 算法中 您在进入关键部分之前检查 2 个标志 flag1 和 flag2 以及转变量 如果我先检查转 然后检查标志 这会起作用吗 是的 如果你先检查一下 它会起作用turn然后检查flag 0 or flag 1
  • Python 断言引发用户定义的异常

    以下问题是由讨论引发的这个帖子 假设有两个文件 foob ar py and foob ar unittest py File foob ar py包含一个类 FooBar 有两个函数 foo and bar 功能bar引发内置异常 函数f
  • 如何使用 SQL 将值相乘

    好的 我正在做作业 但无法弄清楚如何与 SQL 相乘以及如何正确排序 我应该 创建一个查询 列出球员 player name 当前工资和一个新的 创建的 列 该列反映工资增加 10 计算为工资 1 1 按工资降序对数据进行排序 这只是我们老
  • 如何将包含数组的列表从 C# 序列化为 JSON?

    我希望从 C Sharp 序列化为 JSON 我希望输出是 Info item1 Count 5749 Info item2 Count 2610 Info item3 Count 1001 Info item4 Count 1115 In
  • 抽象基类的注册方法实际上做了什么?

    我对 ABC 注册方法感到困惑 采取以下代码 import io from abc import ABCMeta abstractmethod class IStream metaclass ABCMeta abstractmethod d
  • 像属性一样访问字典键?

    我发现访问字典键更方便obj foo代替obj foo 所以我写了这个片段 class AttributeDict dict def getattr self attr return self attr def setattr self a
  • 如何在渲染脚本中制作圆柱体

    我一直在尝试在渲染脚本中制作一个圆柱体 这是我尝试过的代码 public Mesh cylinder float radius 1 25f halfLength 5 int slices 16 Mesh TriangleMeshBuilde
  • 无法将控件添加到表单

    我正在尝试将用户控件添加到表单中 UserControl 与表单位于不同的项目中 但位于同一解决方案中 我过去已将此控件添加到其他表单中 但是 某些内容发生了变化 并且出现以下错误 创建组件失败MessageDisplayListContr
  • 如何从 Google Apps 脚本发布 Google 幻灯片演示文稿?

    我使用 Google Apps 脚本构建了 Google 幻灯片演示文稿 var docId DriveApp getFileById templateId makeCopy getId var newDoc DriveApp getFil
  • 分离数据并放入单独的工作表 Excel VBA [关闭]

    很难说出这里问的是什么 这个问题模棱两可 含糊不清 不完整 过于宽泛或言辞激烈 无法以目前的形式合理回答 如需帮助澄清此问题以便重新打开 访问帮助中心 我有一个包含超过 80K 条目的大型数据集 其形式如下 Name Date Value