使用 ctrl 向下箭头的 VBA 代码来中断数据,复制中断之前的最后一行,粘贴到空白行,然后重复直到列表末尾

问题描述 投票:0回答:1

在离开 VBA 几年后,我又重新开始使用 VBA...

我收到一份报告,其中包含文本并合并了单元格以供演示之用。但是,我想取消合并合并的单元格,以便能够处理单独的行。我可以很简单地通过录制一个宏来完成此操作,在其中选择所有内容并展开/取消合并所有数据(尽管这确实会产生一些冗长的代码,因此任何缩短代码的提示将不胜感激,但这不是我问题的要点) .

一旦展开/取消合并,任何已合并单元格的行现在都显示两行,顶部一行包含合并的数据,底部行现在为空白,从而在整个报告中创建一个中断。我想编写一个宏,它基本上控制向下箭头到数据中的中断,复制中断上方的单元格,粘贴到空白处,然后继续直到报告结束。

我创建了一个示例数据文件来说明我正在查看的内容。合并的本质是因为某些项目具有多个元素(两个经理或两个成本中心),这对于格式化报告有意义,但对于对整体数据进行任何类型的分析则没有多大意义。我的样本中的问题是项目 19、27 和 37。

我正在使用的真实报告要大得多,因此宏可以很好地快速实现我想要的格式,而不是在数据中的每个未合并中断处手动复制/粘贴。这可能非常简单,但我的基本谷歌搜索打开了比我想打开的更复杂的门。我假设我正在寻找某种 Do Until 活动单元 = 空白循环,但任何和所有解决方案将不胜感激。

预先感谢任何可以提供帮助的人。

我尝试在网络上搜索创建一个循环来查找列表中的中断的方法,但结果让我不知所措,其中大多数结果似乎比我想要的要复杂得多。记得这个网站,我几年前在这里问过一个问题,很快就收到了一些有用的建议 - 我想我会再试一次。

excel vba list loops
1个回答
0
投票

最简单、最快的方法是 Powerquery。

  1. 将数据转换为表格(主页 > 格式为表格)=> 这将删除所有合并的单元格。
  2. 单击表并转到菜单“数据”>“来自表/范围”=> 这将打开 Powerquery。
  3. 右键单击要填充的列,然后选择填充>向下
  4. 转到主菜单并选择“关闭并加载”

您的标准化表格将被加载到新的工作表中。

© www.soinside.com 2019 - 2024. All rights reserved.