2016-09-20 41 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 

乾杯!你會到達那裏。