如何获得具有特定string的Excel工作表的列,并将其写入新的Excel文件中

我有excel文件“file1”几张。 我感兴趣的只有一张工作表,“sheet1”有很多列,而我只对这张工作表中具有特定名称的几列感兴趣(excel工作表的第一行包含variables的名称)。我想find匹配(等于)一组特定string的列(例如10个variables名),并将它们与这些列中的所有行一起复制,然后将它们粘贴到一个新的excel文件“file2”中。 我也想用脚本自动生成第二个excel文件(这第二个excel文件只有一个表格)。

我开始为这个编写一些VBA脚本(我刚刚通过一些search学到了一些,所以我不熟悉VBA),但是我得到了一些错误。 我的第一个问题是做这个任务的最好的工具是什么,然后怎么做。 我感谢您的帮助。

这是我非常简单的代码,当我知道列号和#rows(但都改变,这就是为什么我想工作string)

Sub ExtractData() Filename = "OriginalFile" Workbooks(Filename).Sheets("sheet2").Range("K1:K206").Copy Range("A1:A206") Workbooks(Filename).Sheets("sheet2").Range("CF1:CF206").Copy Range("B1:B206") Workbooks(Filename).Sheets("sheet2").Range("BRG1:BRG206").Copy Range("C1:C206") Workbooks(Filename).Sheets("sheet2").Range("ESM1:ESN206").Copy Range("D1:E206") Workbooks(Filename).Sheets("sheet2").Range("EWY1:EWZ206").Copy Range("F1:G206") End Sub 

有时候,把所有东西都复制一下,去掉你不想要的东西比较容易。

 Option Explicit Sub makeCopy() Dim c As Long, cols As Variant cols = Array("date", "foo", "bar") ThisWorkbook.Worksheets("sheet1").Copy With ActiveWorkbook.Worksheets(1) For c = .Cells(1, .Columns.Count).End(xlToLeft).Column To 1 Step -1 If IsError(Application.Match(.Cells(1, c).Value2, cols, 0)) Then .Cells(1, c).EntireColumn.Delete End If Next c .Parent.SaveAs Filename:="newFoo", FileFormat:=xlOpenXMLWorkbook End With End Sub 

我可能会使用ODBC到Excel和LINQPad,但添加外部工具,你还没有使用似乎是矫枉过正。 如何使用从工作簿查询?