在表1中,我需要使用表2中的给定ID填充各种项目。示例如下:
第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”中的值,如下所示。 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
答案 0 :(得分:0)
你的问题不是很清楚,但从我看到的情况看来
你只需要使用一个函数,这里不需要VBA(可能)。 =VLOOKUP(lookup_value,table_array,col_index_num,range_lookup)
您在问题中提供的工作表布局看起来很奇怪,可能会倒退,但是根据您的数据,这里是Vlookup
的编写方式。
您的lookup_value将是:
Sheet 1:
Column1
shoe
bag
jacket
您的表格数组将是第2页的第1列和第2列。如果表格范围中的第一列是第2页第1列,则列索引号将为2。
您需要将range_lookup
值设置为FALSE
,因为您没有寻找范围。
您可以将此Vlookup
函数放在工作表1的第2列中,您所说的列是空白的。
您还可以获得有关Vlookup from the source.
的更多信息和一些很好的示例答案 1 :(得分:0)
试试这个:
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:强> 已经过测试。希望这对你有所帮助。