Excel VBA-按标题搜索列并粘贴到新工作表中

Excel VBA-按标题搜索列并粘贴到新工作表中,excel,vba,copy,copy-paste,paste,Excel,Vba,Copy,Copy Paste,Paste,我是VBA新手…尝试按名称搜索特定列并将它们粘贴到新工作表中 到目前为止,我所拥有的似乎很笨重,没有复制或粘贴所需的列,而是我当前剪贴板上的列 理想情况下,我将能够搜索3个不同的列并将它们粘贴到新的工作表上 任何帮助都将不胜感激 Dim CheckText As String Dim CheckRow As Long Dim FindText As Range Dim CopyColumn As String CheckText = “Bsp” 'Bsp is an example header

我是VBA新手…尝试按名称搜索特定列并将它们粘贴到新工作表中

到目前为止,我所拥有的似乎很笨重,没有复制或粘贴所需的列,而是我当前剪贴板上的列

理想情况下,我将能够搜索3个不同的列并将它们粘贴到新的工作表上

任何帮助都将不胜感激

Dim CheckText As String
Dim CheckRow As Long
Dim FindText As Range
Dim CopyColumn As String
CheckText = “Bsp” 'Bsp is an example header
CheckRow = 1 'Row with desired header
Dim oldsheet As Worksheet

Set oldsheet = ActiveSheet
Sheets.Add(After:=Sheets(Sheets.Count)).Name = "Pivot"
oldsheet.Activate
ActiveSheet.Select
'trying here to create a new sheet, name it and go back to the first sheet
Set FindText = Rows(CheckRow).Find(CheckText)
If FindText Is Nothing Then
MsgBox "Bsp not found"
End If

CopyColumn = Cells(CheckRow, FindText.Column).Column
Columns(CopyColumn).Select.Copy

Sheets("Pivot").Select

ActiveSheet.Paste

这只是一个通用示例,您可以根据需要进行调整。代码将查找名为
Some String
的列标题如果找到该列,我们接下来确定最后一行,复制该列(向下复制到最后一行),然后将该列粘贴到
Pivot
工作表上的单元格
A1

  • 使用范围变量
    Found
    存储列标题属性(即位置)
  • 检查是否确实找到了标题<如果未找到,则代码>为空(翻译:已找到)
  • 使用
    Found.Column
    引用符合
    Cells
    属性的列索引,因为语法是
    Cells(行索引,列索引)

  • 选项显式
    子测试()
    
    Dim ws As Worksheet:Set ws=ThisWorkbook.Sheets(“Sheet1”)”我最终使用了这段代码,试图搜索另一个标题并复制粘贴它 选项显式

    Sub Test()
    
    
    Dim ws As Worksheet
    
    Set ws = ActiveSheet
    Sheets.Add(After:=Sheets(Sheets.Count)).Name = "Pivot"
    ws.Activate
    ActiveSheet.Select
    
    Dim LRow As Long, Found As Range
    
    Set Found = ws.Range("A1:EM1").Find("Bsp") '<== Header name to search for
    
    
    If Not Found Is Nothing Then
    LRow = ws.Cells(ws.Rows.Count, Found.Column).End(xlUp).Row
    ws.Range(ws.Cells(1, Found.Column), ws.Cells(LRow, Found.Column)).Copy
    Sheets("Pivot").Range("A1").PasteSpecial xlPasteValues '<== Sheet to paste data
    End If
    
    ws.Activate
    ActiveSheet.Select
    
    Set Found = ws.Range("A1:EM1").Find("Sog")
    
    If Not Found Is Nothing Then
    LRow = ws.Cells(ws.Rows.Count, Found.Column).End(xlUp).Row
    ws.Range(ws.Cells(1, Found.Column), ws.Cells(LRow, Found.Column)).Copy
    Sheets("Pivot").Range("B1").PasteSpecial xlPasteValues
    
    End If
    
    End Sub
    
    子测试()
    将ws设置为工作表
    设置ws=ActiveSheet
    Sheets.Add(之后:=Sheets(Sheets.Count)).Name=“Pivot”
    ws.Activate
    活动表。选择
    暗LRow与长LRow相同,与射程相同
    
    Set Found=ws.Range(“A1:EM1”).Find(“Bsp”)“谢谢您回复我。你的代码很有效。
    Sub Test()
    
    
    Dim ws As Worksheet
    
    Set ws = ActiveSheet
    Sheets.Add(After:=Sheets(Sheets.Count)).Name = "Pivot"
    ws.Activate
    ActiveSheet.Select
    
    Dim LRow As Long, Found As Range
    
    Set Found = ws.Range("A1:EM1").Find("Bsp") '<== Header name to search for
    
    
    If Not Found Is Nothing Then
    LRow = ws.Cells(ws.Rows.Count, Found.Column).End(xlUp).Row
    ws.Range(ws.Cells(1, Found.Column), ws.Cells(LRow, Found.Column)).Copy
    Sheets("Pivot").Range("A1").PasteSpecial xlPasteValues '<== Sheet to paste data
    End If
    
    ws.Activate
    ActiveSheet.Select
    
    Set Found = ws.Range("A1:EM1").Find("Sog")
    
    If Not Found Is Nothing Then
    LRow = ws.Cells(ws.Rows.Count, Found.Column).End(xlUp).Row
    ws.Range(ws.Cells(1, Found.Column), ws.Cells(LRow, Found.Column)).Copy
    Sheets("Pivot").Range("B1").PasteSpecial xlPasteValues
    
    End If
    
    End Sub