Excel复制数据多个表

所以通常我知道我在做什么,可以谷歌和弄清楚。 但是,我甚至不知道我所要做的是什么。 我在excel中有两张(或Access中的表格,以最简单的方式)。 表A有315个数字,表2有146个人。 我需要合并两个表,这样我有两列。 每个帐户一列,每个人一列。 所以我基本上最后会有大约46,000行。 所以:

表格1:


1
2
3
4

表2:

一个

C

d

预期结果:

表3:

人数

A | 1

A | 2

A | 3

A | 4

B | 1

B | 2

B | 3

B | 4

C | 1

C | 2

C | 3

C | 4

等等。 如果我使用mysqli来完成PHP,我只是输出一个for循环,但是在这里只有access / excel可用,而我不知道有足够的VBA来创build自己的macros(如果我知道我正在尝试做什么,这里是我的谷歌它)。 所以,即使我甚至没有提供我尝试过的代码,因为我不知道从哪里开始,所以我很感激任何愿意提供帮助。

这是一个循环相当简单。

这是一个基本的例子,它看起来像是在范围内阅读这些内容。

Sub Looping() Dim n As Integer Dim rng1 As Range, rng2 As Range Set rng1 = Range("A1:A4") Set rng2 = Range("B1:B4") n = 0 For Each i In rng1 For Each j In rng2 n = n + 1 Cells(n, "D").Value = i.Value & j.Value Next j Next i End Sub 

1,2,3,4位于A1:A4A,B,C,DB1:B4 ,输出到D1:D16

正如@Mat'sMug所说,使用表格可能比定义精确范围要好。

使用Access,查询将是

 SELECT Table2.person, Table1.number INTO Table3 FROM Table1, Table2; 

将这些列表格式化为表,所以VBA代码可以使用ListObject对象; 你可以把他们的Range从字面上转储到Variant()数组,然后你只需要设置你的嵌套循环; 你会想closuresApplication.ScreenUpdating ,因为你要迭代你的“AccountList”,同时迭代你的“PersonList”,内部循环的主体将写入目标Worksheet ; 然后在切换Application.ScreenUpdating之前,可以将结果转换为ListObject 。 或者,让Excel自己重绘,但在Application.Statusbar显示%完成状态,以便用户知道macros正在工作…但显示状态和刷新屏幕将花费比如果你不这样做。

这很容易。

你想要做的是迭代逐项的第一列,并为每一次迭代它将迭代第二列。

在Excel VBA中是这样的:

 I = 1 III = 1 Do While Not Range("A" & I) = "" II = 1 Do While Not Range("B" & II) = "" /Your Code Goes Here /For example: Range("C" & III) = Range("A" & I) Range("D" & III) = Range("B" & II) III = III + 1 II = II + 1 Loop I = I + 1 Loop 

干杯! 你会到达那里。