所以通常我知道自己要做什么,并且可以谷歌并弄明白。但是,我甚至不知道我试图做什么。我在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来制作我自己的宏(如果我知道我是什么的我试图这样做,这里是我去谷歌的地方)。所以,我感谢任何愿意提供帮助,即使我甚至没有提供我尝试过的代码,因为我不知道从哪里开始。
答案 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
干杯!你会到达那里。