根据列标题将数据从一个工作簿转移到另一个工作簿

2024-04-29

我下面的代码将列值从一个特定工作簿(Activeworkbook - 列 O、AH 和 I)转置到另一个工作簿(“loader file.xls” - 列 A、B、C)。它非常适合我的需求

Sub PullTrackerInfo()
'Pull info from respective column into correct column on loader file

Dim wb_mth As Workbook, wb_charges As Workbook, mapFromColumn As Variant, mapToColumn As Variant
    Dim lastCell As Integer, i As Integer, nextCell As Integer, arrCopy As Variant
Set wb_mth = ActiveWorkbook
Set wb_charges = Workbooks("loader file.xls")
    

    mapFromColumn = Array("O", "AH", "I")
    mapToColumn = Array("A", "B", "C")

        For i = 0 To UBound(mapFromColumn)

            With wb_mth.Sheets(1)

                lastCell = w.Sheets("owssvr").ListObjects("Table_owssvr").Range.Rows.Count
                arrCopy = .Range(mapFromColumn(i) & 2 & ":" & mapFromColumn(i) & lastCell)

            End With

            With wb_charges.Worksheets(1)

                nextCell = .Range(mapToColumn(i) & .Rows.Count).End(xlUp).Row + 1
                .Range(mapToColumn(i) & nextCell).Resize(UBound(arrCopy), UBound(arrCopy, 2)).Value = arrCopy

            End With
        Next i

End Sub

我想做的是更进一步,我通常必须将数据排序到正确的列,以便将其转置到加载程序文件。我想做的是根据列标题的标题(“市场代码、“ID”、“C 代码”)移动列数据。请参阅下面的想法...

