Vba 如何将一个或多个列对转换为Excel中的匹配记录?
给定如下数据集:Vba 如何将一个或多个列对转换为Excel中的匹配记录?,vba,excel,transpose,Vba,Excel,Transpose,给定如下数据集: Sheet 1 Col1 Col2 Col3 Miss Molly Extra Data Extra Data Mister Rogers Extra Data Extra Data Roy Rogers Extra Data Extra Data 及 我怎么能得到这样的转置输出呢 Sheet X (you can make me a new sheet if you like, or add to Shee
Sheet 1
Col1 Col2 Col3
Miss Molly Extra Data Extra Data
Mister Rogers Extra Data Extra Data
Roy Rogers Extra Data Extra Data
及
我怎么能得到这样的转置输出呢
Sheet X (you can make me a new sheet if you like, or add to Sheet 1)
Col1 Col2 Col3 Col4 Col5 Col6 Col7 Col8 Col9
Miss Molly Extra Data Extra Data Value Name 1 Value Data 1 Value Name 2 Value Data 2
Mister Rogers Extra Data Extra Data Value Name 1 Value Data 1
Roy Rogers Extra Data Extra Data Value Name 1 Value Data 1 Value Name 2 Value Data 2 Value Name 3 Value Data 3
试试这个
Sub MergeData()
Dim rSrc As Range
Dim rDst As Range
Dim rwSrc As Range
Dim rwDst As Range
Dim vSrc As Variant, vCopy As Variant
Dim cl As Range
Dim i As Long
Set rDst = ActiveWorkbook.Sheets("Sheet1").UsedRange
vSrc = ActiveWorkbook.Sheets("Sheet2").UsedRange
ReDim vCopy(1 To 1, 1 To 2)
Application.FindFormat.Clear
For i = 1 To UBound(vSrc, 1)
If vSrc(i, 1) <> "" Then
' Find vSrc(i, 1) in rDst.Column(1)
Set cl = rDst.Columns(1).Find( _
What:=vSrc(i, 1), _
After:=rDst.Cells(1, 1), _
LookIn:=xlFormulas, _
LookAt:=xlWhole, _
SearchOrder:=xlByColumns, _
SearchDirection:=xlNext, _
MatchCase:=False, _
SearchFormat:=False)
' Copy data to Dest sheet
If Not cl Is Nothing Then
Set cl = cl.End(xlToRight).Offset(0, 1)
vCopy(1, 1) = vSrc(i, 2)
vCopy(1, 2) = vSrc(i, 3)
cl.Resize(1, 2) = vCopy
Else
' Name not found in Dest sheet
End If
End If
Next
End Sub
子合并数据()
变暗rSrc As范围
Dim rDst As范围
变光rwSrc As范围
变暗rwDst As范围
Dim vSrc作为变型,vCopy作为变型
Dim cl As范围
我想我会坚持多久
设置rDst=ActiveWorkbook.Sheets(“Sheet1”).UsedRange
vSrc=ActiveWorkbook.Sheets(“Sheet2”).UsedRange
重拨vCopy(1到1,1到2)
Application.FindFormat.Clear
对于i=1到UBound(vSrc,1)
如果vSrc(i,1)“,则
'在rDst.列(1)中查找vSrc(i,1)
Set cl=rDst.Columns(1)。查找(_
什么:=vSrc(i,1)_
之后:=rDst.单元格(1,1)_
LookIn:=xl公式_
看:=xlother_
SearchOrder:=xlByColumns_
SearchDirection:=xlNext_
MatchCase:=假_
SearchFormat:=False)
'将数据复制到目标工作表
如果不是,那么cl什么都不是
设置cl=cl.End(xlToRight)。偏移量(0,1)
vCopy(1,1)=vSrc(i,2)
vCopy(1,2)=vSrc(i,3)
cl.Resize(1,2)=vCopy
其他的
'在目标工作表中找不到名称
如果结束
如果结束
下一个
端接头
Sub MergeData()
Dim rSrc As Range
Dim rDst As Range
Dim rwSrc As Range
Dim rwDst As Range
Dim vSrc As Variant, vCopy As Variant
Dim cl As Range
Dim i As Long
Set rDst = ActiveWorkbook.Sheets("Sheet1").UsedRange
vSrc = ActiveWorkbook.Sheets("Sheet2").UsedRange
ReDim vCopy(1 To 1, 1 To 2)
Application.FindFormat.Clear
For i = 1 To UBound(vSrc, 1)
If vSrc(i, 1) <> "" Then
' Find vSrc(i, 1) in rDst.Column(1)
Set cl = rDst.Columns(1).Find( _
What:=vSrc(i, 1), _
After:=rDst.Cells(1, 1), _
LookIn:=xlFormulas, _
LookAt:=xlWhole, _
SearchOrder:=xlByColumns, _
SearchDirection:=xlNext, _
MatchCase:=False, _
SearchFormat:=False)
' Copy data to Dest sheet
If Not cl Is Nothing Then
Set cl = cl.End(xlToRight).Offset(0, 1)
vCopy(1, 1) = vSrc(i, 2)
vCopy(1, 2) = vSrc(i, 3)
cl.Resize(1, 2) = vCopy
Else
' Name not found in Dest sheet
End If
End If
Next
End Sub