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:A4
, A,B,C,D
在B1: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
干杯! 你会到达那里。