Vba 根据一列中的信息移动数据,然后按另一列中的数据排序

Vba 根据一列中的信息移动数据,然后按另一列中的数据排序,vba,excel,automation,Vba,Excel,Automation,好的,最好的解释方法是,我有一个每月制作的电子表格。它需要自动化。从发送到excel的报告中,我需要从“项目编号”列中获取所有数据,并将其移动到另一个工作簿中。此工作簿中包含2012年和2013年的工作表。我需要从300、400、500等开始的所有项目进入新工作簿,然后2012年的项目进入一个工作表,2013年进入另一个工作表。我怎样才能使这样的事情自动化呢 谢谢你的帮助 300873公司名称2012年9月10日 300874公司名称2012年9月10日 412774公司名称30-01-12 4

好的,最好的解释方法是,我有一个每月制作的电子表格。它需要自动化。从发送到excel的报告中,我需要从“项目编号”列中获取所有数据,并将其移动到另一个工作簿中。此工作簿中包含2012年和2013年的工作表。我需要从300、400、500等开始的所有项目进入新工作簿,然后2012年的项目进入一个工作表,2013年进入另一个工作表。我怎样才能使这样的事情自动化呢

谢谢你的帮助

300873公司名称2012年9月10日
300874公司名称2012年9月10日
412774公司名称30-01-12
412972公司名称23-05-12
412986公司名称17-07-12
413001公司名称2013年6月8日
413048公司名称14-08-12
413049公司名称14-08-12
413062公司名称20-08-13
413068公司名称23-08-12
413169公司名称21-09-13
510003公司名称27-12-12
600161公司名称28-02-12


因此,有了这些,我希望2012年的所有项目都进入一个工作表,所有其他项目进入一个sperate工作簿中的2013年工作表,我还需要300---projects进入电子表格,填充数字300下面的行,这可能包括添加行。

您可以非常轻松地为此设计一个宏。我将给你一些工具来使用,尝试一下,如果你遇到什么问题,请回来,发布你的代码,并就你已经提出的问题提出更多问题,我将帮助你学习代码

我需要从“项目编号”列中获取所有数据,并将其移动到另一个工作簿中


首先,从宏打开文件的代码:

ChDir "[pathway to the folder]"       'loads file

Workbooks.Open Filename:= "[pathwayToFolder including filename]"

Workbooks("[workbook name]").Activate
另一个有用的功能是能够专门引用不同的工作表和范围,而无需实际选择或转到这些工作表。例如,这段代码在特定的工作簿、工作表和范围中写入特定的内容,而不必访问它们

Workbooks("Book1").Sheets("Sheet1").Range("A5") = "Test"

第二,复制和粘贴:

ChDir "[pathway to the folder]"       'loads file

Workbooks.Open Filename:= "[pathwayToFolder including filename]"

Workbooks("[workbook name]").Activate
这段代码复制所有单元格并将它们粘贴到另一张纸上,显然,您可以复制并粘贴更具体的区域(如果需要,可以用谷歌搜索)


第三,确定年份:

ChDir "[pathway to the folder]"       'loads file

Workbooks.Open Filename:= "[pathwayToFolder including filename]"

Workbooks("[workbook name]").Activate
如果日期在“C”栏中,我就这样做

Dim i As Integer, rowNumber As Integer
i = 1         'whatever row your data begins on
rowNumber = ActiveSheet.UsedRange.Rows.Count      'gets used number of rows

Do              'Loops through all data on the sheet

   If Right(Range("C" & i), 2) = "12" Then    'checks the last 2 characters in date column

      'copy data from that row and paste it wherever applicable   

   ElseIf Right(Range("C" & i), 2) = "13" Then  'checks for 2013

      'move 2013 data wherever applicable

   End If

   i = i + 1
Loop Until i = rowNumber

试着把这些代码组合成一些东西,然后就这个问题回复我们

另外,在今后的提问之前,试着做一些研究和工作,这个问题实际上是多个问题,非常广泛,很难回答。这就是为什么有人否决了它

希望这有帮助