Excel重复数据多个表

时间:2016-09-20 01:41:27

标签: excel vba excel-vba access

所以通常我知道自己要做什么,并且可以谷歌并弄明白。但是,我甚至不知道我试图做什么。我在Excel中有两张表(或Access中的表,以最简单的方式)。表A有315个数字,表2有146个人。我需要合并两个表,以便我有两列。每个帐户一列,每个人另一列。所以我基本上最终得到了大约46,000行。所以:

表1:


1
2
3
4个

表2:

A

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循环,但我只能在这里访问/ excel,而且我不知道足够的VBA来制作我自己的宏(如果我知道我是什么的我试图这样做,这里是我去谷歌的地方)。所以,我感谢任何愿意提供帮助,即使我甚至没有提供我尝试过的代码,因为我不知道从哪里开始。

4 个答案:

答案 0 :(得分:2)

使用Access,查询将是

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

答案 1 :(得分:1)

将这些列表格式化为表格,以便VBA代码可以使用ListObject个对象;您可以将他们的Range字面转储到Variant()数组中,然后您只需设置嵌套循环;您将要关闭Application.ScreenUpdating,因为您要重复您的" AccountList"在迭代你的" PersonList"时,内循环的主体将写入目标Worksheet;然后,您可以在重新启用ListObject之前将结果转换为Application.ScreenUpdating。或者,让Excel重新绘制自己,但在Application.Statusbar中显示%完成状态,以便用户知道宏正在工作......但显示状态并刷新屏幕所需的时间比不用时要长。

答案 2 :(得分:1)

循环非常简单。

以下是在范围内阅读这些内容的基本示例。

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所说,使用表格可能比定义你的确切范围更好。

答案 3 :(得分:0)

这很容易。

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

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

干杯!你会到达那里。