复制模式并粘贴的正确 Excel 公式或 VBA 代码是什么?

复制模式并粘贴的正确 Excel 公式或 VBA 代码是什么?

所以我有以下要求:

第 1 页

xxxx
YYYY
ZZZZ

第 2 页

1994 xxx
1995 xxx 
1996 xxx
1994 YYY
1995 YYY 
1996 YYY
1994 ZZZ
1995 ZZZ 
1996 ZZZ

本质上我想要的是从表 1 复制公司名称并将它们粘贴到每个给定的年份并对近 600 家公司重复。

是否有任何公式或 VBA 代码可以完成此操作?我非常感谢任何帮助

答案1

选择您的公司列表并使用数据>获取和转换数据>从表/范围。

这将打开 Power Query 编辑器。您将看到类似以下内容:

在此处输入图片描述

使用主页>关闭并加载

现在我们要花点时间创建一个介于起始年份和终止年份之间的动态年份列表。如果您以后想更改起始年份和终止年份,这将非常有用。

在工作簿中的不同单元格中输入开始年份和结束年份。

在此处输入图片描述

选择起始年份,然后在名称框中输入名称(如start_year)来命名单元格:

在此处输入图片描述

命名单元格后,选择该单元格并使用“数据”>“获取和转换数据”>“从表/范围”

Power Query 编辑器打开后,其中有一个单元格,其列标题为 Column1,右键单击该单元格并选择“向下钻取”:

在此处输入图片描述

如果展开左侧的查询窗格,您将看到以下内容:

在此处输入图片描述

使用“主页”>“关闭并加载到”并选择“仅创建连接”。

对最后一年重复此操作,以便获得以下内容:

在此处输入图片描述

再次,关闭并加载并仅创建连接。

现在,在 Excel 中,单击“数据”>“查询和连接”。您应该看到以下内容:

在此处输入图片描述

我显示“已加载 50 行”,因为我创建了包含 50 个公司名称的虚拟数据。您的数据可能有所不同。

右键单击 Table1 查询并选择“编辑”。这将再次打开 Power Query 编辑器。

现在转到主页>高级编辑器。它应该看起来像这样:

在此处输入图片描述

我们将添加一些代码来创建年份列表。

将此行添加到第二行:

years = List.Numbers(start_year,end_year),

像这样:

在此处输入图片描述

现在单击“完成”。看起来好像什么都没有改变,但不用担心。

使用添加列>自定义列并按如下方式配置:

在此处输入图片描述

单击“确定”后,您将看到以下内容:

在此处输入图片描述

单击年份列顶部的双箭头,然后单击“扩展到新行”

在此处输入图片描述

现在您将看到,对于公司和年份的每种组合,都有一行:

在此处输入图片描述

使用“主页”>“关闭并加载”将其放回您的工作簿中。

如果您的公司列表或起始和/或结束年份发生变化,您只需更改源数据并刷新此查询。

答案2

这是一件非常容易的事情。有很多方法,但以下是最简单的方法,符合您刚才描述的内容。

计算一下有多少家公司的名称。(只需按下Ctrl-Down Arrow其中的列,然后查看最后一行是哪一行。使用第一行中的一家公司的名称,然后计算出有多少家公司的名称。为了便于回答,假设为 587 家。)

在另一张工作表上,选择一列并输入第一年,然后将其复制下来以填充总共 587 个单元格。假设您从 A1 开始并以 A587 结束。在单元格 A588 中,输入公式=A1+1。将其复制下来以填充另外 587 个单元格。通过复制单元格,然后突出显示它和其余 587 个单元格(A588:A1174)并粘贴来执行此操作。现在您已突出显示所有 587 个单元格并填充公式。复制该块并按Ctrl-Down Arrow,然后Down Arrow再次按以到达下一个空单元格(A1175)。

现在再次粘贴,然后向下移动到下一个空单元格。继续,直到您拥有一个包含您想要列出的所有年份的 587 个单元格块。突出显示整列条目(可能是 30 年,因此您要突出显示单元格 A1:A17610)。复制整个行并将Paste|Special|Values其全部更改为永久文本。

复制 587 个公司名称并将其粘贴到 B1:B587 的下一列中。然后转到下一个空单元格 B588,输入公式=B1,然后复制单元格。移至 A 列并转到最后一个已填充的单元格,或者直接使用F5 GoTo转到单元格 B17610(最后一个有年份的单元格是 A17610,无论如何您都希望位于 B 列)。无论您如何操作,请转到 B17610。按Shift-Up Arrow覆盖所有这些空单元格(本身以及一直到 A588 为止,这就是您要去的地方...可以粘贴覆盖 A588,因为它是相同的公式)。

突出显示后,粘贴。然后像处理 A 列一样突出显示所有 B 列单元格,然后复制并使Paste|Special|Values它们也全部成为永久文本。

这看起来只需要一个小时,而且很麻烦。事实上,我预计最多只需要 2 分钟,即使你遇到了一些麻烦。如果你不这样做……无论阅读起来看起来如何,在现实生活中它都很快。

完毕。

相关内容