【发布时间】:2017-03-10 07:38:37
【问题描述】:
我有一份报告,我需要将特定范围的短语分解为单个单词并将它们堆叠起来以删除所有重复项。
这将是一个我试图自动化的三步过程:
- 用空格分隔单词
- 将所有内容堆叠到新工作表上的一列中
- 删除重复项
我自己不是程序员,所以尝试将手动操作变成自动化操作我会:
第 1 步:使用“texto to column”来分词
第 2 步(堆叠列):不知道,我迷路了
第3步:使用“remove duplicates”很好,删除重复数据
我可以处理第 1 步和第 3 步的 VBA,但我不知道如何使第 2 步的代码自动化。有什么想法可以实现吗?
【问题讨论】:
-
你明白了!打开宏记录器记录代码,然后在这里发回。 1)文本到列 2)复制每一行,并粘贴特殊的转置(这会将“A B C”粘贴到三行,而不是跨三列),3)删除重复项。然后停止录音机。你会有一个非常具体的代码,所以试试remove the use of
.Select/.Activate。从那里,如果您遇到困难,请发布您拥有的代码,我们可以提供帮助。 -
嘿@BruceWayne,感谢您的回答。我已经更新了我的问题。我可以通过录制宏并在 VBA 编辑器中进行细微更改来处理步骤 1 和 3 的宏记录,但是在步骤 2 中事情变得模糊。断开单词的列数将取决于短语中存在多少单词。如何使自动化不依赖于特定数量的 os 列?有什么想法吗?
-
是的,当然。您需要查看create a dynamic range。本质上,当您完成文本到列时,您将拥有(比方说)第 1 行、第 3 列。第 2 行,6 列。第 3 行,第 5 列。您只想遍历每一行,获取“第 1 列到第 x 列”数据,将特殊转置复制/粘贴到您的目标列。如果您是 VBA 新手,这可能有点令人生畏,但如果您可以编写一些代码,我将很乐意帮助解决您遇到的任何问题。