Excel VBA将列表复制到新工作表

时间:2015-07-01 19:51:23

标签: excel vba excel-vba

我在Excel中有一个列表,其中包含人员的详细信息,其中包含城市,地址和姓名

我需要抓住City列并为每个城市创建一个工作表,然后将sheet1中的数据复制到该新工作表中。

因此,如果我有一个名为Dublin的城市,我需要宏来创建一个名为都柏林的新工作表,转到列表,抓住所有名为都柏林的城市,将它们复制并粘贴到都柏林工作表中(以及其他栏目当然)

我正在使用此链接的宏形式:mirabeau创建的http://www.mrexcel.com/forum/excel-questions/727407-visual-basic-applications-split-data-into-multiple-worksheets-based-column.html

代码如下:

@month_multipliers[month.to_sym]

以上内容可以为每个城市创建工作表,但不会将数据复制到新创建的工作表中。如何才能做到这一点?我对VBA的知识非常有限,我完全迷失了。

2 个答案:

答案 0 :(得分:0)

创建完所有工作表后,您只需搜索列表以搜索城市。对于每一行,请查看城市,并将其写入相应的表格中。工作表需要与我的代码工作的城市具有相同的名称。

我假设您是从A列第1行开始的。

dim strCity as string
dim strAdd as string
dim strName as string
for i = 1 to Sheets("[TableSheet]").Cells(Rows.Count, "A").End(xlUp).row
     strCity = Sheets("[TableSheet]").range("A" & i)
     strAdd = Sheets("[TableSheet]").range("B" & i)
     strName = Sheets("[TableSheet]").range("C" & i)

     Sheets(strCity).Range("A" & i) = strCity
     Sheets(strCity).Range("B" & i) = strAdd
     Sheets(strCity).Range("C" & i) = strName
next

[tableSheet]当然是带有您信息的工作表的名称。如果您不熟悉并有疑问我很乐意回答。

答案 1 :(得分:0)

谢谢你的快速回复。我在一个简单的列表上使用它,它工作正常。但是,我将它应用于稍微复杂的场景,并按如下方式编辑代码:



Dim strDB As String
Dim strName As String
Dim strDate As String
Dim strHour As String
Dim strMin As String
Dim strGR As String

For i = 1 To Sheets("[TableSheet]").Cells(Rows.Count, "B").End(xlUp).Row
     strDB = Sheets("[TableSheet]").Range("A" & i)
     strName = Sheets("[TableSheet]").Range("B" & i)
     strDate = Sheets("[TableSheet]").Range("C" & i)
     strHour = Sheets("[TableSheet]").Range("D" & i)
     strMin = Sheets("[TableSheet]").Range("E" & i)
     strGR = Sheets("[TableSheet]").Range("F" & i)

     Sheets(strName).Range("A" & i) = strDB
     Sheets(strName).Range("B" & i) = strName
     Sheets(strName).Range("C" & i) = strDate
     Sheets(strName).Range("D" & i) = strHour
     Sheets(strName).Range("E" & i) = strMin
     Sheets(strName).Range("F" & i) = strGR
Next




我需要按B列排序。每当我运行它时,我都会遇到运行时错误' 9'下标超出范围。我知道这意味着什么,但我无法找到我在代码中出错的地方。