好的解释这个问题的最好方法是,我有一个每月制作的电子表格。它需要自动化。从发送到excel的报告中,我需要从项目编号列中获取所有数据并将其移动到另一个工作簿。在本工作手册中是2012年和2013年的工作表。我需要所有项目从300开始,然后是400,然后是500等,以进入新的工作簿,然后将2012年的项目分成一个工作表,2013年分成另一个。我将如何自动化这样的事情?
感谢您的帮助
300873 公司名称 10/09/2012
300874 公司名称 10/09/2012
412774 公司名称 30-01-12
412972 公司名称 23-05-12
412986 公司名称 17-07-12
413001 公司名称 08/06/13
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年的所有项目都能进入一个工作表而所有其他项目都将进入2013年的工作表中,我还需要300 ---项目进入电子表格并填充数字300下面的行,这可能包括添加行。
答案 0 :(得分:0)
你可以很容易地设计一个宏。我将为您提供一些工具,尝试一下,何时以及如果有什么东西回来,发布您的代码,并就此问题提出更多问题,我已经制作了,我我会帮助你学习代码,以便学习。
我需要从项目编号列中获取所有数据并将其移动到另一个工作簿。
首先,从宏打开文件的代码:
ChDir "[pathway to the folder]" 'loads file
Workbooks.Open Filename:= "[pathwayToFolder including filename]"
Workbooks("[workbook name]").Activate
其他有用的功能是能够专门引用不同的工作表和范围而无需实际选择或转到这些工作表。例如,此代码在特定工作簿,工作表和范围中编写特定内容,而无需访问它们
Workbooks("Book1").Sheets("Sheet1").Range("A5") = "Test"
第二,复制和粘贴:
此代码复制所有单元格并将它们全部粘贴到另一张纸上,您可以显然复制并粘贴更多特定范围(如果需要,可以谷歌)
Cells.Copy
Sheets("[sheetname]").Select
ActiveSheet.Range("A1").Select
ActiveSheet.Paste
第三,确定年份:
如果日期在“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
尝试将这些代码放在一起,然后回答这个问题。
此外,在将来尝试做一些研究并在此之前进行研究,问题实际上是多个问题而且非常广泛,使得很难回答。这就是有人贬低它的原因。
希望这有帮助!