2014-04-21 111 views
-2

在片1中,我有需要在片下方2。實施例具有給定ID來填充各項:如何使用宏/ vba將值從一張紙粘貼到另一張紙上?

表1:

Column1 Column2 
----------------     
shoe  no data 
bag  no data 
jacket no data      

表2:

Column1 
------- 
KL-123 
BC-223 
AK-477 
AB-987 

如果可能我想尋求專家的建議,或者如果我可以得到一個宏來填充「sheet1 column2」與「sheet2 Colum1」中的值只是像e下面。 Sheet1的乘積取決於「sheet2」中的項目數量。

表Sheet1

Column1 Column2 
------------------ 
shoe  KL-123   
bag  KL-123    
jacket  KL-123    
shoe  BC-223   
bag  BC-223   
jacket  BC-223   
shoe  AK-477   
bag  AK-477   
jacket  AK-477    
shoe  AB-987   
bag  AB-987   
jacket  AB-987  

回答

1

的一些很好的例子試試這個:

Option Explicit 
'Option Base 1 not really needed, my assumptions are correct 

Sub Test() 

Dim sh1 As Worksheet, sh2 As Worksheet 
Dim myIDs 
Dim itmRng As Range 
Dim i As Long 

Set sh1 =Thisworkbook.Sheets("Sheet1") 
Set sh2 = Thisworkbook.Sheets("Sheet2") 

With sh2 
    '~~> get your items 
    '~~> basically, below passes range values to an array 
    myIDs = Application.Transpose(.Range("A1", _ 
      .Range("A" & .Rows.Count).End(xlUp).Address)) 
End With 

With sh1 
    '~~> get your item range 
    Set itmRng = .Range("A1", .Range("A" & .Rows.Count).End(xlUp).Address) 
    '~~> populate the columns 
    For i = Lbound(myIDs) To Ubound(myIDs) 
     '~~> iterating the array values also determines how many 
     '~~> times you need to copy your item range 
     itmRng.Copy itmRng.Offset((i-1)*itmRng.Rows.Count,0) 
     itmRng.Offset((i-1)*itmRng.Rows.Count,1) = myIDs(i) 
    Next 
End With 

End Sub 

EDIT1: 已經測試。希望這可以幫助你一點。

+0

+1這是一些很好的代碼 – FluffyKittens

+0

WOW!這工作真的很棒。非常感謝你。你提供這樣的培訓嗎?我很想獲得更多的知識。謝謝 – user3556563

+0

我可以要求對此進行一些調整嗎?我如何設置它來捕獲sheet1中的所有項目,就像添加更多的列和行一樣?非常感謝你。希望你能幫助我。 – user3556563

0

你的問題不是很清楚,但是從我看到它看起來像 你只需要使用一個函數,VBA(大概)這裏是沒有必要的。 =VLOOKUP(lookup_value,table_array,col_index_num,range_lookup)

你在你的問題給了該片的佈局似乎很奇怪,並有可能倒退,但這裏是Vlookup會怎麼寫,給您的數據。

你Lookup_Array中將是:

Sheet 1: 

Column1 

shoe 

bag 

jacket 

你的表陣列將是從片2列1和2中的列索引數目將是2,如果在表中範圍的第一列是片2塔1 。

由於您未查找範圍,因此您需要將range_lookup值設置爲FALSE

您應該將此Vlookup函數放在第1列第2列中,您所說的列爲空白。

您還可以得到更多的信息和Vlookups from the source.

+0

嗨,謝謝你的回覆,但我懷疑vlookup會解決這個問題,或者我只是在這裏錯過了一些東西。對不起,一個不清楚的問題btw。我想要的是通過複製sheet2中的每個值來將sheet1中的數據填充到sheet1中。就像我在sheet2中有4個值一樣,那麼sheet1中的每個項目都會有一個來自sheet2的相應值。鞋子的每一排都會有KL-123,BC-223,AK-477,AB-987,其他物品也一樣。請讓我知道這是否合理。謝謝 – user3556563

+0

你可以發佈問題的圖片嗎? – FluffyKittens

+0

如果你想創建一個宏,你可以直接進入開發者選項卡,點擊記錄宏,然後手動記錄,自己手動複製併發布每個值。然後,您可以保存該宏並回復它,以便在將來執行完全相同的操作序列。這是一個宏觀的,記錄的行動。 如果您想使用VBA,您可能需要使用for循環將sheet 2中的所有值讀入3個sperate數組。也許每種類型的項目都有一個數組。 – FluffyKittens

相關問題