2016-09-20 90 views
2

所以通常我知道我在做什么,可以谷歌它并找出它。但是,我甚至不知道我想要做的是什么。我有两张excel表格(或Access中的表格,以最简单的方式)。表A有315个数字,表2有146个人。我需要合并两个表,以便我有两列。每个帐户一列,每个人一列。所以我基本上最终会得到大约46,000行。所以:Excel重复数据多个表

表1:


表2:

Ç

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来创建自己的宏(如果我知道我正在尝试做什么,这里是我的谷歌它)。所以,即使我甚至没有提供我尝试过的代码,因为我不知道从哪里开始,我很欣赏任何愿意提供帮助的意愿。

+0

您是否拥有带Power Query的Excel 2016或Excel 2013?如果不是,VBA可能是你最好的选择。 –

+0

都不是。我假设VBA将是我的最佳选择,某种宏观,我只是不知道我在用Google进行搜索。巴哈。 – Aaron

+0

只是一个说明,你会谷歌:“交叉加入”和(Excel或访问) – eshwar

回答

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,4A1:A4,你A,B,C,DB1:B4,输出去D1:D16

正如@ Mat'sMug虽然说,这可能是更好的使用比表,必须确定您的确切范围。

+0

我给你的投票,因为你给了我代码。必须稍微调整一下(需要单独列中的i值和j值,但这是一个简单的调整)。感谢您帮助刚刚起步的程序员。 :) – Aaron

1

格式这些列表如表,所以VBA代码可以使用ListObject对象;你可以把他们的Range从字面上转储到Variant()数组中,然后你只需设置你的嵌套循环;你要关掉Application.ScreenUpdating,因为你要重复你的“为accountList”,而迭代你的“PersonList”,而内循环的遗体将被写入到目标Worksheet;然后您可以将结果转换为ListObject,然后再切换Application.ScreenUpdating。或者,让Excel重新绘制自己,但在Application.Statusbar中显示%完成状态,以便用户知道该宏正在工作...但显示状态并刷新屏幕所花费的时间比如果您没有。

+0

所以你说VBA将两个表都拉入数组,然后连续循环/转储数组? (再一次,如果这是PHP,我可以完全描绘你在说什么)。你愿意给我一个代码片段的开始? (我知道我不应该跳过VB课...) – Aaron

+0

请注意,数据是固定的(我知道所有的数据),我只是寻找最快的方式来结合和复制,而不是我复制粘贴146个项目315次。 – Aaron

+0

@Aaron直接SQL是最简单,最快速的方法 - 我只是没有意识到你有MS-Access中的数据。 [YowE3K有你的最佳解决方案](http://stackoverflow.com/a/39584776/1188513):) –

2

使用访问,查询将

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

哈!没有意识到[标签:访问]是在等式 - 这绝对是理想的解决方案:简单的交叉连接直接在源=) –

+0

我很惭愧,我没有想到这一点。卫生署。 – Aaron

+0

@Aaron - 我更加惊讶我**觉得它! – YowE3K

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 

干杯!你会到达那里。