-1

好的,最好的解释方式是,我有一个每月生成的电子表格。它需要自动化。从发送到 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 下方,因此这可能包括添加行。

4

1 回答 1

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

尝试开始将这些代码组合在一起,然后就这个问题与我们联系。

另外,将来在提问之前尝试做一些研究和工作,这个问题实际上是多个问题并且非常广泛,很难回答。这就是为什么有人反对它。

希望这可以帮助!

于 2012-10-18T14:48:15.083 回答