Vba 将不同工作表中特定列的真实行内容复制到特定工作表中

Vba 将不同工作表中特定列的真实行内容复制到特定工作表中,vba,excel,Vba,Excel,我需要将工作簿上不同工作表中3个特定列的行内容复制到特定工作表中的特定范围。e、 g在Sheet1中,我的范围从B1到E40。我想复制B列到D列的内容,在e列中显示“TRUE”,然后将其粘贴到名为“Analysis”的工作表中 我希望宏进入工作表2、工作表3和工作表4,并在列E中进行相同的查找,将符合该条件的行B复制到D,并将值一个粘贴到工作表“分析”中另一个的下面 我对VBA非常陌生,我发现了一个代码,我认为这将有助于开始,但我需要帮助。你能给我一个主意吗?我附上了我找到的代码,这样你们就可以

我需要将工作簿上不同工作表中3个特定列的行内容复制到特定工作表中的特定范围。e、 g在Sheet1中,我的范围从B1到E40。我想复制B列到D列的内容,在e列中显示“TRUE”,然后将其粘贴到名为“Analysis”的工作表中

我希望宏进入工作表2、工作表3和工作表4,并在列E中进行相同的查找,将符合该条件的行B复制到D,并将值一个粘贴到工作表“分析”中另一个的下面

我对VBA非常陌生,我发现了一个代码,我认为这将有助于开始,但我需要帮助。你能给我一个主意吗?我附上了我找到的代码,这样你们就可以给我你们的注释了。它可能不是需要的,但在列表中它可能是一个基础。非常感谢

Sub MyCode()

Dim LSearchRow As Integer
Dim LCopyToRow As Integer

On Error GoTo Err_Execute

'Start search in row 3
LSearchRow = 3

'Start copying data to row 2 in Sheet2 (row counter variable)
LCopyToRow = 2

While Len(Range("A" & CStr(LSearchRow)).Value) > 0

'If value in column BA = "Soccer", copy entire row to Sheet2
If Range("BA" & CStr(LSearchRow)).Value = "Soccer" Then

    'Select row in Sheet1 to copy
    Rows(CStr(LSearchRow) & ":" & CStr(LSearchRow)).Select
    Selection.Copy

    'Paste row into Sheet2 in next row
    Sheets("Sheet2").Select
    Rows(CStr(LCopyToRow) & ":" & CStr(LCopyToRow)).Select
    ActiveSheet.Paste

    'Move counter to next row
    LCopyToRow = LCopyToRow + 1

    'Go back to Sheet1 to continue searching
    Sheets("Sheet1").Select

    End If

    LSearchRow = LSearchRow + 1

Wend

'Position on cell A3
Application.CutCopyMode = False
Range("A3").Select

MsgBox "All matching data has been copied."

Exit Sub

Err_Execute:
MsgBox "An error occurred."

End Sub

这应该适用于表1。但是,您需要明确要将值复制到分析表上的确切位置

Dim i As Long, j As Long, lR As Long, lastRow As Long, k As Long
Dim ws As Worksheet

lastRow = 1

For k = 1 To ThisWorkbook.Worksheets.Count
    If Sheets(k).Name <> "Analysis" Then
        Set ws = Sheets(k)
        lR = ws.Cells(ws.Rows.Count, 5).End(xlUp).Row

        For i = 1 To lR
            If ws.Cells(i, 5).Value = True Then
                lastRow = lastRow + 1
                For j = 2 To 4 '2 represents Columns(2) = B and 4 represents Columns(4) = D
                    If ws.Cells(i, j).Value <> "" Then
                        ThisWorkbook.Worksheets("Analysis").Cells(lastRow, j - 1).Value = ws.Cells(i, j)
                    End If
                Next j
            End If
        Next i
    End If
Next k

嗨,谢谢你的快速回复。我试图插入代码,但似乎什么都没有做。我还尝试在分析工作表中插入范围,但它似乎仍然不起作用。你对此有什么想法吗?非常感谢您的帮助。Sub Copy_粘贴Dim i As Long,j As Long,lR As Long,lastRow As Long Dim ws As Worksheet ws=Sheet1 lR=ws.Cellsws.Rows.Count,5.EndxlUp.Row for i=1到lR for j=2到4'2代表Columns2=B,4代表Columns4=D如果ws.Cellsi,j.Value和ws.Cellsi,5.Value=True然后lastRow=ThisWorkbook.WorksheetsAnalysis.RangeA1:C.CellsRows.Count,1.EndxlUp.Row ThisWorkbook.WorksheetsAnalysis.RangeA1:E.CellslastRow+1,1.Value=ws.Cellsi,j End如果下一个j下一个i End子命令请用文字告诉我:您想将值复制到哪里?“分析”表上的哪个栏?每张工作表一列?我想从其他工作表中复制正确的B-D列内容,然后将它们粘贴到分析工作表中A-C列的任意位置。很多感谢,请尝试编辑答案。如果您有任何其他问题,请包括VBA错误消息。