mapFromColumn = Array("Market Code", "ID", "C Code",
    mapToColumn = Array("A", "B", "C")

        For i = 0 To UBound(mapFromColumn)

            With wb_mth.Sheets(1)

                lastCell = w.Sheets("owssvr").ListObjects("Table_owssvr").Range.Rows.Count
                arrCopy = .Range(mapFromColumn(i) & 2 & ":" & mapFromColumn(i) & lastCell)

            End With

            With wb_charges.Worksheets(1)

                nextCell = .Range(mapToColumn(i) & .Rows.Count).End(xlUp).Row + 1
                .Range(mapToColumn(i) & nextCell).Resize(UBound(arrCopy), UBound(arrCopy, 2)).Value = arrCopy

            End With
        Next i

End Sub

上面的代码显然不起作用,我尝试了几种不同的策略但无济于事。如果有人能帮助我那就太好了。谢谢


将重新排列的 listobject 列写入目标

这种方法使用

  • 一个相当不为人知的特征Application.Match()得到所有列号各个标头的数量at once通过比较两个数组(假设现有标头,否则需要额外的错误处理)以及
  • 的高级功能Application.Index() to 改编基于找到的整个列表框数据集数字列 values (而行值完全采用且顺序不变).

Function getCols(individualHeaders, myTable As ListObject)
'Note: assumes existing header names & listobject start in column A
    'get all headers of list object
    Dim allHeaders
    allHeaders = Application.Transpose(myTable.HeaderRowRange.Value2)
    'get column numbers of found headers
    Dim cols
    cols = Application.Match(individualHeaders, allHeaders, 0)  ' 1-based
    ReDim Preserve cols(0 To UBound(cols) - 1)                  ' optional zero-base redim
    'return found numeric results
    getCols = cols
End Function

示例代码

虽然 OP 中有一些未声明的工作表引用,但这应该有效并解决您的问题

'[0]set listobject to memory
    Dim lob As ListObject
    Set lob = w.Sheets("owssvr").ListObjects("Table_owssvr")
'[1]get column numbers
    Dim mapFromColumn As Variant
    mapFromColumn = Array("Market Code", "ID", "C Code")
    mapFromColumn = getCols(mapFromColumn, lob)
    ' Debug.Print Join(mapFromColumn, ",")
'[2]get complete set of listobject data
    Dim data As Variant
    data = lob.DataBodyRange.Value2
'[3]limit data set to chosen columns in subsequent order
    data = Application.Index(data, Evaluate("row(1:" & UBound(data) & ")"), mapFromColumn)
'[4]write data to target
    Dim wb_charges As Workbook
    Set wb_charges = Workbooks("loader file.xls")
    With wb_charges.Worksheets(1)
        Dim nextCell As Long
        nextCell = .Range("A" & .Rows.Count).End(xlUp).Row + 1 
        .Range("A" & nextCell).Resize(UBound(data), UBound(data, 2)).Value = data
    End With

相关链接

  • 的一些特点Application.Index()功能 https://stackoverflow.com/questions/51688593/excel-vba-insert-new-first-column-in-datafield-array-without-loops-or-api-call/51714153#51714153
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

根据列标题将数据从一个工作簿转移到另一个工作簿 的相关文章

  • 无法摆脱脚本中的硬编码延迟

    我用 vba 结合 selenium 编写了一个脚本来解析网页中可用的所有公司名称 该网页启用了延迟加载方法 因此每个滚动中只有 20 个链接可见 如果我滚动 2 次 则可见链接数为 40 个 依此类推 该网页中有 1000 个可用链接 我
  • 将匹配的行复制到另一张纸中

    我有两张表 sheet1 和sheet 2 我正在查看工作表 1 的 T 列 如果工作表 2 中 T 包含 1 则粘贴完整行 该代码运行良好 但它将sheet2 中的结果粘贴到sheet1 的同一行中 这会导致行之间出现空白 任何人都可以建
  • 当使用公式生成超链接时,VBA 打开 Excel 超链接不起作用

    使用公式生成的 Excel 超链接似乎存在错误 我使用的是 Excel 2010 我有一个电子表格 其中的单元格包含 URL 我的目标是执行以下两件事 将这些单元格变成超链接 创建一个键盘快捷键来打开这些超链接 这样我就不必使用鼠标了 为了
  • 在 Node.js 中解析 Json(带有数组和对象)并将数据导出到 Excel 文件中

    我是 Node js 新手 我的要求是 我需要解析 JSON 并将数据导出到 Excel 文件中 其中包含 JSON 中的所有字段 我的 JSON 如下 id 1255 title The Brain and Nervous System
  • 将 Excel 范围转换为 VBA 字符串

    我想将给定范围内的值转换为 VBA 字符串 其中原始单元格值由任何选定的列分隔符和行分隔符分隔 分隔符可以是一个字符或更长的字符串 行分隔符是行末尾的字符串 该字符串应该像我们从左上角 从左到右 到右下角读取文本一样完成 以下是范围 A1
  • Excel:#CALC!使用 MAP 函数计算间隔重叠时出现错误(嵌套数组)

    我正在努力解决以下公式 它适用于某些情况 但不适用于所有情况 名字input有失败的数据集 得到一个 CALC 描述 嵌套数组 错误 LET input N1 0 0 N1 0 10 N1 10 20 names INDEX input 1
  • Excel 工作表名称的有效字符

    在 Java 中 我们使用以下包以编程方式创建 Excel 文档 org apache poi hssf 如果您尝试设置工作表的名称 不是文件 而是内部 Excel 工作表 在以下情况下您将收到错误消息 名称超过 31 个字符 该名称包含以
  • 使用自定义功能区时是否可以阻止 MS Access 自动更改选定的功能区选项卡?

    当使用自定义 UI XML 文件在 Access 中添加多个自定义功能区选项卡时 每当关闭窗体时 选定的功能区选项卡都会变回第一个自定义选项卡 我们从 VBA 以编程方式加载自定义功能区 我已经创建了重现问题的 accdb http sdr
  • Redim Preserve 给出“下标超出范围”

    我想要Redim Preserve一个数组我不断收到错误 下标超出范围 我知道只有最后一个维度的大小可以更改 这正是我正在做的事情 这里出了什么问题 数组的类型是Variant BmMatrix Sheets BENCH Range a60
  • 使用 VBA 通过 Access 导航网页/操作 IE

    你好 StackOverflow 社区 我有一个关于使用 Access VBA 操作 IE 的问题 本质上 我正在尝试编写代码 使用 IE 打开特定网页 在该页面中搜索特定链接 目标链接的名称将取决于用户的情况 通过以编程方式单击该链接导航
  • Powershell - 在不安装 Excel 的情况下将 CSV 转换为 XLS

    我有一台自动生成报告的服务器 报告采用 CSV 格式 我需要能够直接加密文件 无需第三方压缩 无 WinZIP 或 WinRAR 我认为最好的想法是将 CSV 转换为 XLS 然后通过 Powershell 密码保护 XLS 文件 不幸的是
  • Excel - 在一列中查找重复项,然后将数量求和到另一列中?

    查找一列中的重复项 然后将数量求和到另一列中 https i stack imgur com AADjd png DATA RESULT A 1 A 11 A 1 B 7 A 9 C 5 B 2 D 4 B 2 E 8 B 3 C 5 D
  • HTML/VBA Click 事件未触发

    这是我第一次在 StackOverflow 上发布问题 到目前为止 我已经能够通过 VBA 帮助论坛解决我的大部分问题 我的问题很简单 我有一个自动数据拉取 我需要在其中导出数据 我过去曾在这方面取得过成功 但这次略有不同 我尝试单击以生成
  • 如何将参数从 Excel/VBA 传递到 Rstudio 中的脚本

    我正在尝试使用 Rstudio 从 VBA 打开 R 脚本 同时将参数传递给 R 脚本 然后我可以使用 commandArgs 访问该脚本 该问题与此处描述的问题非常相似 WScript Shell 用于运行路径中包含空格且来自 VBA 的
  • 跳过行:将数据从 SSIS 导出到 Excel 文件

    我正在尝试使用 SSIS 将数据从 SQL Server 数据库导出到 Excel 文件中 我希望从第 6 行插入数据 第 5 行有标题 我可以映射标题名称Excel 目标编辑器 通过编写 SQL 命令到 SQL 表头 SELECT FRO
  • 在 powershell 中打开 Excel 时出错

    我需要用以下命令打开 Excel 文件CorruptLoad来自 powershell 脚本的参数 但是当我尝试做到这一点时 出现错误Exception calling Open with 15 argument s open method
  • 如何使用 php 将 *.xlsb 转换为数组或 *.csv

    我正在尝试转换 xlsb文件到php array or csv文件 或至少 xls 我尝试使用PHPExcel 但看起来它无法识别该文件中的内容 我注意到 你可以重命名 xlsb文件到 zip文件 然后使用命令行解压缩unzip zip 之
  • 如何区分列表框中显示的文本和实际值?

    我有一个带有多选选项的列表框 我使用以下方式填充它addItem功能 我在 Google 上找不到任何有关此内容的文章 但我需要区分列表框中显示的文本和实际值 例如 shown hiddenvalue monday A1 tuesday A
  • 了解从 MsgBox 返回的响应代码

    我对编程很陌生 我刚刚开始学习 VBA 和 Excel 我在这个网站上遇到并做了这里的例子 但我对这段代码有疑问 我知道变量是使用 Dim 语句声明的 Message 这里是数据类型为整数的变量 我不太明白的是 这里的 6 和 7 是什么意
  • Excel 公式从单元格中获取字符串值并按字母顺序对其字符进行排序

    你能帮我制作一个 Excel 公式 从单元格中获取字符串值并按字母顺序对其字符进行排序吗 Ex 原始单元格值 BACR 已排序的字符单元格 ABCR 编辑 2022 年 4 月 29 日 随着 Office 365 Excel 中引入的动态

随机推荐

  • 如何在 Rust 中删除字符串的第一个和最后一个字符?

    我想知道如何删除 Rust 中字符串的第一个和最后一个字符 Example Input Hello World Output ello Worl 您可以使用 chars 迭代器并忽略第一个和最后一个字符 fn rem first and l
  • 使用 Pyinstaller 将 Django 项目转换为 .exe - 缺少模块、ModuleNotFoundError

    我正在使用 Pyinstaller 将 Django 项目转换为 exe 文件 我希望能够只需单击一个图标并在浏览器中打开该项目 这是我的文件夹结构 proj pycache proj pycache init py manage py D
  • 是否应该将jqGrid的addJSONData用法替换为setGridParam()和trigger('reloadGrid')的用法?

    我最近写了一个问题的答案 jqGrid 在更新表 自定义更新时显示默认 正在加载 消息 https stackoverflow com questions 2614643 jqgrid display default loading mes
  • Android 导航栏覆盖

    对于我的应用程序 我必须在 Android 屏幕底部的导航栏顶部绘制一个位图 我很好奇 WindowManager LayoutParams TYPE SYSTEM OVERLAY 是否可以用于覆盖导航栏 Use the WindowMan
  • 如何避免动态图中的“堆指针意大利面条”?

    一般问题 假设您正在编写一个由图组成的系统 以及可以根据相邻节点的配置激活的图重写规则 也就是说 您有一个在运行时不可预测地增长 收缩的动态图 如果你天真地使用malloc 新节点将被分配在内存中的随机位置 经过足够的时间 你的堆将变成一个
  • Lombok 插件与 2018.1 Intellij Idea 不兼容

    现在我看到 Intellij Idea 更新窗口的概念是 发现插件与新版本不兼容 Lombok 插件 有没有办法解决这个问题 或者我应该等到 lombok 插件团队解决兼容性问题 以下是适合我的解决方案 更新intellij idea 我使
  • 使用 Facebook 登录 Angularfire 未收到扩展权限

    在升级到 Angularfire 0 9 之前我已经完美地工作了 我想从 Facebook 请求用户的电子邮件地址 Facebook 已允许我向我的用户索取此信息 我正在使用下面的代码登录 Facebook 一切都完美地接受它不要求用户的电
  • AngularJS 条件 ng-disabled 不会重新启用

    给定一个有条件禁用的文本输入字段 使用ng disabled truthy scope variable AngularJS 禁用该字段第一次范围变量被伪造 但不会在后续更改中启用它 结果 该字段保持禁用状态 我只能假设出了问题 但控制台日
  • 由于使用 Bulma 和 Buefy (nuxt-buefy) 时 PostCSS 出现问题,无法构建 Nuxt

    使用以下配置 一切正常npm run dev 但是当我们这样做时npm run build 有一个错误 assets scss main scss 中的错误 node modules nuxt postcss8 node modules c
  • 解释暴力算法[关闭]

    就目前情况而言 这个问题不太适合我们的问答形式 我们希望答案得到事实 参考资料或专业知识的支持 但这个问题可能会引发辩论 争论 民意调查或扩展讨论 如果您觉得这个问题可以改进并可能重新开放 访问帮助中心 help reopen questi
  • 如何从下到上显示垂直进度条

    我需要帮助 当 window onload 时 我怎样才能制作进度条 它必须从下到上填充 在这段代码中它的工作原理相反 function move var elem document getElementById myBar var hei
  • 这个结构 (int) { 1 } 是如何调用的?

    构造如何 int 1 用C调用 猜测是 匿名常量 但这在谷歌上没有显示出任何帮助 作为旁注 您可以使用此构造来告诉 ioctl 您想要使用值为 1 的变量 ioctl int 1 它被称为 复合文字 http drdobbs com 184
  • R Plotly 为条形图设置自定义颜色

    我有一个plotly我的 Shiny 应用程序中的条形图 我想在生成的条形图中设置每列的特定颜色 Here s some reproducible data df data frame Month c Jan Feb Mar Apr May
  • Obj-C 中的错误:预期标识符或“(”

    我正在尝试制作一个带有按钮 得分计数器和计时器的简单应用程序 但出现了一些错误 import
  • 将文本传递给可能包含单引号的 JavaScript 函数

    我有一个动态创建的链接 如下所示 a href Edit a 使用编辑功能 然后获取传入的值并将其放入雅虎富文本编辑器中 除非传递的文本中有单引号 否则这种方法效果很好 明显的问题是链接看起来像这样 a href Edit a 对我能做什么
  • dispatch_time 和dispatch_walltime 之间有什么区别?在什么情况下最好使用其中之一?

    我知道dispatch time是根据设备时钟的时间 如果设备进入睡眠状态 时钟也会睡眠 另一方面dipatch walltime是根据挂钟的时间 它永远不会睡觉 我的问题是 在不同情况下使用其中一种或另一种 在性能方面或其他方面有什么区别
  • 产生独特的价值

    我想创建一个C程序生成 0 到 999999 之间的数字 请记住生成的数字不应包含任何重复的数字 例如 123 是一个可接受的值 但不是 121 as the 1 被重复 我已经找到了其他程序代码来检查整数是否有重复的数字 检查整数是否有重
  • 如何调用 less.js 函数

    我什至不太确定如何问这个问题 LESS CSS框架包含几个操作颜色的函数 我想知道如何自己调用这些函数来修改颜色 问题是这些函数位于另一个函数内部并定义如下 function tree tree functions darken funct
  • 将多个堆栈导航器中常见的所有屏幕放在哪里? - 反应导航 v5

    以下是我的应用程序导航器的层次结构 appNavigator 底部选项卡导航器 feed 堆栈导航器 后详细信息屏幕 页面详细信息屏幕 个人资料详情屏幕 其他屏幕 通知 堆栈导航器 个人资料详情屏幕 页面详细信息屏幕 发布详情屏幕 其他屏幕
  • 根据列标题将数据从一个工作簿转移到另一个工作簿

    我下面的代码将列值从一个特定工作簿 Activeworkbook 列 O AH 和 I 转置到另一个工作簿 loader file xls 列 A B C 它非常适合我的需求 Sub PullTrackerInfo Pull info fr