Warning: file_get_contents(/data/phpspider/zhask/data//catemap/5/excel/25.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Vba 如何将一个或多个列对转换为Excel中的匹配记录?_Vba_Excel_Transpose - Fatal编程技术网

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