Excel宏Pt。1-在工作表列中搜索用户生成的输入,并将行移动到新工作表

Excel宏Pt。1-在工作表列中搜索用户生成的输入,并将行移动到新工作表,excel,row,vba,Excel,Row,Vba,嗨,我正在整理大量数据,总共约340000行。最终,几乎每一排都会以某种方式被按摩。我在第一步排序数据时遇到问题 我将手动将数据分离到不同的工作表中。然后,我将运行一个宏,并会出现以下情况:提示将询问用户要搜索的内容,即“TEXT”,然后询问用户要搜索的列,即“H”。然后,宏将满足上述条件的整行复制到新工作簿中,并自动将工作簿保存为.csv文件,提示用户输入名称。新工作簿可能有几百个匹配项,因此它必须将该行附加到下一行。当然,我是一个新手,我使用过其他人的代码和一些我自己的代码 下面的代码很接近

嗨,我正在整理大量数据,总共约340000行。最终,几乎每一排都会以某种方式被按摩。我在第一步排序数据时遇到问题

我将手动将数据分离到不同的工作表中。然后,我将运行一个宏,并会出现以下情况:提示将询问用户要搜索的内容,即“TEXT”,然后询问用户要搜索的列,即“H”。然后,宏将满足上述条件的整行复制到新工作簿中,并自动将工作簿保存为.csv文件,提示用户输入名称。新工作簿可能有几百个匹配项,因此它必须将该行附加到下一行。当然,我是一个新手,我使用过其他人的代码和一些我自己的代码

下面的代码很接近。我有以下问题:

我不知道如何手动输入“返回到sheetX”以继续搜索。我希望这是当前的工作表或使用用户提示,目前已注释掉

我可以让它移动到一个新的工作表,但如上所述,我希望它是一个新的工作簿,而不是

谢谢大家!

    Public strData2 As String
    Public strSearchSheet As String
    Public strRange2 As String





Sub NewSearch()

'User Prompt box to enter IO driver type
 strData2 = InputBox(Prompt:="Enter IO Driver type you wish to search.  (IE GE9).", _
       Title:="ENTER TYPE", Default:="Type here")

 'strSearchSheet = InputBox(Prompt:="Enter Sheet name to search.  (IE AI).", _
      Title:="ENTER TYPE", Default:="Type here")
 'User Prompt box to enter Column to search
 strRange2 = InputBox(Prompt:="Enter Column you wish to search.  (IE E).", _
       Title:="ENTER TYPE", Default:="Type here")

  Dim LSearchRow As Integer
  Dim LCopyToRow As Integer

  'On Error GoTo Err_Execute

  'Start search in row 1
  LSearchRow = 1

  '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  = "TEXT", copy entire row to Sheet2
   If Range(strRange2 & CStr(LSearchRow)).Value = strData2 Then

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

     'Paste row into Sheet2 in next row
     Sheets("Test").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("AO").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

使用
。选择
是您的罪魁祸首。如果不选择其他图纸,则不必保存位置。有关
选择
不是一个好主意的原因,请参阅

整个代码块:

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

 'Paste row into Sheet2 in next row
 Sheets("Test").Select
 Rows(CStr(LCopyToRow) & ":" & CStr(LCopyToRow)).Select
 ActiveSheet.Paste
可以放在一条线上,不会失去你的位置

 'Copy from row LSearchrow to LCopyToRow in Test sheet
 Rows(CStr(LSearchRow) & ":" & CStr(LSearchRow)).Copy _
    Sheeets("Test").Rows(CStr(LCopyToRow) & ":" & CStr(LCopyToRow))
(为了便于阅读,分为两行)并且这不会更改工作表,因此在搜索时不会丢失您的位置

如果要创建新工作簿,则
工作簿.Add
将添加新工作簿。如果将新工作簿分配给变量,则可以使用与当前工作簿相同的命令对其进行操作

e、 g


您的实际问题是什么,您已经编写了哪些代码,执行了哪些故障排除步骤?
Dim NewWS As Workbook
Set NewWS = Workbooks.Add
NewWS.Sheets("Sheet1").Range("A1").Value = 3
NewWS.SaveAs "myFilename.csv", xlCSV
NewWS.Close